Last active
May 30, 2024 08:35
-
-
Save ljmf00/5db17e4cca66e762d51a86bae0712652 to your computer and use it in GitHub Desktop.
Android Emulator on docker
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# _____ .___ __ | |
# / _ \ ____ __| _/____ ____ | | __ ___________ | |
# / /_\ \ / \ / __ |/ _ \_/ ___\| |/ // __ \_ __ \ | |
# / | \ | \/ /_/ ( <_> ) \___| <\ ___/| | \/ | |
# \____|__ /___| /\____ |\____/ \___ >__|_ \\___ >__| | |
# \/ \/ \/ \/ \/ \/ | |
# | |
# Unbloat version of budtmo/docker-android-x86-11.0 | |
# Thanks to @benjamin.botto for 3D hardware acceleration inside docker | |
# | |
# Licensed under WTFPL. | |
# Copyright (C) 2021 Luís Ferreira <contact at lsferreira dot net> | |
FROM openjdk:17-jdk-slim-buster | |
LABEL maintainer="Luís Ferreira <contact at lsferreira dot net>" | |
# Setup Android variables | |
ENV ANDROID_HOME=/opt/android-sdk \ | |
ANDROID_SDK_HOME="/home/android" | |
ENV ANDROID_SDK="${ANDROID_HOME}" \ | |
ANDROID_SDK_ROOT="${ANDROID_HOME}" \ | |
ANDROID_AVD_HOME="${ANDROID_SDK_HOME}/.android/avd" | |
# Create Android home | |
RUN mkdir -p "${ANDROID_HOME}" | |
# Build dependencies | |
RUN apt-get update -y && \ | |
apt-get install -y --no-install-recommends \ | |
curl unzip \ | |
libglvnd0 libgl1 libglx0 libegl1 \ | |
libc6 libgcc1 libncurses5 libstdc++6 zlib1g | |
# Setup Android Command Line Tools | |
ENV ANDROID_CMDLINE_BUILD_NO 6858069 | |
RUN curl https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_CMDLINE_BUILD_NO}_latest.zip -O && \ | |
unzip commandlinetools-linux-${ANDROID_CMDLINE_BUILD_NO}_latest.zip -d ${ANDROID_HOME} && \ | |
rm -rf commandlinetools-linux-${ANDROID_CMDLINE_BUILD_NO}_latest.zip && \ | |
mv ${ANDROID_HOME}/cmdline-tools/ ${ANDROID_HOME}/cmdline-tools2/ && \ | |
mkdir -p ${ANDROID_HOME}/cmdline-tools && \ | |
mv ${ANDROID_HOME}/cmdline-tools2 ${ANDROID_HOME}/cmdline-tools/latest | |
RUN apt-get remove --purge -y curl unzip && \ | |
apt-get autoremove -y && \ | |
rm -rf /var/lib/apt/lists/* | |
# Setup Path | |
ENV PATH "${PATH}:${ANDROID_HOME}/cmdline-tools/latest/bin" | |
# Setup Android user and fix android sdk ownership | |
RUN groupadd android && useradd -m -g android android && \ | |
chown android:android -R ${ANDROID_HOME} | |
# Switch to user mode | |
USER android | |
WORKDIR ${ANDROID_SDK_HOME} | |
# Fetch system images and Android APIs | |
ENV ANDROID_API_VERSION=30 \ | |
ANDROID_BUILD_TOOLS_VERSION=30.0.3 | |
RUN yes | sdkmanager --licenses | |
RUN sdkmanager \ | |
"platforms;android-${ANDROID_API_VERSION}" \ | |
"build-tools;${ANDROID_BUILD_TOOLS_VERSION}" \ | |
"system-images;android-${ANDROID_API_VERSION};google_apis;x86_64" | |
# Setup Android Virtual Device (AVD) | |
RUN echo no | avdmanager -v create avd \ | |
-n "Device" \ | |
-k "system-images;android-${ANDROID_API_VERSION};google_apis;x86_64" && \ | |
echo "hw.mainKeys=no" >> "${ANDROID_AVD_HOME}/Device.avd/config.ini" | |
ENV PATH "${PATH}:${ANDROID_HOME}/emulator" | |
ENTRYPOINT emulator \ | |
-avd "Device" \ | |
-writable-system \ | |
-no-window \ | |
-no-audio \ | |
-gpu swiftshader_indirect \ | |
-accel on \ | |
-ports 5554,5555 \ | |
-verbose |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# Build | |
docker build . -t android-30 | |
# Run | |
docker run -d --rm \ | |
--device /dev/kvm \ | |
--net=host \ | |
--name="android-11-emulator" \ | |
android-30 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment