FROM ubuntu:22.04

LABEL maintainer="Updated for modern Android SDK"

# Set up insecure default key
COPY adbkey adbkey.pub adb_usb.ini /root/.android/

ENV ANDROID_SDK_ROOT=/opt/android-sdk \
    ANDROID_HOME=/opt/android-sdk \
    LANG=en_US.UTF-8 \
    LANGUAGE=en_US:en \
    LC_ALL=en_US.UTF-8 \
    PATH="$PATH:/opt/android-sdk/cmdline-tools/latest/bin:/opt/android-sdk/platform-tools:/opt/android-sdk/emulator"

# Use specific cmdline-tools version
ENV CMDLINE_TOOLS_URL=https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip

RUN dpkg --add-architecture i386 && \
    apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get install -yq \
        software-properties-common \
        libstdc++6:i386 \
        zlib1g:i386 \
        libncurses5:i386 \
        locales \
        ca-certificates \
        apt-transport-https \
        curl \
        unzip \
        redir \
        iproute2 \
        openjdk-17-jdk-headless \
        xvfb \
        x11vnc \
        fluxbox \
        libpulse0 \
        telnet \
        expect \
        qemu-utils \
        libglu1-mesa \
        libnss3 \
        libxcomposite1 \
        libxcursor1 \
        libxi6 \
        libxtst6 \
        libasound2 \
        --no-install-recommends && \
    locale-gen en_US.UTF-8 && \
    # Install Android SDK cmdline-tools
    mkdir -p /opt/android-sdk/cmdline-tools && \
    curl -L $CMDLINE_TOOLS_URL -o /tmp/cmdline-tools.zip && \
    unzip -q /tmp/cmdline-tools.zip -d /tmp && \
    mv /tmp/cmdline-tools /opt/android-sdk/cmdline-tools/latest && \
    rm /tmp/cmdline-tools.zip && \
    # Accept licenses
    yes | sdkmanager --licenses && \
    # Install emulator, platform-tools, and specific platform
    sdkmanager "emulator" "platform-tools" "platforms;{{ platform }}" "system-images;{{ platform }};google_apis;x86_64" --verbose && \
    # Create AVD
    echo no | avdmanager create avd -n "x86_64" --package "system-images;{{ platform }};google_apis;x86_64" --tag google_apis --device "pixel_2" && \
    # Clean up
    apt-get -yq autoremove && \
    apt-get clean && \
    apt-get autoclean && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

COPY config.ini /root/.android/avd/x86_64.avd/config.ini

# Expose adb and emulator ports
EXPOSE 5037 5554 5555 5900

# Add start script
COPY start.sh /start.sh
RUN chmod +x /start.sh
CMD ["/start.sh"]
