Merge pull request #5 from twocolors/main

support all variables for docker and fix recreate avd
This commit is contained in:
Halim Qarroum
2024-04-23 21:01:18 +02:00
committed by GitHub
5 changed files with 69 additions and 39 deletions
+6 -4
View File
@@ -4,9 +4,9 @@ ENV DEBIAN_FRONTEND noninteractive
#WORKDIR /
#=============================
# Install Dependenices
# Install Dependenices
#=============================
SHELL ["/bin/bash", "-c"]
SHELL ["/bin/bash", "-c"]
RUN apt update && apt install -y curl \
sudo wget unzip bzip2 libdrm-dev \
@@ -41,7 +41,8 @@ ENV ANDROID_SDK_ROOT=/opt/android \
ABI=${IMG_TYPE}/${ARCHITECTURE} \
GPU_ACCELERATED=$GPU_ACCELERATED \
QTWEBENGINE_DISABLE_SANDBOX=1 \
ANDROID_EMULATOR_WAIT_TIME_BEFORE_KILL=10
ANDROID_EMULATOR_WAIT_TIME_BEFORE_KILL=10 \
ANDROID_AVD_HOME=/data
# Exporting environment variables to keep in the path
# Android SDK binaries and shared libraries.
@@ -59,7 +60,8 @@ EXPOSE 5554 5555
# Initializing the required directories.
RUN mkdir /root/.android/ && \
touch /root/.android/repositories.cfg
touch /root/.android/repositories.cfg && \
mkdir /data
# Exporting ADB keys.
#COPY keys/* /root/.android/
+4 -2
View File
@@ -44,7 +44,8 @@ ENV ANDROID_SDK_ROOT=/opt/android \
ABI=${IMG_TYPE}/${ARCHITECTURE} \
GPU_ACCELERATED=$GPU_ACCELERATED \
QTWEBENGINE_DISABLE_SANDBOX=1 \
ANDROID_EMULATOR_WAIT_TIME_BEFORE_KILL=10
ANDROID_EMULATOR_WAIT_TIME_BEFORE_KILL=10 \
ANDROID_AVD_HOME=/data
# Exporting environment variables for keeping in the path
# Android SDK binaries and shared libraries.
@@ -62,7 +63,8 @@ EXPOSE 5554 5555
# Initializing the required directories.
RUN mkdir /root/.android/ && \
touch /root/.android/repositories.cfg
touch /root/.android/repositories.cfg && \
mkdir /data
# Exporting ADB keys.
#COPY keys/* /root/.android/
+18 -4
View File
@@ -76,7 +76,6 @@ You can generate one by running `adb keygen adbkey`, that generates 2 files - ad
override them inside ./keys directory.
### Running the container
Once the image is built, you can mount your KVM driver on the container and expose its ADB port.
@@ -87,6 +86,14 @@ Once the image is built, you can mount your KVM driver on the container and expo
docker run -it --rm --device /dev/kvm -p 5555:5555 android-emulator
```
### Save data/storage after restart (wipe)
All avd save in docker dir `/data`, name for avd is `android`
```bash
docker run -it --rm --device /dev/kvm -p 5555:5555 -v ~/android_avd:/data android-emulator
```
### Connect ADB to the container
The ADB server in the container will be spawned automatically and listen on all interfaces in the container. After a few seconds, once the kernel has booted, you will be able to connect ADB to the container.
@@ -142,15 +149,22 @@ docker build \
```
### Variables
## Default variables
#### Disable animation
DISABLE_ANIMATION=false
#### Disable hidden policy
DISABLE_HIDDEN_POLICY=true
DISABLE_HIDDEN_POLICY=false
#### skip adb authentication
SKIP_AUTH=false
#### Skip adb authentication
SKIP_AUTH=true
#### Memory for emulator
MEMORY=8192
#### Cores for emulator
CORES=4
### Mount an external drive in the container
+14 -8
View File
@@ -1,7 +1,7 @@
version: "4"
services:
android-emulator:
build:
build:
context: .
args:
- API_LEVEL=34
@@ -15,14 +15,17 @@ services:
- DISABLE_HIDDEN_POLICY=true
- SKIP_AUTH=false
#- ANDROID_ADB_SERVER_ADDRESS=host.docker.internal
privileged: true
- MEMORY=16384
- CORES=16
privileged: true
tty: true
stdin_open: true
volumes:
- ./keys/adbkey:/root/.android/adbkey:ro
- ./keys/adbkey.pub:/root/.android/adbkey.pub:ro
- ./android_avd:/data
extra_hosts:
- "host.docker.internal:host-gateway"
- "host.docker.internal:host-gateway"
android-emulator-cuda:
build:
@@ -40,14 +43,16 @@ services:
- DISABLE_HIDDEN_POLICY=true
- SKIP_AUTH=false
#- ANDROID_ADB_SERVER_ADDRESS=host.docker.internal
privileged: true
- MEMORY=16384
- CORES=16
privileged: true
tty: true
stdin_open: true
volumes:
- ./keys/adbkey:/root/.android/adbkey:ro
- ./keys/adbkey.pub:/root/.android/adbkey.pub:ro
extra_hosts:
- "host.docker.internal:host-gateway"
- "host.docker.internal:host-gateway"
deploy:
resources:
reservations:
@@ -72,7 +77,9 @@ services:
- DISABLE_HIDDEN_POLICY=true
- SKIP_AUTH=false
#- ANDROID_ADB_SERVER_ADDRESS=host.docker.internal
privileged: true
- MEMORY=16384
- CORES=16
privileged: true
tty: true
stdin_open: true
volumes:
@@ -81,7 +88,7 @@ services:
# volumes:
# - ./:/mnt
extra_hosts:
- "host.docker.internal:host-gateway"
- "host.docker.internal:host-gateway"
deploy:
resources:
reservations:
@@ -89,4 +96,3 @@ services:
- driver: nvidia
count: 1
capabilities: [gpu]
+27 -21
View File
@@ -4,13 +4,13 @@ set -e
source ./emulator-monitoring.sh
# The emulator console port.
# The emulator console port.
EMULATOR_CONSOLE_PORT=5554
# The ADB port used to connect to ADB.
ADB_PORT=5555
MEMORY=16048
CORES=10
SKIP_AUTH=true
OPT_MEMORY=${MEMORY:-8192}
OPT_CORES=${CORES:-4}
OPT_SKIP_AUTH=${SKIP_AUTH:-true}
AUTH_FLAG=
# Start ADB server by listening on all interfaces.
echo "Starting the ADB server ..."
@@ -25,16 +25,21 @@ socat tcp-listen:"$ADB_PORT",bind="$LOCAL_IP",fork tcp:127.0.0.1:"$ADB_PORT" &
export USER=root
# Creating the Android Virtual Emulator.
echo "Creating the Android Virtual Emulator ..."
echo "Using package '$PACKAGE_PATH', ABI '$ABI' and device '$DEVICE_ID' for creating the emulator"
echo no | avdmanager create avd \
--force \
--name android \
--abi "$ABI" \
--package "$PACKAGE_PATH" \
--device "$DEVICE_ID"
TEST_AVD="$(emulator -list-avds | grep android)"
if [ -z "$TEST_AVD" ]; then
echo "Use the exists Android Virtual Emulator ..."
else
echo "Creating the Android Virtual Emulator ..."
echo "Using package '$PACKAGE_PATH', ABI '$ABI' and device '$DEVICE_ID' for creating the emulator"
echo no | avdmanager create avd \
--force \
--name android \
--abi "$ABI" \
--package "$PACKAGE_PATH" \
--device "$DEVICE_ID"
fi
if [ "$SKIP_AUTH" == "true" ]; then
if [ "$OPT_SKIP_AUTH" == "true" ]; then
AUTH_FLAG="-skip-adb-auth"
fi
@@ -55,17 +60,18 @@ fi
wait_for_boot &
# Start the emulator with no audio, no GUI, and no snapshots.
echo "Starting the emulator ... "
echo "OPTIONS: "
echo "GPU - $GPU_MODE"
echo "MEMORY - $MEMORY"
echo "CORES - $CORES"
echo "Starting the emulator ..."
echo "OPTIONS:"
echo "ADB AUTH - $OPT_SKIP_AUTH"
echo "GPU - $GPU_MODE"
echo "MEMORY - $OPT_MEMORY"
echo "CORES - $OPT_CORES"
emulator \
-avd android \
-gpu "$GPU_MODE" \
-memory $MEMORY \
-memory $OPT_MEMORY \
-no-boot-anim \
-cores $CORES \
-cores $OPT_CORES \
-ranchu \
$AUTH_FLAG \
-no-window \
@@ -73,4 +79,4 @@ emulator \
# -qemu \
# -smp 8,sockets=1,cores=4,threads=2,maxcpus=8
# -smp 8,sockets=1,cores=4,threads=2,maxcpus=8