JenkinsでAndroidSdkManagerを使う

android

Android11の正式リリースが近づいてくる今日このごろ、Jenkinsなどのビルド環境も整備しておかないといざリリースしようと思ってもマゴついてしまうことがある。
AndroidのSdkManagerをダウンロードしてandroid11のplatform-toolsをインストールした時の記録を残す。

余談)
下記のようなコマンドを使ってインストールしていると古いツールを使っているので、sdkmanagerを使うようにした。android11のプラットフォームが候補に出てこなかった。Rは出てきたんだが、、

./tools/android list sdk -a -e
SDK Tools リリースノート  |  Android デベロッパー  |  Android Developers
Android SDK の Android SDK Tools コンポーネントについて学習します。

ダウンロード

以下Android Studioの公式ダウンロードページのCommand line tools onlyのところからダウンロードできる。IDEのAndroid Studioをダウンロードすれば、こちらもついてくるがIDE無しのJenkinsなどの環境用にこちらが特設されているのだと思う。
https://developer.android.com/studio#cmdline-tools

CI環境ではコマンドラインからダウンロードすると思うので以下curlコマンド

$ sudo curl -o commandlinetools https://dl.google.com/android/repository/commandlinetools-linux-6609375_latest.zip

zipを解凍する

$ unzip commandlinetools

使用コマンド

インストール可能なパッケージをリストアップ

sdkmanagerというコマンドラインツールでいろいろAndroidのSDKをインストールできる。
https://developer.android.com/studio/command-line/sdkmanager?hl=ja
Android StudioのIDEからならTools -> SdkManagerから使えるものと同じということ。

解凍したら以下のコマンドでインストールできるplatformを羅列できる。

$ tools/bin/sdkmanager --list --sdk_root=/var/lib/android-sdk

–sdk_rootにSDKのディレクトリをフルパスで指定すること。
始めての場合でも、これからSDKをインストールする空のディレクトリを指定しておくとそこにインストールできる。

環境変数ANDROID_SDK_ROOT(旧ANDROID_HOME)をこのAndroidSDKのディレクトリに指定しておくとgradlewでSDKを参照してビルドしてくれるっぽい。
https://developer.android.com/studio/command-line/variables?hl=ja

以下のような感じでインストールできるパッケージが羅列される(抜粋)。

Available Packages:
  Path                      | Version      | Description                                                         
  -------                   | -------      | -------         
  platform-tools            | 30.0.4       | Android SDK Platform-Tools
  platforms;android-30      | 3            | Android SDK Platform 30

build.gradleに指定するtargetSdkVersionとかcompileSdkVersionと必要なパッケージが対応している。
compileSdkVersionを30 (Android11) にした場合は platforms;android-30が必要っぽい。
こちらがインストールされていないと、ビルド時に以下のようなエラーがでる。

* What went wrong:
A problem occurred configuring project ':app'.
> Failed to install the following Android SDK packages as some licences have not been accepted.
     platforms;android-30 Android SDK Platform 30
  To build this project, accept the SDK license agreements and install the missing components using the Android Studio SDK Manager.
  Alternatively, to transfer the license agreements from one workstation to another, see http://d.android.com/r/studio-ui/export-licenses.html

インストール

$ tools/bin/sdkmanager "platform-tools" --sdk_root=/var/lib/android-sdk
$ tools/bin/sdkmanager "platforms;android-30" --sdk_root=/var/lib/android-sdk

Accept? (y/N): と出るので利用規約を呼んでyを押すとインストールできる。

Comments

タイトルとURLをコピーしました