# ===----------------------------------------------------------------------===##
#
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#
# ===----------------------------------------------------------------------===##
FROM ubuntu:jammy
RUN apt-get update && apt-get install -y \
curl \
netcat-openbsd \
openjdk-11-jdk \
sudo \
unzip \
&& rm -rf /var/lib/apt/lists/*
ENV ANDROID_HOME=/opt/android/sdk
RUN curl -sL https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip -o cmdline-tools.zip && \
mkdir -p ${ANDROID_HOME} && \
unzip cmdline-tools.zip -d ${ANDROID_HOME}/cmdline-tools && \
mv ${ANDROID_HOME}/cmdline-tools/cmdline-tools ${ANDROID_HOME}/cmdline-tools/latest && \
rm cmdline-tools.zip
ENV PATH="${ANDROID_HOME}/cmdline-tools/latest/bin:${PATH}"
RUN yes | sdkmanager --licenses
RUN sdkmanager --install emulator
ENV PATH="${ANDROID_HOME}/emulator:${PATH}"
ARG API # e.g. 21
RUN sdkmanager --install "platforms;android-${API}"
ARG TYPE # one of: default, google_apis, or google_apis_playstore
ARG ABI # e.g. armeabi-v7a, x86
ENV EMU_PACKAGE_NAME="system-images;android-${API};${TYPE};${ABI}"
RUN sdkmanager --install "${EMU_PACKAGE_NAME}"
COPY ./emulator-entrypoint.sh /opt/emulator/bin/emulator-entrypoint.sh
COPY ./emulator-wait-for-ready.sh /opt/emulator/bin/emulator-wait-for-ready.sh
ENV PATH="/opt/emulator/bin:${PATH}"
ENV PATH="${ANDROID_HOME}/platform-tools:${PATH}"
# Setup password-less sudo so that /dev/kvm permissions can be changed. Run the
# emulator in an unprivileged user for reliability (and it might require it?)
RUN echo "ALL ALL = (ALL) NOPASSWD: ALL" >> /etc/sudoers
RUN useradd --create-home emulator
USER emulator
WORKDIR /home/emulator
# Size of emulator /data partition in megabytes.
ENV EMU_PARTITION_SIZE=8192
EXPOSE 5037
HEALTHCHECK CMD emulator-wait-for-ready.sh 5
ENTRYPOINT ["emulator-entrypoint.sh"]