Circle CIでAndroid SDK周りのライセンス許諾をローカル環境に合わせる
Circle CIの公式ドキュメントのTest Android Applications - CircleCIにある通りAndroid SDKをCircle CIでダウンロードするには次のようにcircle.ymlに記述する必要がある。
dependencies:
pre:
- echo y | android update sdk --no-ui --all --filter "package-name"
この記述の場合package-nameが可変なため、新しいSDKが出た時に変わることがありCIがコケる。
新しい名前をパッと調べる方法がよくわからないので大体はまる。つらい。
CI環境でAndroid SDKのダウンロードを自動化する2016 - Qiitaにローカル環境で行ったライセンス許諾のライセンスファイルを使う方法が書かれていて、最高だったのでCircle CIにも適用した。
ライセンスファイルの中身をコピーする
ライセンスファイルの中身はハッシュ値になっている。ファイルは次の場所にある。
$ANDROID_HOME/licenses/android-sdk-license
circle.ymlに設定
ライセンスファイルから取り出した値をcircle.ymlに設定する。 ディレクトリを作ってechoでライセンスファイルを作ればOK。
dependencies:
pre:
# 省略
- mkdir $ANDROID_HOME/licenses
- echo "ここにライセンスファイルの値" >> $ANDROID_HOME/licenses/android-sdk-license
これでローカル環境で許諾したものと同様のSDKを自動的にインストールできるようになる。