KonifarPod

CircleCIでAndroidテストを行う方法

   

Pocket

お手軽なCIツールのCircleCIとGithubを連携して、ビルドする方法です。基本的なGithubとの連携は公式ドキュメントを参照していただくとして、今回はAndroidのコードをgithubにpushしたらCircleCIでビルドする、というところを書いておきます。

 

CircleCIは、プロジェクトルートのcircle.ymlを参照して動作します。Androidでも同様で、ルートにcircle.ymlを作ります。このあたりは公式ドキュメントにも書いてあります。ただ、このcircle.ymlの中身を記述するのがちょっと面倒で、必要なAndroidSDKやビルドツールのインストールをちゃんと書いてあげないと動きません。supportライブラリを使っている場合も別途色々書かなければいけなくて、色々ハマった結果こんな感じになりました。

 

machine:
  environment:
    ANDROID_HOME: /usr/local/android-sdk-linux

dependencies:
  pre:
    - echo y | android update sdk --no-ui --all --filter "platform-tools,tools"
    - echo y | android update sdk --no-ui --all --filter "android-19,build-tools-19.1.0"
    - echo y | android update sdk --no-ui --all --filter "extra-android-m2repository"
    - echo y | android update sdk --no-ui --all --filter "extra-android-support"
    - echo y | android update sdk --no-ui --all --filter "extra-google-m2repository"
    - echo y | android update sdk --no-ui --all --filter "extra-google-google_play_services"
    - echo y | android update sdk --no-ui --all --filter "addon-google_apis-google-19"
    - echo y | android update lib-project --path ./appcompat --target android-19
    - echo y | android update project --path ./core --library ../appcompat --target android-19

  cache_directories:
    - ~/.android
  override:
    - ./gradlew dependencies

 

dependencies > preの中でやっている下準備が重要です。ハマった時のエラーメッセージを全部はメモできていないのですが、ざっくり説明するとこんな感じです。

 

  pre:
    # toolsをアップデート
    - echo y | android update sdk --no-ui --all --filter "platform-tools,tools"

    # SDKとビルドツールのインストール。適宜バージョンを置き換えてください。
    - echo y | android update sdk --no-ui --all --filter "android-19,build-tools-19.1.0"

    # supportライブラリをインストールするために必要です。これがないと下記のエラーが出ました。
    # ① projectsCould not resolve com.android.support:support-v4:20.0.+.
    # ② projectsCould not GET 'http://maven.aviary.com/repo/release/com/android/support/support-v4/'. Received status code 403 from server: Forbidden
    - echo y | android update sdk --no-ui --all --filter "extra-android-m2repository"
    - echo y | android update sdk --no-ui --all --filter "extra-android-support"

    # GCM等、GooglePlayServicesを使っている場合に必要です。
    - echo y | android update sdk --no-ui --all --filter "extra-google-m2repository"
    - echo y | android update sdk --no-ui --all --filter "extra-google-google_play_services"

    # GoogleMap等を使っている場合に必要です。
    - echo y | android update sdk --no-ui --all --filter "addon-google_apis-google-19"

    # appcompat-v7以降を使っている場合に必要です。これがないと下記のエラーが出ました。
    # projectsCould not GET 'http://maven.aviary.com/repo/release/com/android/support/appcompat-v7/'. Received status code 403 from server: Forbidden
    - echo y | android update lib-project --path ./appcompat --target android-19
    - echo y | android update project --path ./core --library ../appcompat --target android-19

 

testも一応走るのですが、Robolectricがうまく動かないので調査中です。。。

以上!

Pocket

 - Develop ,