visible true

技術的なメモを書く

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を自動的にインストールできるようになる。