Android Projectの詳細を取得する

buildフォルダを探索して依存ライブラリやクラス一覧を取得するコードを書いていたのですがbuildVariants周りがややこしいためAndroid Projectの構造を取得するためのサンプルコードを書きました。

Android Projectの構造はbuilder-mode-2.1.2.jarの中にあるAndroidProjectが保持しています。
GradleConnectorAndriodProjectクラスを指定するとビルド生成物の出力先や依存ライブラリやsigningConfigなどのbuild.gradleに書かれている情報が取得できます。

詳しくはandroid-project-connect-exampleAndroidGradleConnectorSpec.scalaを参照してください。

CircleCIを使ってAndroidのテストを実行する

プライベートなリポジトリはdroneioでコンテナ作ってビルドから通知までやっていました。
GitHubのリポジトリは折角なのでCircleCIで回すことにしました。
その時に罠があったので紹介します。

cache_directoriesの罠

以下のように記載してました。

dependencies:
  cache_directories:
    - $ANDROID_HOME/platforms/android-23
    - $ANDROID_HOME/build-tools/23.0.1
    - $ANDROID_HOME/extras/android
    - $ANDROID_HOME/extras/google

$ANDROID_HOME/usr/local/android-sdk-linuxと展開されると期待したら、以下のようなwaringが出ていました。

Warning: circle.yml specified cache directories: /home/ubuntu/android-ci/$ANDROID_HOME/build-tools/23.0.1, /home/ubuntu/android-ci/$ANDROID_HOME/extras/google, /home/ubuntu/android-ci/$ANDROID_HOME/platforms/android-23, /home/ubuntu/android-ci/$ANDROID_HOME/extras/android but they don't exist

/から始まるものでないと絶対パスとして扱われない…?罠過ぎる。
変数展開を期待してダブルクォーテーションで囲ってみたが相対パス扱いのままだったのでベタ書きすることにしました。

またandroid list sdk -u -a -eでupdate sdkに使うパッケージ名を出すことができます。

GitHub android-ci

参考