From bc364d43865a55e7883e3db12d767451cfb69b53 Mon Sep 17 00:00:00 2001 From: Vitaliy Gorbachov Date: Mon, 14 Jun 2021 15:29:37 +0700 Subject: [PATCH 01/16] update sdk version to 7302050 --- templates/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/Dockerfile b/templates/Dockerfile index 56c66be..5662575 100644 --- a/templates/Dockerfile +++ b/templates/Dockerfile @@ -5,7 +5,7 @@ MAINTAINER Anton Malinskiy "anton@malinskiy.com" # Set up insecure default key COPY adbkey adbkey.pub adb_usb.ini /root/.android/ -ENV LINK_ANDROID_SDK=https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip \ +ENV LINK_ANDROID_SDK=https://dl.google.com/android/repository/commandlinetools-linux-7302050_latest.zip \ LANG=en_US.UTF-8 \ LANGUAGE=en_US:en \ LC_ALL=en_US.UTF-8 \ From 8e8b004d7dec1d93665160b1c0033af5e50c70d4 Mon Sep 17 00:00:00 2001 From: Vitaliy Gorbachov Date: Mon, 14 Jun 2021 22:37:03 +0700 Subject: [PATCH 02/16] updated sdk manager usage --- templates/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/Dockerfile b/templates/Dockerfile index 5662575..28ee160 100644 --- a/templates/Dockerfile +++ b/templates/Dockerfile @@ -28,8 +28,8 @@ RUN dpkg --add-architecture i386 && \ unzip -q /tmp/android-sdk-linux.zip -d /opt/android-sdk-linux/ && \ 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" --verbose | uniq && \ + yes | sdkmanager --no_https --licenses --sdk_root=${ANDROID_HOME} && \ + yes | sdkmanager --sdk_root=${ANDROID_HOME} 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 && \ From f87b6fbb347440691478a6e8f9c494738fabe38e Mon Sep 17 00:00:00 2001 From: Vitaliy Gorbachov Date: Mon, 14 Jun 2021 23:03:09 +0700 Subject: [PATCH 03/16] added ability to specify additional build options --- templates/Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/templates/Makefile b/templates/Makefile index 4504e9a..74f5a55 100644 --- a/templates/Makefile +++ b/templates/Makefile @@ -4,6 +4,7 @@ VCS_REF=`git rev-parse --short HEAD` IMAGE_VERSION ?= 1.0.0 PROXY ?= QNAME=$(PROXY)$(OWNER)/$(IMAGE_NAME) +ADDITIONAL_BUILD_OPTIONS ?= GIT_TAG=$(QNAME):$(VCS_REF) BUILD_TAG=$(QNAME):$(IMAGE_VERSION) @@ -21,6 +22,7 @@ build: docker build \ --build-arg VCS_REF=$(VCS_REF) \ --build-arg IMAGE_VERSION=$(IMAGE_VERSION) \ + $(ADDITIONAL_BUILD_OPTIONS) \ -t $(LATEST_TAG) $(ROOT_DIR) snapshot: From 5fd85e6ae9268dce8904088bf4777771ed519d3e Mon Sep 17 00:00:00 2001 From: Vitaliy Gorbachov Date: Mon, 14 Jun 2021 23:33:49 +0700 Subject: [PATCH 04/16] fixed path --- templates/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/Dockerfile b/templates/Dockerfile index 28ee160..b2d0bf3 100644 --- a/templates/Dockerfile +++ b/templates/Dockerfile @@ -10,7 +10,7 @@ ENV LINK_ANDROID_SDK=https://dl.google.com/android/repository/commandlinetools-l LANGUAGE=en_US:en \ LC_ALL=en_US.UTF-8 \ ANDROID_HOME=/opt/android-sdk-linux \ - PATH="$PATH:/opt/android-sdk-linux/tools:/opt/android-sdk-linux/platform-tools:/opt/android-sdk-linux/tools/bin:/opt/android-sdk-linux/emulator" + PATH="$PATH:/opt/android-sdk-linux/tools:/opt/android-sdk-linux/platform-tools:/opt/android-sdk-linux/tools/bin:/opt/android-sdk-linux/emulator:/opt/android-sdk-linux/cmdline-tools/bin" RUN dpkg --add-architecture i386 && \ echo "deb mirror://mirrors.ubuntu.com/mirrors.txt bionic main restricted universe multiverse" > /etc/apt/sources.list && \ @@ -20,7 +20,7 @@ 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-8-jdk xvfb x11vnc fluxbox nano libpulse0 telnet expect\ + openjdk-8-jdk xvfb x11vnc fluxbox nano libpulse0 telnet expect \ --no-install-recommends && \ locale-gen en_US.UTF-8 && \ # Install Android SDK From 3f6b4e01410de96aaa1dbf7fbe6cef5c0d99dd38 Mon Sep 17 00:00:00 2001 From: Vitaliy Gorbachov Date: Mon, 14 Jun 2021 23:44:08 +0700 Subject: [PATCH 05/16] attempt to correct missing deps --- templates/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/Dockerfile b/templates/Dockerfile index b2d0bf3..a5338b6 100644 --- a/templates/Dockerfile +++ b/templates/Dockerfile @@ -18,7 +18,7 @@ RUN dpkg --add-architecture i386 && \ echo "deb mirror://mirrors.ubuntu.com/mirrors.txt bionic-security main restricted universe multiverse" >> /etc/apt/sources.list && \ 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 \ + DEBIAN_FRONTEND=noninteractive apt-get install -yq software-properties-common libc6:i386 libgcc1:i386 libstdc++6:i386 zlib1g:i386 libtinfo5:i386 libncurses5:i386 \ locales ca-certificates apt-transport-https curl unzip redir iproute2 \ openjdk-8-jdk xvfb x11vnc fluxbox nano libpulse0 telnet expect \ --no-install-recommends && \ From a49cd180fce965df66215dc074a9f6c1769fede3 Mon Sep 17 00:00:00 2001 From: Vitaliy Gorbachov Date: Tue, 15 Jun 2021 00:30:44 +0700 Subject: [PATCH 06/16] reworked layers, updated qemu resize format --- templates/Dockerfile | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/templates/Dockerfile b/templates/Dockerfile index a5338b6..fb062da 100644 --- a/templates/Dockerfile +++ b/templates/Dockerfile @@ -1,7 +1,5 @@ FROM ubuntu:18.04 -MAINTAINER Anton Malinskiy "anton@malinskiy.com" - # Set up insecure default key COPY adbkey adbkey.pub adb_usb.ini /root/.android/ @@ -22,35 +20,37 @@ RUN dpkg --add-architecture i386 && \ 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 && \ + locale-gen en_US.UTF-8 + +# Install Android SDK +RUN curl -L $LINK_ANDROID_SDK > /tmp/android-sdk-linux.zip && \ unzip -q /tmp/android-sdk-linux.zip -d /opt/android-sdk-linux/ && \ rm /tmp/android-sdk-linux.zip && \ # Customized steps per specific platform yes | sdkmanager --no_https --licenses --sdk_root=${ANDROID_HOME} && \ - yes | sdkmanager --sdk_root=${ANDROID_HOME} emulator tools platform-tools "platforms;{{ platform }}" "system-images;{{ platform }};google_apis;x86" --verbose | uniq && \ + yes | sdkmanager --sdk_root=${ANDROID_HOME} 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 && \ + # curl -o /root/.android/adb_usb.ini https://raw.githubusercontent.com/apkudo/adbusbini/master/adb_usb.ini + # Clean up 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 && \ + 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/x86.avd/userdata.img 2G && \ + qemu-img resize -f raw /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/* + 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/x86.avd/config.ini From 7cbfd320c683485d034414094f25df7ce2cd268a Mon Sep 17 00:00:00 2001 From: Vitaliy Gorbachov Date: Tue, 15 Jun 2021 01:29:26 +0700 Subject: [PATCH 07/16] fixed image resizing --- templates/Dockerfile | 8 +------- templates/config.ini | 2 +- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/templates/Dockerfile b/templates/Dockerfile index fb062da..ab5789b 100644 --- a/templates/Dockerfile +++ b/templates/Dockerfile @@ -30,8 +30,6 @@ RUN curl -L $LINK_ANDROID_SDK > /tmp/android-sdk-linux.zip && \ yes | sdkmanager --no_https --licenses --sdk_root=${ANDROID_HOME} && \ yes | sdkmanager --sdk_root=${ANDROID_HOME} 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 # Clean up DEBIAN_FRONTEND=noninteractive apt-get purge -yq unzip openjdk-8-jdk && \ apt-get -yq autoremove && \ @@ -44,11 +42,7 @@ RUN qemu-img convert -O qcow2 -c /opt/android-sdk-linux/system-images/{{ platfor 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 -f raw /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 resize -f raw /root/.android/avd/x86.avd/userdata.img 2048M && \ (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) diff --git a/templates/config.ini b/templates/config.ini index bb9f4b7..c870694 100644 --- a/templates/config.ini +++ b/templates/config.ini @@ -3,7 +3,7 @@ AvdId=x86 PlayStore.enabled=true abi.type=x86 avd.ini.displayname=x86 -disk.dataPartition.size=800M +disk.dataPartition.size=2048M hw.accelerometer=yes hw.audioInput=no hw.battery=yes From 5e7d2805d98681be078b483ee49e13dc18c21c05 Mon Sep 17 00:00:00 2001 From: Vitaliy Gorbachov Date: Tue, 15 Jun 2021 17:47:07 +0700 Subject: [PATCH 08/16] replaced deprecated ANDROID_HOME with ANDROID_SDK_ROOT, removed tools installation with sdkmanager as they seem to come with cmdline tools already, added libs required for qemu snapshot boot --- templates/Dockerfile | 105 ++++++++++++++++++++++++++++--------------- 1 file changed, 69 insertions(+), 36 deletions(-) diff --git a/templates/Dockerfile b/templates/Dockerfile index ab5789b..d4172e0 100644 --- a/templates/Dockerfile +++ b/templates/Dockerfile @@ -1,50 +1,83 @@ FROM ubuntu:18.04 -# Set up insecure default key -COPY adbkey adbkey.pub adb_usb.ini /root/.android/ +ARG ANDROID_SDK_TOOLS='7302050' -ENV LINK_ANDROID_SDK=https://dl.google.com/android/repository/commandlinetools-linux-7302050_latest.zip \ - LANG=en_US.UTF-8 \ +ENV LANG=en_US.UTF-8 \ LANGUAGE=en_US:en \ LC_ALL=en_US.UTF-8 \ - ANDROID_HOME=/opt/android-sdk-linux \ - PATH="$PATH:/opt/android-sdk-linux/tools:/opt/android-sdk-linux/platform-tools:/opt/android-sdk-linux/tools/bin:/opt/android-sdk-linux/emulator:/opt/android-sdk-linux/cmdline-tools/bin" - -RUN dpkg --add-architecture i386 && \ - echo "deb mirror://mirrors.ubuntu.com/mirrors.txt bionic main restricted universe multiverse" > /etc/apt/sources.list && \ - echo "deb mirror://mirrors.ubuntu.com/mirrors.txt bionic-updates main restricted universe multiverse" >> /etc/apt/sources.list && \ - echo "deb mirror://mirrors.ubuntu.com/mirrors.txt bionic-security main restricted universe multiverse" >> /etc/apt/sources.list && \ - 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 libc6:i386 libgcc1:i386 libstdc++6:i386 zlib1g:i386 libtinfo5:i386 libncurses5:i386 \ - 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 + ANDROID_SDK_ROOT=/opt/android-sdk-linux \ + PATH="$PATH:/opt/android-sdk-linux/cmdline-tools/bin:/opt/android-sdk-linux/platform-tools:/opt/android-sdk-linux/emulator" + +RUN dpkg --add-architecture i386 \ + && echo "deb mirror://mirrors.ubuntu.com/mirrors.txt bionic main restricted universe multiverse" > /etc/apt/sources.list \ + && echo "deb mirror://mirrors.ubuntu.com/mirrors.txt bionic-updates main restricted universe multiverse" >> /etc/apt/sources.list \ + && echo "deb mirror://mirrors.ubuntu.com/mirrors.txt bionic-security main restricted universe multiverse" >> /etc/apt/sources.list \ + && echo "deb mirror://mirrors.ubuntu.com/mirrors.txt bionic-backports main restricted universe multiverse" >> /etc/apt/sources.list \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + apt-transport-https \ + ca-certificates \ + curl \ + expect \ + fluxbox \ + iproute2 \ + libc6:i386 \ + libgcc1:i386 \ + libncurses5:i386 \ + libstdc++6:i386 \ + libtinfo5:i386 \ + libasound2 \ + libgl1 \ + libnss3 \ + libpulse0 \ + libxcomposite1 \ + libxcursor1 \ + libxi6 \ + locales \ + nano \ + openjdk-8-jdk \ + redir \ + software-properties-common \ + telnet \ + unzip \ + x11vnc \ + xvfb \ + zlib1g:i386 \ + && locale-gen en_US.UTF-8 + +# Set up insecure default key +COPY adbkey adbkey.pub adb_usb.ini /root/.android/ # Install Android SDK -RUN curl -L $LINK_ANDROID_SDK > /tmp/android-sdk-linux.zip && \ - unzip -q /tmp/android-sdk-linux.zip -d /opt/android-sdk-linux/ && \ - rm /tmp/android-sdk-linux.zip && \ +RUN curl -L https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS}_latest.zip > /tmp/android-sdk-linux.zip \ + && unzip -q /tmp/android-sdk-linux.zip -d /opt/android-sdk-linux/ \ + && rm /tmp/android-sdk-linux.zip \ + \ # Customized steps per specific platform - yes | sdkmanager --no_https --licenses --sdk_root=${ANDROID_HOME} && \ - yes | sdkmanager --sdk_root=${ANDROID_HOME} 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 && \ + && yes | sdkmanager --no_https --licenses --sdk_root=${ANDROID_SDK_ROOT} \ + && sdkmanager --sdk_root=${ANDROID_SDK_ROOT} platform-tools --verbose \ + "platforms;{{ platform }}" \ + "system-images;{{ platform }};google_apis;x86" | uniq \ + && echo no | avdmanager create avd -n "x86" --package "system-images;{{ platform }};google_apis;x86" --tag google_apis \ + \ # Clean up - DEBIAN_FRONTEND=noninteractive apt-get purge -yq unzip openjdk-8-jdk && \ - apt-get -yq autoremove && \ - apt-get clean && \ - apt-get autoclean && \ - rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + && apt-get purge -yq unzip openjdk-8-jdk \ + && 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 -f raw /root/.android/avd/x86.avd/userdata.img 2048M && \ - (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) +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 -f raw /root/.android/avd/x86.avd/userdata.img 2048M \ + \ + && (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/x86.avd/config.ini From ea84d173dfa9c3818f4be3bfce52374fcbc1b895 Mon Sep 17 00:00:00 2001 From: Vitaliy Gorbachov Date: Tue, 15 Jun 2021 18:10:45 +0700 Subject: [PATCH 09/16] addressing inconsistent android sdk package location warnings --- templates/Dockerfile | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/templates/Dockerfile b/templates/Dockerfile index d4172e0..8705e3b 100644 --- a/templates/Dockerfile +++ b/templates/Dockerfile @@ -5,8 +5,8 @@ ARG ANDROID_SDK_TOOLS='7302050' ENV LANG=en_US.UTF-8 \ LANGUAGE=en_US:en \ LC_ALL=en_US.UTF-8 \ - ANDROID_SDK_ROOT=/opt/android-sdk-linux \ - PATH="$PATH:/opt/android-sdk-linux/cmdline-tools/bin:/opt/android-sdk-linux/platform-tools:/opt/android-sdk-linux/emulator" + ANDROID_SDK_ROOT=/opt \ + PATH="$PATH:/opt/cmdline-tools/bin:/opt/platform-tools:/opt/emulator" RUN dpkg --add-architecture i386 \ && echo "deb mirror://mirrors.ubuntu.com/mirrors.txt bionic main restricted universe multiverse" > /etc/apt/sources.list \ @@ -50,7 +50,7 @@ COPY adbkey adbkey.pub adb_usb.ini /root/.android/ # Install Android SDK RUN curl -L https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS}_latest.zip > /tmp/android-sdk-linux.zip \ - && unzip -q /tmp/android-sdk-linux.zip -d /opt/android-sdk-linux/ \ + && unzip -q /tmp/android-sdk-linux.zip -d ${ANDROID_SDK_ROOT}/ \ && rm /tmp/android-sdk-linux.zip \ \ # Customized steps per specific platform @@ -68,16 +68,16 @@ RUN curl -L https://dl.google.com/android/repository/commandlinetools-linux-${AN && 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 \ +RUN qemu-img convert -O qcow2 -c ${ANDROID_SDK_ROOT}/system-images/{{ platform }}/google_apis/x86/system.img ${ANDROID_SDK_ROOT}/system-images/{{ platform }}/google_apis/x86/system.qcow2 \ + && mv ${ANDROID_SDK_ROOT}/system-images/{{ platform }}/google_apis/x86/system.qcow2 ${ANDROID_SDK_ROOT}/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 convert -O qcow2 -c ${ANDROID_SDK_ROOT}/system-images/{{ platform }}/google_apis/x86/userdata.img ${ANDROID_SDK_ROOT}/system-images/{{ platform }}/google_apis/x86/userdata.qcow2 \ + && mv ${ANDROID_SDK_ROOT}/system-images/{{ platform }}/google_apis/x86/userdata.qcow2 ${ANDROID_SDK_ROOT}/system-images/{{ platform }}/google_apis/x86/userdata.img \ \ && qemu-img resize -f raw /root/.android/avd/x86.avd/userdata.img 2048M \ \ - && (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) + && (qemu-img convert -O qcow2 -c ${ANDROID_SDK_ROOT}/system-images/{{ platform }}/google_apis/x86/vendor.img ${ANDROID_SDK_ROOT}/system-images/{{ platform }}/google_apis/x86/vendor.qcow2 \ + && mv ${ANDROID_SDK_ROOT}/system-images/{{ platform }}/google_apis/x86/vendor.qcow2 ${ANDROID_SDK_ROOT}/system-images/{{ platform }}/google_apis/x86/vendor.img || true) COPY config.ini /root/.android/avd/x86.avd/config.ini From 4caf41bff43e951b3b16a7c22b28661995539e35 Mon Sep 17 00:00:00 2001 From: Vitaliy Gorbachov Date: Tue, 15 Jun 2021 18:46:26 +0700 Subject: [PATCH 10/16] fixed new sdk version tools location https://stackoverflow.com/questions/60440509/android-command-line-tools-sdkmanager-always-shows-warning-could-not-create-se/61176718#61176718 --- templates/Dockerfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/templates/Dockerfile b/templates/Dockerfile index 8705e3b..538eef3 100644 --- a/templates/Dockerfile +++ b/templates/Dockerfile @@ -6,7 +6,7 @@ ENV LANG=en_US.UTF-8 \ LANGUAGE=en_US:en \ LC_ALL=en_US.UTF-8 \ ANDROID_SDK_ROOT=/opt \ - PATH="$PATH:/opt/cmdline-tools/bin:/opt/platform-tools:/opt/emulator" + PATH="$PATH:/opt/cmdline-tools/tools/bin:/opt/platform-tools:/opt/emulator" RUN dpkg --add-architecture i386 \ && echo "deb mirror://mirrors.ubuntu.com/mirrors.txt bionic main restricted universe multiverse" > /etc/apt/sources.list \ @@ -50,8 +50,9 @@ COPY adbkey adbkey.pub adb_usb.ini /root/.android/ # Install Android SDK RUN curl -L https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS}_latest.zip > /tmp/android-sdk-linux.zip \ - && unzip -q /tmp/android-sdk-linux.zip -d ${ANDROID_SDK_ROOT}/ \ + && unzip -q /tmp/android-sdk-linux.zip -d ${ANDROID_SDK_ROOT}/cmdline-tools/ \ && rm /tmp/android-sdk-linux.zip \ + && mv ${ANDROID_SDK_ROOT}/cmdline-tools/cmdline-tools ${ANDROID_SDK_ROOT}/cmdline-tools/tools \ \ # Customized steps per specific platform && yes | sdkmanager --no_https --licenses --sdk_root=${ANDROID_SDK_ROOT} \ From 7f4b35ebde6db78952a90386e4a905d5def9e321 Mon Sep 17 00:00:00 2001 From: Vitaliy Gorbachov Date: Tue, 15 Jun 2021 18:55:14 +0700 Subject: [PATCH 11/16] removed now unnecessary --sdk_root parameter --- templates/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/Dockerfile b/templates/Dockerfile index 538eef3..7ee36ca 100644 --- a/templates/Dockerfile +++ b/templates/Dockerfile @@ -55,8 +55,8 @@ RUN curl -L https://dl.google.com/android/repository/commandlinetools-linux-${AN && mv ${ANDROID_SDK_ROOT}/cmdline-tools/cmdline-tools ${ANDROID_SDK_ROOT}/cmdline-tools/tools \ \ # Customized steps per specific platform - && yes | sdkmanager --no_https --licenses --sdk_root=${ANDROID_SDK_ROOT} \ - && sdkmanager --sdk_root=${ANDROID_SDK_ROOT} platform-tools --verbose \ + && yes | sdkmanager --no_https --licenses \ + && sdkmanager platform-tools --verbose \ "platforms;{{ platform }}" \ "system-images;{{ platform }};google_apis;x86" | uniq \ && echo no | avdmanager create avd -n "x86" --package "system-images;{{ platform }};google_apis;x86" --tag google_apis \ From 45fd8f8d0e5a168b5af530f794e49005e2c41801 Mon Sep 17 00:00:00 2001 From: Vitaliy Gorbachov Date: Tue, 15 Jun 2021 18:59:24 +0700 Subject: [PATCH 12/16] updated snapshot scripts with new android sdk location --- templates/snapshot.sh | 6 +++--- templates/start.sh | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/templates/snapshot.sh b/templates/snapshot.sh index 7d4a29a..346afa6 100644 --- a/templates/snapshot.sh +++ b/templates/snapshot.sh @@ -16,11 +16,11 @@ function clean_up { echo "Starting emulator" trap clean_up SIGHUP SIGINT SIGTERM export DISPLAY=:1 -export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/android-sdk-linux/emulator/lib64/qt/lib:/opt/android-sdk-linux/emulator/lib64/libstdc++:/opt/android-sdk-linux/emulator/lib64:/opt/android-sdk-linux/emulator/lib64/gles_swiftshader +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/emulator/lib64/qt/lib:/opt/emulator/lib64/libstdc++:/opt/emulator/lib64:/opt/emulator/lib64/gles_swiftshader Xvfb :1 +extension GLX +extension RANDR +extension RENDER +extension XFIXES -screen 0 1024x768x24 & XVFB_PID=$! -cd /opt/android-sdk-linux/emulator +cd /opt/emulator LIBGL_DEBUG=verbose ./qemu/linux-x86_64/qemu-system-x86_64 -avd x86 -snapshot default -no-snapshot-save & EMULATOR_PID=$! @@ -49,7 +49,7 @@ adb emu kill # 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 +mv /opt/platform-tools/adb /opt/platform-tools/_adb echo "Great Scott!" clean_up diff --git a/templates/start.sh b/templates/start.sh index 2f01229..abc076d 100644 --- a/templates/start.sh +++ b/templates/start.sh @@ -39,7 +39,7 @@ function clean_up { trap clean_up SIGHUP SIGINT SIGTERM export DISPLAY=:1 -export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/android-sdk-linux/emulator/lib64/qt/lib:/opt/android-sdk-linux/emulator/lib64/libstdc++:/opt/android-sdk-linux/emulator/lib64:/opt/android-sdk-linux/emulator/lib64/gles_swiftshader +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/emulator/lib64/qt/lib:/opt/emulator/lib64/libstdc++:/opt/emulator/lib64:/opt/emulator/lib64/gles_swiftshader Xvfb :1 +extension GLX +extension RANDR +extension RENDER +extension XFIXES -screen 0 1024x768x24 & XVFB_PID=$! sleep 1 && fluxbox -display ":1.0" & @@ -49,7 +49,7 @@ VNC_PID=$! # Set up and run emulator # qemu references bios by relative path -cd /opt/android-sdk-linux/emulator +cd /opt/emulator CONFIG="/root/.android/avd/x86.avd/config.ini" CONFIGTMP=${CONFIG}.tmp From 19f9640e05f40816aaa76dd520c60335189fe732 Mon Sep 17 00:00:00 2001 From: Vitaliy Gorbachov Date: Tue, 15 Jun 2021 20:44:25 +0700 Subject: [PATCH 13/16] try installing emulator with sdkmanager instead of the default one --- templates/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/templates/Dockerfile b/templates/Dockerfile index 7ee36ca..b727957 100644 --- a/templates/Dockerfile +++ b/templates/Dockerfile @@ -53,10 +53,11 @@ RUN curl -L https://dl.google.com/android/repository/commandlinetools-linux-${AN && unzip -q /tmp/android-sdk-linux.zip -d ${ANDROID_SDK_ROOT}/cmdline-tools/ \ && rm /tmp/android-sdk-linux.zip \ && mv ${ANDROID_SDK_ROOT}/cmdline-tools/cmdline-tools ${ANDROID_SDK_ROOT}/cmdline-tools/tools \ + && rm -Rf ${ANDROID_SDK_ROOT}/emulator \ \ # Customized steps per specific platform && yes | sdkmanager --no_https --licenses \ - && sdkmanager platform-tools --verbose \ + && sdkmanager emulator platform-tools --verbose \ "platforms;{{ platform }}" \ "system-images;{{ platform }};google_apis;x86" | uniq \ && echo no | avdmanager create avd -n "x86" --package "system-images;{{ platform }};google_apis;x86" --tag google_apis \ From 366c50a42ec0551c09b12a29ef3150934635418c Mon Sep 17 00:00:00 2001 From: Vitaliy Gorbachov Date: Tue, 15 Jun 2021 20:51:54 +0700 Subject: [PATCH 14/16] Revert "try installing emulator with sdkmanager instead of the default one" This reverts commit 19f9640e05f40816aaa76dd520c60335189fe732. --- templates/Dockerfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/templates/Dockerfile b/templates/Dockerfile index b727957..7ee36ca 100644 --- a/templates/Dockerfile +++ b/templates/Dockerfile @@ -53,11 +53,10 @@ RUN curl -L https://dl.google.com/android/repository/commandlinetools-linux-${AN && unzip -q /tmp/android-sdk-linux.zip -d ${ANDROID_SDK_ROOT}/cmdline-tools/ \ && rm /tmp/android-sdk-linux.zip \ && mv ${ANDROID_SDK_ROOT}/cmdline-tools/cmdline-tools ${ANDROID_SDK_ROOT}/cmdline-tools/tools \ - && rm -Rf ${ANDROID_SDK_ROOT}/emulator \ \ # Customized steps per specific platform && yes | sdkmanager --no_https --licenses \ - && sdkmanager emulator platform-tools --verbose \ + && sdkmanager platform-tools --verbose \ "platforms;{{ platform }}" \ "system-images;{{ platform }};google_apis;x86" | uniq \ && echo no | avdmanager create avd -n "x86" --package "system-images;{{ platform }};google_apis;x86" --tag google_apis \ From 53efc1e566c5ff8ec3f0cd65ccf9c254c8e568fa Mon Sep 17 00:00:00 2001 From: Vitaliy Gorbachov Date: Thu, 7 Oct 2021 16:33:48 +0300 Subject: [PATCH 15/16] minor readability improvement since env is no longer creating separate layers --- templates/Dockerfile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/templates/Dockerfile b/templates/Dockerfile index 7ee36ca..f7a8d72 100644 --- a/templates/Dockerfile +++ b/templates/Dockerfile @@ -2,11 +2,11 @@ FROM ubuntu:18.04 ARG ANDROID_SDK_TOOLS='7302050' -ENV LANG=en_US.UTF-8 \ - LANGUAGE=en_US:en \ - LC_ALL=en_US.UTF-8 \ - ANDROID_SDK_ROOT=/opt \ - PATH="$PATH:/opt/cmdline-tools/tools/bin:/opt/platform-tools:/opt/emulator" +ENV LANG=en_US.UTF-8 +ENV LANGUAGE=en_US:en +ENV LC_ALL=en_US.UTF-8 +ENV ANDROID_SDK_ROOT=/opt +ENV PATH="$PATH:/opt/cmdline-tools/tools/bin:/opt/platform-tools:/opt/emulator" RUN dpkg --add-architecture i386 \ && echo "deb mirror://mirrors.ubuntu.com/mirrors.txt bionic main restricted universe multiverse" > /etc/apt/sources.list \ From 66820bc183ab1ad57c115c7450e5a91fda32726c Mon Sep 17 00:00:00 2001 From: Vitaliy Gorbachov Date: Tue, 30 Nov 2021 00:44:40 +0200 Subject: [PATCH 16/16] try higher resources --- templates/Dockerfile | 2 +- templates/config.ini | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/templates/Dockerfile b/templates/Dockerfile index f7a8d72..08d8b81 100644 --- a/templates/Dockerfile +++ b/templates/Dockerfile @@ -75,7 +75,7 @@ RUN qemu-img convert -O qcow2 -c ${ANDROID_SDK_ROOT}/system-images/{{ platform } && qemu-img convert -O qcow2 -c ${ANDROID_SDK_ROOT}/system-images/{{ platform }}/google_apis/x86/userdata.img ${ANDROID_SDK_ROOT}/system-images/{{ platform }}/google_apis/x86/userdata.qcow2 \ && mv ${ANDROID_SDK_ROOT}/system-images/{{ platform }}/google_apis/x86/userdata.qcow2 ${ANDROID_SDK_ROOT}/system-images/{{ platform }}/google_apis/x86/userdata.img \ \ - && qemu-img resize -f raw /root/.android/avd/x86.avd/userdata.img 2048M \ + && qemu-img resize -f raw /root/.android/avd/x86.avd/userdata.img 4096M \ \ && (qemu-img convert -O qcow2 -c ${ANDROID_SDK_ROOT}/system-images/{{ platform }}/google_apis/x86/vendor.img ${ANDROID_SDK_ROOT}/system-images/{{ platform }}/google_apis/x86/vendor.qcow2 \ && mv ${ANDROID_SDK_ROOT}/system-images/{{ platform }}/google_apis/x86/vendor.qcow2 ${ANDROID_SDK_ROOT}/system-images/{{ platform }}/google_apis/x86/vendor.img || true) diff --git a/templates/config.ini b/templates/config.ini index c870694..e64d8ea 100644 --- a/templates/config.ini +++ b/templates/config.ini @@ -3,26 +3,26 @@ AvdId=x86 PlayStore.enabled=true abi.type=x86 avd.ini.displayname=x86 -disk.dataPartition.size=2048M +disk.dataPartition.size=4096M hw.accelerometer=yes hw.audioInput=no hw.battery=yes hw.camera.back=none hw.camera.front=none hw.cpu.arch=x86 -hw.cpu.ncore=2 +hw.cpu.ncore=4 hw.dPad=no hw.device.hash2=MD5:1be89bc42ec9644d4b77968b23474980 hw.device.manufacturer=Google hw.device.name=Nexus 5X hw.gps=yes -hw.gpu.enabled=on +hw.gpu.enabled=yes hw.gpu.mode=swiftshader_indirect hw.initialOrientation=Portrait hw.keyboard=no hw.lcd.density=160 hw.mainKeys=no -hw.ramSize=1536 +hw.ramSize=4096M hw.sensors.orientation=yes hw.sensors.proximity=yes hw.trackBall=no @@ -36,4 +36,4 @@ skin.path=_no_skin skin.path.backup=_no_skin tag.display=Google APIs tag.id=google_apis -vm.heapSize=192 +vm.heapSize=512