この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
まえがき
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