この記事では、Travis CIでオープンソースのAndroidプロジェクト(Maven)を無料でビルドする方法を紹介したいと思います。
何がありますか?
- GitHubのオープンソースAndroidプロジェクト
- プロジェクトはMavenによって組み立てられる必要があります
- Travis CIのアカウント
何を取得したいですか?
進捗レポートをメールで送信して、コミット時にプロジェクトを無料で組み立てます。 同時に、エミュレーターで統合テストを実行し、追加のSDKコンポーネント(アドオン、エクストラなど)を使用します。
これをどのように達成しますか?
基礎として、GitHubで既製のスクリプト(
https://github.com/serso/android-common)を使用します 。
Travis CIがビルドに使用するメインスクリプトは.travis.ymlです。
language: java jdk: oraclejdk7 before_install: - chmod +x $PWD/.travis_install_android.sh - $PWD/.travis_install_android.sh - export ANDROID_HOME=$PWD/android-sdk-linux - export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools - chmod +x $PWD/.travis_install_android_dependencies.sh - $PWD/.travis_install_android_dependencies.sh - chmod +x $PWD/.travis_start_emulator.sh - $PWD/.travis_start_emulator.sh before_script: - chmod +x $PWD/.travis_wait_for_emulator.sh - $PWD/.travis_wait_for_emulator.sh script: mvn install -Pwith-tests
プロジェクトの基本言語-Java、次にjdkバージョンを示します-私はOracleのJDK 7を使用します。
ビルドを開始する前に、Android SDKとそのコンポーネント(API、エクストラ、アドオンなど)をインストールする必要があります。 bashスクリプトの
.travis_install_android.shと
.travis_install_android_sdk.shがこれを担当します。 次に、いくつかのAndroidアーティファクトをローカルのMavenリポジトリ
-.travis_install_android_dependencies.shスクリプトにアップロードし、エミュレーター
-.travis_start_emulator.shを実行して、
.travis_wait_for_emulator.shが開始されるのを待つ
必要があります。
Androidのインストール
#!/bin/sh # Script installs Android SDK sudo apt-get update -qq if [ `uname -m` = x86_64 ]; then sudo apt-get install -qq libstdc++6:i386 lib32z1; fi wget -O android-sdk.tgz http://dl.google.com/android/android-sdk_r22.0.4-linux.tgz tar xzf android-sdk.tgz export ANDROID_HOME=$PWD/android-sdk-linux export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools sudo apt-get install expect chmod +x $PWD/.travis_install_android_sdk.sh $PWD/.travis_install_android_sdk.sh
説明:64ビットアーキテクチャの場合、アプリケーションのリストを更新します-追加のパッケージをインストールします(
ここの説明を
参照 )。 次に、ポンプを使用してAndroid SDKを解凍し、環境変数を設定します(bashスクリプトの環境変数は実行後にリセットされるため、.travis.ymlで再度設定する必要があります)。
Android SDKコンポーネントをインストールする
説明:必要なSDKコンポーネントをインストールしようとしています。 ここにちょっとしたトリックがあります-android update sdkは、いくつかのコンポーネントのライセンスに同意することを提案します。 応答できなくなり(スクリプトはリモートで実行されます)、spawnコマンド(このスクリプトを呼び出す前に慎重にインストールされたコマンド)を使用して自動的に応答する必要があります。
なんらかの理由で、アンドロイドはadmobコンポーネントとplay_licensingコンポーネントを別々に収縮させます。 これらを最初の更新に追加すると、PkgVersion = 2.0.0の代わりにPkgVersion = 2になりますが、これはあまり適していません(この変数はMavenリポジトリ内のアーティファクトのバージョンを担当しているため)。
Mavenリポジトリーに成果物をインストールする
説明:api-19タグを使用して
Maven Android SK Deployerフォークをダウンロードし、Androidバージョン4.2用のアセンブリを実行します(4.4ではまだテストしていません)。 オリジナルの代わりにフォークをポンプするのはなぜですか? オリジナルにはタグがないため、プロジェクトコードに変更を加えるとアセンブリが壊れる場合があります。
エミュレーターの起動
説明:Defaultという名前の仮想デバイスを作成し、別のプロセスで実行します。
次に、Travisはプロジェクトのテストインストールを開始します。テストインストールの最後にbefore_scriptフェーズが呼び出され、エミュレータの開始を待ちます。
組立
最後のコードは、アセンブリの起動です。 私の場合、with-testsプロファイルを使用してmvn installを呼び出すだけで、統合テストが実行されます。
script: mvn install -Pwith-tests
おわりに
プロジェクトが正常に構成された後、各コミットによりアセンブリが起動され、その後メールに通知されます。 例として、
Travis CIで動作するアセンブリを含む
Android Common Libraryプロジェクトを見ることができます。
質問や提案がある場合-コメントを歓迎します。 ご清聴ありがとうございました。