Androidビルド用Dockerfile
まえがき
CIなどでAndroidのビルド環境を構築する際、 作ること自体は簡単ですが、Android SDKの更新などメンテナスが大変だと思います。 DockerでAndroid SDKを含むimageをDocker Hubなどにあげるとライセンス違反となってしまうため、その都度いちいち実行時、更新コマンドをしなければならず、ビルド時間が長くなっていました。
android update sdk --no-ui --all --filter "android-23,build-tools-23.0.3"
Jake神のおかげで、とても簡単になりました。 Android SDKのライセンス同意時にライセンスのハッシュが作られます。 そのハッシュ値をCIなどにもコピーしてあげれば、 アプリをビルド時に同意時したときと同じライブラリ等が自動でインストールされるようになりました。
ライセンスが作られる場所
$ANDROID_HOME/licenses/android-sdk-license
こんな感じのDockerfileを作ります。
あとは、プロジェクトルートで、ビルドを実行するだけです。
./gradlew assemble
DockerFile
こんな感じのディレクトリ構成にします。
$ ls rbenv:system Dockerfile android-sdk-license
FROM ubuntu:16.04 MAINTAINER kamei.hidetoshi <kamei.hidetoshi@classmethod.jp> # Install sudo RUN apt-get update \ && apt-get -y install sudo \ && useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo # Install 32bit lib RUN sudo apt-get -y install lib32stdc++6 lib32z1 # Install Java8 RUN apt-get install -y software-properties-common curl \ && add-apt-repository -y ppa:openjdk-r/ppa \ && apt-get update \ && apt-get install -y openjdk-8-jdk # Download Android SDK RUN sudo apt-get -y install wget \ && cd /usr/local \ && wget http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz \ && tar zxvf android-sdk_r24.4.1-linux.tgz \ && rm -rf /usr/local/android-sdk_r24.4.1-linux.tgz # Environment variables ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64 ENV ANDROID_HOME /usr/local/android-sdk-linux ENV PATH $ANDROID_HOME/platform-tools:$ANDROID_HOME/tools:$PATH # ライセンスをADDする Add android-sdk-license $ANDROID_HOME/licenses/ ENV TERM dumb