From d517666b56f035fe0a5a073d1f0d727c76e6f262 Mon Sep 17 00:00:00 2001 From: Alexey Date: Mon, 23 Mar 2020 18:39:48 +0700 Subject: [PATCH] Revert "Emulator api 28" --- README.md | 4 +-- templates/Dockerfile | 40 ++++++++++++++---------------- templates/Makefile | 2 +- templates/config.ini | 50 +++++++++++++++----------------------- templates/snapshot.sh | 6 ++--- templates/start.sh | 4 +-- templates/take_snapshot.sh | 2 +- 7 files changed, 46 insertions(+), 62 deletions(-) diff --git a/README.md b/README.md index 489c124..18c17f3 100644 --- a/README.md +++ b/README.md @@ -16,14 +16,14 @@ docker-emulator-android is one of the components of [android-farm](https://githu # Usage For example to run default emulator options with Marshmallow (API 23): ```console -$ docker run --rm --privileged -e ANDROID_ARCH="x86_64" -v /dev/kvm:/dev/kvm agoda-com/docker-emulator-android-23:latest +$ docker run --rm --privileged -e ANDROID_ARCH="x86" -v /dev/kvm:/dev/kvm agoda-com/docker-emulator-android-23:latest $ adb connect VIP:5555 ``` If you want to start different configuration of device, for example a 7 inch tablet, you need to override `config.ini` variables: ```console -$ docker run --rm --privileged -e ANDROID_ARCH="x86_64" -e ANDROID_CONFIG="skin.name=600x1024;hw.lcd.density=160;hw.lcd.height=600;hw.lcd.width=1024;hw.device.name=7in WSVGA (Tablet);avd.ini.displayname=7 WSVGA (Tablet) API 23;" -v /dev/kvm:/dev/kvm agoda-com/docker-emulator-android-23:latest +$ docker run --rm --privileged -e ANDROID_ARCH="x86" -e ANDROID_CONFIG="skin.name=600x1024;hw.lcd.density=160;hw.lcd.height=600;hw.lcd.width=1024;hw.device.name=7in WSVGA (Tablet);avd.ini.displayname=7 WSVGA (Tablet) API 23;" -v /dev/kvm:/dev/kvm agoda-com/docker-emulator-android-23:latest ``` For all the options available please check the [official documentation](https://developer.android.com/studio/run/emulator-commandline.html) diff --git a/templates/Dockerfile b/templates/Dockerfile index b810ff9..56c66be 100644 --- a/templates/Dockerfile +++ b/templates/Dockerfile @@ -19,13 +19,9 @@ RUN dpkg --add-architecture i386 && \ echo "deb mirror://mirrors.ubuntu.com/mirrors.txt bionic-backports main restricted universe multiverse" >> /etc/apt/sources.list && \ 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-8-jdk xvfb x11vnc fluxbox nano telnet expect \ - libc6 libdbus-1-3 libfontconfig1 libgcc1 \ - libpulse0 libtinfo5 libx11-6 libxcb1 libxdamage1 \ - libnss3 libxcomposite1 libxcursor1 libxi6 \ - libxext6 libxfixes3 zlib1g libgl1 pulseaudio socat \ - --no-install-recommends && \ + locales ca-certificates apt-transport-https curl unzip redir iproute2 \ + openjdk-8-jdk xvfb x11vnc fluxbox nano libpulse0 telnet expect\ + --no-install-recommends && \ locale-gen en_US.UTF-8 && \ # Install Android SDK curl -L $LINK_ANDROID_SDK > /tmp/android-sdk-linux.zip && \ @@ -33,30 +29,30 @@ RUN dpkg --add-architecture i386 && \ rm /tmp/android-sdk-linux.zip && \ # Customized steps per specific platform yes | sdkmanager --no_https --licenses && \ - yes | sdkmanager emulator tools platform-tools "platforms;{{ platform }}" "system-images;{{ platform }};google_apis;x86_64" --verbose | uniq && \ - echo no | avdmanager create avd -n "Pixel2" --package "system-images;{{ platform }};google_apis;x86_64" --tag google_apis && \ + yes | sdkmanager emulator tools platform-tools "platforms;{{ platform }}" "system-images;{{ platform }};google_apis;x86" --verbose | uniq && \ + echo no | avdmanager create avd -n "x86" --package "system-images;{{ platform }};google_apis;x86" --tag google_apis && \ # Unfilter devices (now local because CI downloads from github are unstable) # curl -o /root/.android/adb_usb.ini https://raw.githubusercontent.com/apkudo/adbusbini/master/adb_usb.ini && \ DEBIAN_FRONTEND=noninteractive apt-get purge -yq unzip openjdk-8-jdk && \ + # Convert large partitions to qcow2 to save space + qemu-img convert -O qcow2 -c /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/system.img /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/system.qcow2 && \ + mv /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/system.qcow2 /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/system.img && \ + qemu-img convert -O qcow2 -c /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/userdata.img /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/userdata.qcow2 && \ + mv /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/userdata.qcow2 /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/userdata.img && \ + qemu-img resize /root/.android/avd/x86.avd/userdata.img 2G && \ + e2fsck -fy /root/.android/avd/x86.avd/userdata.img && \ + resize2fs /root/.android/avd/x86.avd/userdata.img && \ + qemu-img convert -O qcow2 -c /root/.android/avd/x86.avd/userdata.img /root/.android/avd/x86.avd/userdata.qcow2 && \ + mv /root/.android/avd/x86.avd/userdata.qcow2 /root/.android/avd/x86.avd/userdata.img && \ + (qemu-img convert -O qcow2 -c /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/vendor.img /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/vendor.qcow2 && \ + mv /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/vendor.qcow2 /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/vendor.img || true) && \ # Clean up apt-get -yq autoremove && \ apt-get clean && \ apt-get autoclean && \ rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* -# Convert large partitions to qcow2 to save space -# RUN qemu-img convert -O qcow2 -c /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/system.img /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/system.qcow2 && \ -# mv /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/system.qcow2 /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/system.img && \ -# qemu-img convert -O qcow2 -c /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/userdata.img /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/userdata.qcow2 && \ -# mv /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/userdata.qcow2 /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/userdata.img && \ -# qemu-img resize /root/.android/avd/Pixel2.avd/userdata.img 2G && \ -# resize2fs /root/.android/avd/Pixel2.avd/userdata.img && \ -# qemu-img convert -O qcow2 -c /root/.android/avd/Pixel2.avd/userdata.img /root/.android/avd/Pixel2.avd/userdata.qcow2 && \ -# mv /root/.android/avd/Pixel2.avd/userdata.qcow2 /root/.android/avd/Pixel2.avd/userdata.img && \ -# (qemu-img convert -O qcow2 -c /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/vendor.img /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/vendor.qcow2 && \ -# mv /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/vendor.qcow2 /opt/android-sdk-linux/system-images/{{ platform }}/google_apis/x86/vendor.img || true) - -COPY config.ini /root/.android/avd/Pixel2.avd/config.ini +COPY config.ini /root/.android/avd/x86.avd/config.ini # Expose adb EXPOSE 5037 5554 5555 5900 diff --git a/templates/Makefile b/templates/Makefile index 970f99e..4504e9a 100644 --- a/templates/Makefile +++ b/templates/Makefile @@ -1,4 +1,4 @@ -OWNER=mobdevops/agoda +OWNER=agoda IMAGE_NAME=docker-emulator-{{ platform }} VCS_REF=`git rev-parse --short HEAD` IMAGE_VERSION ?= 1.0.0 diff --git a/templates/config.ini b/templates/config.ini index 821b627..bb9f4b7 100644 --- a/templates/config.ini +++ b/templates/config.ini @@ -1,51 +1,39 @@ -AvdId=Pixel2 -PlayStore.enabled=true -avd.ini.displayname=Pixel2 avd.ini.encoding=UTF-8 -# Real Pixel2 ships with 32GB -disk.dataPartition.size=2048M -fastboot.forceColdBoot=no +AvdId=x86 +PlayStore.enabled=true +abi.type=x86 +avd.ini.displayname=x86 +disk.dataPartition.size=800M hw.accelerometer=yes -hw.audioInput=yes +hw.audioInput=no hw.battery=yes -hw.camera.back=none # 'emulated' by default -hw.camera.front=none # 'emulated' by default -hw.cpu.ncore=4 +hw.camera.back=none +hw.camera.front=none +hw.cpu.arch=x86 +hw.cpu.ncore=2 hw.dPad=no hw.device.hash2=MD5:1be89bc42ec9644d4b77968b23474980 hw.device.manufacturer=Google +hw.device.name=Nexus 5X hw.gps=yes -hw.gpu.enabled=yes +hw.gpu.enabled=on hw.gpu.mode=swiftshader_indirect hw.initialOrientation=Portrait -hw.keyboard=yes +hw.keyboard=no +hw.lcd.density=160 hw.mainKeys=no -hw.ramSize=4096 +hw.ramSize=1536 hw.sensors.orientation=yes hw.sensors.proximity=yes hw.trackBall=no +image.sysdir.1=system-images/{{ platform }}/google_apis/x86/ runtime.network.latency=none runtime.network.speed=full -vm.heapSize=512 -tag.display=Google APIs -# Set some -hw.lcd.density=160 # '440' by default -hw.lcd.height=800 # '1920' by default -hw.lcd.width=480 # '1080' by default -# Unused -# hw.sdCard=yes -# sdcard.size=512M - -tag.id=google_apis -abi.type=x86_64 -hw.cpu.arch=x86_64 -image.sysdir.1=system-images/{{ platform }}/google_apis/x86_64/ - -# End of default configuration - -hw.device.name=Pixel2 showDeviceFrame=no skin.dynamic=yes skin.name=480x800 skin.path=_no_skin skin.path.backup=_no_skin +tag.display=Google APIs +tag.id=google_apis +vm.heapSize=192 diff --git a/templates/snapshot.sh b/templates/snapshot.sh index b0f15fe..7d4a29a 100644 --- a/templates/snapshot.sh +++ b/templates/snapshot.sh @@ -21,7 +21,7 @@ Xvfb :1 +extension GLX +extension RANDR +extension RENDER +extension XFIXES -scr XVFB_PID=$! cd /opt/android-sdk-linux/emulator -LIBGL_DEBUG=verbose ./qemu/linux-x86_64/qemu-system-x86_64 -avd Pixel2 -snapshot default -no-snapshot-save & +LIBGL_DEBUG=verbose ./qemu/linux-x86_64/qemu-system-x86_64 -avd x86 -snapshot default -no-snapshot-save & EMULATOR_PID=$! adb wait-for-device @@ -45,8 +45,8 @@ save adb emu kill # Doesn't work: triggers cold boot -# qemu-img convert -O qcow2 -c /root/.android/avd/Pixel2.avd/userdata-qemu.img /root/.android/avd/Pixel2.avd/userdata-qemu.img_qcow2 -# mv /root/.android/avd/Pixel2.avd/userdata-qemu.img_qcow2 /root/.android/avd/Pixel2.avd/userdata-qemu.img +# qemu-img convert -O qcow2 -c /root/.android/avd/x86.avd/userdata-qemu.img /root/.android/avd/x86.avd/userdata-qemu.img_qcow2 +# mv /root/.android/avd/x86.avd/userdata-qemu.img_qcow2 /root/.android/avd/x86.avd/userdata-qemu.img # Moving adb binary away so that stopping adb server with delay will release the emulator and will make it available for external connections mv /opt/android-sdk-linux/platform-tools/adb /opt/android-sdk-linux/platform-tools/_adb diff --git a/templates/start.sh b/templates/start.sh index c939bab..2f01229 100644 --- a/templates/start.sh +++ b/templates/start.sh @@ -51,7 +51,7 @@ VNC_PID=$! # qemu references bios by relative path cd /opt/android-sdk-linux/emulator -CONFIG="/root/.android/avd/Pixel2.avd/config.ini" +CONFIG="/root/.android/avd/x86.avd/config.ini" CONFIGTMP=${CONFIG}.tmp if [ -n "$ANDROID_CONFIG" ]; @@ -69,4 +69,4 @@ fi echo "emulator_opts: $emulator_opts" -LIBGL_DEBUG=verbose ./qemu/linux-x86_64/qemu-system-x86_64 -avd Pixel2 -ports $console_port,$adb_port $emulator_opts -qemu $QEMU_OPTS +LIBGL_DEBUG=verbose ./qemu/linux-x86_64/qemu-system-x86_64 -avd x86 -ports $console_port,$adb_port $emulator_opts -qemu $QEMU_OPTS diff --git a/templates/take_snapshot.sh b/templates/take_snapshot.sh index 569e65d..65ed9d6 100644 --- a/templates/take_snapshot.sh +++ b/templates/take_snapshot.sh @@ -7,7 +7,7 @@ snapshot_image_name=$2 docker rm -f emulator || true -docker run -d -t --name emulator --rm --privileged -v /dev/kvm:/dev/kvm -e ANDROID_ARCH="x86_64" $image_name bash +docker run -d -t --name emulator --rm --privileged -v /dev/kvm:/dev/kvm -e ANDROID_ARCH="x86" $image_name bash docker cp snapshot.sh emulator:/snapshot.sh docker cp snapshot.expect emulator:/snapshot.expect