DockerでAndroidの環境を構築する
Androidでテストを同時並行に実行したいなーと思っていたので作ってみた。
Javaのインストール
こちらからコードを拝借。ただ、add-aptがデフォルトではUbuntuに入っていないのでatp-getでインストールする
# For add-apt-repositor in order to install Java RUN apt-get install -y software-properties-common # Install Java RUN \ echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \ add-apt-repository -y ppa:webupd8team/java && \ apt-get update && \ apt-get install -y oracle-java8-installer && \ rm -rf /var/lib/apt/lists/* && \ rm -rf /var/cache/oracle-jdk8-installer # Define commonly used JAVA_HOME variable ENV JAVA_HOME /usr/lib/jvm/java-8-oracle
Android SDKのインストール
Android SDKはGoogleのページにあるので、ダウンロードしてくればよい。問題はtoolsなどのインストールで、インストールの最中度々承認を求められる。今回はexpcetコマンドを使って、特定の文が来たらそれに対してキーを送るようにしてスキップしている。
あとうまくいかなかった点としては、32bit互換性のためにライブラリをインストールすることと、toolsのアップデート中にtmpフォルダへのコピーが失敗してインストールが失敗するということがあった。
前者はapt-getでlib32stdc++6をインストールする。 後者は、toolsを一旦別フォルダに退避し、退避したtoolsのandroidコマンドを使ってtoolsのアップデートを行う。
ADD expect-android-update.sh . RUN chmod +x expect-android-update.sh RUN apt-get install -y wget RUN apt-get update RUN apt-get -y install expect RUN apt-get -y install lib32stdc++6 RUN wget http://dl.google.com/android/android-sdk_r24.2-linux.tgz && \ mv android-sdk_r24.2-linux.tgz /opt && \ cd /opt && \ tar zxvf android-sdk_r24.2-linux.tgz && \ rm android-sdk_r24.2-linux.tgz && \ cd android-sdk-linux && \ cp -a tools copy-tools && \ /expect-android-update.sh platform-tools && \ ./platform-tools/adb kill-server && \ rm -rf temp/ && \ /expect-android-update.sh tools && \ /expect-android-update.sh build-tools-22.0.1,android-18,android-19,android-21,android-22,sys-img-armeabi-v7a-android-22,sys-img-armeabi-v7a-android-21,sys-img-armeabi-v7a-android-19,sys-img-armeabi-v7a-android-18 ENV ANDROID_SDK_HOME /opt/android-sdk-linux ENV ANDROID_HOME /opt/android-sdk-linux ENV PATH $PATH:/opt/android-sdk-linux/platform-tools:/opt/android-sdk-linux/tools