2018-05-10 06:26:39 +00:00
# React Native Base Android Development Environment
#
# This image provides a base Android development environment for React Native,
# including, but not limited to, the Android SDK, Android NDK, Node, and BUCK.
# These are required in order to run React Native's Android unit and integration
# tests.
#
# This image is not currently built automatically as part of React Native's CI
# infrastructure. It should not be necessary to rebuild this image while the
# Android dependencies (Android SDK version, build tools version, etc) remain
# equal. The operations performed to build this image are those that tend to
# remain stable across commits in any given React Native release.
2017-02-24 18:48:10 +00:00
FROM library/ubuntu:16.04
2018-05-10 06:26:39 +00:00
LABEL Description = "This image provides a base Android development environment for React Native, and may be used to run tests." maintainer "Héctor Ramos <hector@fb.com>"
2017-02-24 18:48:10 +00:00
# set default build arguments
2017-12-22 01:19:52 +00:00
ARG ANDROID_TOOLS_VERSION = 25 .2.5
2018-03-29 18:29:09 +00:00
ARG BUCK_VERSION = v2018.02.16.01
2017-02-24 18:48:10 +00:00
ARG NDK_VERSION = 10e
2018-03-29 18:29:09 +00:00
ARG NODE_VERSION = 8 .10.0
ARG WATCHMAN_VERSION = 4 .9.0
2017-02-24 18:48:10 +00:00
# set default environment variables
ENV ADB_INSTALL_TIMEOUT = 10
ENV PATH = ${ PATH } :/opt/buck/bin/
ENV ANDROID_HOME = /opt/android
ENV ANDROID_SDK_HOME = ${ ANDROID_HOME }
2017-12-22 01:19:52 +00:00
ENV PATH = ${ PATH } :${ ANDROID_HOME } /tools:${ ANDROID_HOME } /tools/bin:${ ANDROID_HOME } /platform-tools
2017-02-24 18:48:10 +00:00
ENV ANDROID_NDK = /opt/ndk/android-ndk-r$NDK_VERSION
ENV PATH = ${ PATH } :${ ANDROID_NDK }
# install system dependencies
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
# configure npm
RUN npm config set spin = false
RUN npm config set progress = false
# install node
RUN npm install n -g
RUN n $NODE_VERSION
# download buck
2017-12-22 01:19:52 +00:00
RUN git clone https://github.com/facebook/buck.git /opt/buck --branch $BUCK_VERSION --depth= 1
2017-02-24 18:48:10 +00:00
WORKDIR /opt/buck
# build buck
RUN ant
2017-12-22 01:19:52 +00:00
# Full reference at https://dl.google.com/android/repository/repository2-1.xml
2017-02-24 18:48:10 +00:00
# download and unpack android
RUN mkdir /opt/android
WORKDIR /opt/android
2017-12-22 01:19:52 +00:00
RUN curl --silent https://dl.google.com/android/repository/tools_r$ANDROID_TOOLS_VERSION -linux.zip > android.zip
2017-02-24 18:48:10 +00:00
RUN unzip android.zip
RUN rm android.zip
# download and unpack NDK
RUN mkdir /opt/ndk
WORKDIR /opt/ndk
RUN curl --silent https://dl.google.com/android/repository/android-ndk-r$NDK_VERSION -linux-x86_64.zip > ndk.zip
RUN unzip ndk.zip
# cleanup NDK
RUN rm ndk.zip
2017-03-30 00:54:11 +00:00
# Add android SDK tools
2017-12-22 01:19:52 +00:00
RUN echo "y" | sdkmanager "system-images;android-19;google_apis;armeabi-v7a"
RUN echo "y" | sdkmanager "platforms;android-23"
RUN echo "y" | sdkmanager "platforms;android-19"
RUN echo "y" | sdkmanager "build-tools;23.0.1"
RUN echo "y" | sdkmanager "add-ons;addon-google_apis-google-23"
RUN echo "y" | sdkmanager "extras;android;m2repository"
2017-03-30 00:54:11 +00:00
# Link adb executable
2017-02-24 18:48:10 +00:00
RUN ln -s /opt/android/platform-tools/adb /usr/bin/adb
# clean up unnecessary directories
RUN rm -rf /opt/android/system-images/android-19/default/x86