|
| 1 | +FROM library/ubuntu:16.04 |
| 2 | + |
| 3 | +LABEL Description="This image provides a base Android development environment for React Native, and may be used to run tests." |
| 4 | +LABEL maintainer= "Héctor Ramos <[email protected]>" |
| 5 | + |
| 6 | +# set default build arguments |
| 7 | +ARG SDK_VERSION=sdk-tools-linux-3859397.zip |
| 8 | +ARG ANDROID_BUILD_VERSION=27 |
| 9 | +ARG ANDROID_TOOLS_VERSION=27.0.3 |
| 10 | +ARG BUCK_VERSION=v2018.10.29.01 |
| 11 | +ARG NDK_VERSION=17c |
| 12 | +ARG NODE_VERSION=8.10.0 |
| 13 | +ARG WATCHMAN_VERSION=4.9.0 |
| 14 | + |
| 15 | +# set default environment variables |
| 16 | +ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 |
| 17 | +ENV ADB_INSTALL_TIMEOUT=10 |
| 18 | +ENV PATH=${PATH}:/opt/buck/bin/ |
| 19 | +ENV ANDROID_HOME=/opt/android |
| 20 | +ENV ANDROID_SDK_HOME=${ANDROID_HOME} |
| 21 | +ENV PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/tools/bin:${ANDROID_HOME}/platform-tools |
| 22 | +ENV ANDROID_NDK=/opt/ndk/android-ndk-r$NDK_VERSION |
| 23 | +ENV PATH=${PATH}:${ANDROID_NDK} |
| 24 | + |
| 25 | +# install system dependencies |
| 26 | +RUN apt-get update && apt-get install ant autoconf automake curl g++ gcc git libqt5widgets5 lib32z1 lib32stdc++6 make maven npm openjdk-8* python-dev python3-dev qml-module-qtquick-controls qtdeclarative5-dev unzip -y |
| 27 | + |
| 28 | +# configure npm |
| 29 | +RUN npm config set spin=false && \ |
| 30 | + npm config set progress=false |
| 31 | + |
| 32 | +# install node |
| 33 | +RUN npm install n -g |
| 34 | +RUN n $NODE_VERSION |
| 35 | + |
| 36 | +# download buck |
| 37 | +RUN git clone https://github.com/facebook/buck.git /opt/buck --branch $BUCK_VERSION --depth=1 |
| 38 | +WORKDIR /opt/buck |
| 39 | + |
| 40 | +# build buck |
| 41 | +RUN ant |
| 42 | + |
| 43 | +# Full reference at https://dl.google.com/android/repository/repository2-1.xml |
| 44 | +# download and unpack android |
| 45 | +RUN mkdir /opt/android && \ |
| 46 | + cd /opt/android && \ |
| 47 | + curl --silent https://dl.google.com/android/repository/${SDK_VERSION} > android.zip && \ |
| 48 | + unzip android.zip && \ |
| 49 | + rm android.zip |
| 50 | + |
| 51 | +# download and unpack NDK |
| 52 | +RUN mkdir /opt/ndk && \ |
| 53 | + cd /opt/ndk && \ |
| 54 | + curl --silent https://dl.google.com/android/repository/android-ndk-r$NDK_VERSION-linux-x86_64.zip > ndk.zip && \ |
| 55 | + unzip ndk.zip && \ |
| 56 | + rm ndk.zip |
| 57 | + |
| 58 | +# Add android SDK tools |
| 59 | +RUN yes | sdkmanager --licenses && sdkmanager --update |
| 60 | +RUN sdkmanager "system-images;android-19;google_apis;armeabi-v7a" \ |
| 61 | + "platform-tools" \ |
| 62 | + "platforms;android-$ANDROID_BUILD_VERSION" \ |
| 63 | + "build-tools;$ANDROID_TOOLS_VERSION" \ |
| 64 | + "add-ons;addon-google_apis-google-23" \ |
| 65 | + "extras;android;m2repository" |
| 66 | + |
| 67 | +# clean up unnecessary directories |
| 68 | +RUN rm -rf /opt/android/.android |
0 commit comments