FROM ubuntu:20.04

LABEL Description="This image provides a base Android development environment for React Native, and may be used to run tests."

ENV DEBIAN_FRONTEND=noninteractive

# set default build arguments
# https://developer.android.com/studio#command-tools
ARG SDK_VERSION=commandlinetools-linux-9477386_latest.zip
ARG ANDROID_BUILD_VERSION=34
ARG ANDROID_TOOLS_VERSION=34.0.0
ARG NDK_VERSION=25.1.8937393
ARG NODE_VERSION=20
ARG WATCHMAN_VERSION=4.9.0
ARG CMAKE_VERSION=3.22.1

# set default environment variables, please don't remove old env for compatibilty issue
ENV ADB_INSTALL_TIMEOUT=10
ENV ANDROID_HOME=/opt/android
ENV ANDROID_SDK_ROOT=${ANDROID_HOME}
ENV ANDROID_NDK_HOME=${ANDROID_HOME}/ndk/$NDK_VERSION

ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
ENV CMAKE_BIN_PATH=${ANDROID_HOME}/cmake/$CMAKE_VERSION/bin

ENV PATH=${CMAKE_BIN_PATH}:${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/emulator:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/tools:${ANDROID_HOME}/tools/bin:${PATH}

# Install system dependencies
RUN apt update -qq

RUN apt install -qq -y --no-install-recommends \
    apt-transport-https \
    curl \
    file \
    gcc \
    git \
    g++ \
    gnupg2 \
    libc++1-10 \
    libgl1 \
    libtcmalloc-minimal4 \
    make \
    openjdk-17-jdk-headless \
    openssh-client \
    patch \
    python3 \
    python3-distutils \
    rsync \
    ruby \
    ruby-dev \
    tzdata \
    unzip \
    sudo \
    ninja-build \
    zip \
    # Dev libraries requested by Hermes
    libicu-dev \
    # Dev dependencies required by linters
    jq \
    shellcheck

#RUN gem install bundler;
RUN rm -rf /var/lib/apt/lists/*;

# install nodejs using n
RUN curl -L https://raw.githubusercontent.com/tj/n/master/bin/n -o n \
    && bash n $NODE_VERSION \
    && rm n \
    && npm install -g n \
    && npm install -g yarn

# Full reference at https://dl.google.com/android/repository/repository2-1.xml
# download and unpack android
RUN curl -sS https://dl.google.com/android/repository/${SDK_VERSION} -o /tmp/sdk.zip \
    && mkdir -p ${ANDROID_HOME}/cmdline-tools \
    && unzip -q -d ${ANDROID_HOME}/cmdline-tools /tmp/sdk.zip \
    && mv ${ANDROID_HOME}/cmdline-tools/cmdline-tools ${ANDROID_HOME}/cmdline-tools/latest \
    && rm /tmp/sdk.zip \
    && yes | sdkmanager --licenses \
    && yes | sdkmanager "platform-tools" \
    "platforms;android-$ANDROID_BUILD_VERSION" \
    "build-tools;$ANDROID_TOOLS_VERSION" \
    "cmake;$CMAKE_VERSION" \
    "ndk;$NDK_VERSION" \
    && rm -rf ${ANDROID_HOME}/.android \
    && chmod 777 -R /opt/android




#GRADLE
ARG GRADLE_VERSION=8.4
RUN curl -L https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip -o /tmp/gradle-${GRADLE_VERSION}.zip \
    && unzip -d /opt/gradle /tmp/gradle-${GRADLE_VERSION}.zip

ENV GRADLE_HOME=/opt/gradle/gradle-${GRADLE_VERSION}
ENV PATH=${GRADLE_HOME}/bin:${PATH}



CMD ["sleep", "infinity"]


#RUN curl -L https://services.gradle.org/distributions/gradle-8.4-bin.zip -o /tmp/gradle-8.4.zip
#RUN unzip -d /opt/gradle /tmp/gradle-8.4.zip
#GRADLE_HOME=/opt/gradle/gradle-8.4
#RUN PATH=/opt/gradle/gradle-8.4/bin:${PATH}
