Compare commits
13 Commits
3c4e6bb9f8
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f767101df4 | ||
|
|
13210e1dc1 | ||
|
|
e1a0ff589f | ||
|
|
df78b01c85 | ||
|
|
6bf51f101d | ||
|
|
d517666b56 | ||
|
|
3e8fb84f0d | ||
|
|
472296fc1d | ||
|
|
bc07a8a80c | ||
|
|
ef1e78f445 | ||
|
|
f2c6c1633e | ||
|
|
eace997379 | ||
|
|
e5cf329ccb |
62
.gitea/workflows/build.yaml
Normal file
62
.gitea/workflows/build.yaml
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
name: Build Android Emulator Images
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [main, master]
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
android_version:
|
||||||
|
description: 'Android API version (e.g., 30, 31, 32)'
|
||||||
|
required: false
|
||||||
|
default: '30'
|
||||||
|
|
||||||
|
env:
|
||||||
|
REGISTRY: images.caffeinetux.com
|
||||||
|
PROJECT: library
|
||||||
|
DOCKER_HOST: tcp://localhost:2375
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
version: [android-30]
|
||||||
|
fail-fast: false
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Wait for Docker
|
||||||
|
run: |
|
||||||
|
for i in $(seq 1 30); do
|
||||||
|
if docker info >/dev/null 2>&1; then
|
||||||
|
echo "Docker is ready"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
echo "Waiting for Docker... ($i/30)"
|
||||||
|
sleep 2
|
||||||
|
done
|
||||||
|
docker info
|
||||||
|
|
||||||
|
- name: Login to Harbor
|
||||||
|
run: |
|
||||||
|
echo "${{ secrets.HARBOR_PASSWORD }}" | docker login ${{ env.REGISTRY }} -u "${{ secrets.HARBOR_USERNAME }}" --password-stdin
|
||||||
|
|
||||||
|
- name: Generate build files
|
||||||
|
run: make generate
|
||||||
|
|
||||||
|
- name: Build and push
|
||||||
|
working-directory: build/${{ matrix.version }}
|
||||||
|
run: |
|
||||||
|
# Build the image
|
||||||
|
docker build \
|
||||||
|
--build-arg VCS_REF=${{ github.sha }} \
|
||||||
|
--build-arg IMAGE_VERSION=${{ github.run_number }} \
|
||||||
|
-t ${{ env.REGISTRY }}/${{ env.PROJECT }}/docker-emulator-${{ matrix.version }}:latest \
|
||||||
|
-t ${{ env.REGISTRY }}/${{ env.PROJECT }}/docker-emulator-${{ matrix.version }}:${{ github.sha }} \
|
||||||
|
.
|
||||||
|
|
||||||
|
# Push tags
|
||||||
|
docker push ${{ env.REGISTRY }}/${{ env.PROJECT }}/docker-emulator-${{ matrix.version }}:latest
|
||||||
|
docker push ${{ env.REGISTRY }}/${{ env.PROJECT }}/docker-emulator-${{ matrix.version }}:${{ github.sha }}
|
||||||
6
Makefile
6
Makefile
@@ -1,5 +1,5 @@
|
|||||||
SHELL := /usr/bin/env bash
|
SHELL := /usr/bin/env bash
|
||||||
VERSIONS ?= android-16 android-17 android-18 android-19 android-21 android-22 android-23 android-24 android-25 android-26 android-27 android-28
|
VERSIONS ?= android-29 android-30 android-31 android-32 android-33 android-34
|
||||||
|
|
||||||
generate:
|
generate:
|
||||||
for version in $(VERSIONS); do \
|
for version in $(VERSIONS); do \
|
||||||
@@ -37,8 +37,10 @@ tag: generate
|
|||||||
$(MAKE) -C build/$$version tag; \
|
$(MAKE) -C build/$$version tag; \
|
||||||
done
|
done
|
||||||
|
|
||||||
|
REGISTRY ?= images.caffeinetux.com
|
||||||
|
|
||||||
login:
|
login:
|
||||||
@docker login -u "$(DOCKER_USER)" -p "$(DOCKER_PASS)" "$(PROXY)"
|
@docker login -u "$(DOCKER_USER)" -p "$(DOCKER_PASS)" "$(REGISTRY)"
|
||||||
|
|
||||||
push: login
|
push: login
|
||||||
for version in $(VERSIONS); do \
|
for version in $(VERSIONS); do \
|
||||||
|
|||||||
@@ -1,67 +1,75 @@
|
|||||||
FROM ubuntu:18.04
|
FROM ubuntu:22.04
|
||||||
|
|
||||||
MAINTAINER Anton Malinskiy "anton@malinskiy.com"
|
LABEL maintainer="Updated for modern Android SDK"
|
||||||
|
|
||||||
# Set up insecure default key
|
# Set up insecure default key
|
||||||
COPY adbkey adbkey.pub adb_usb.ini /root/.android/
|
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 ANDROID_SDK_ROOT=/opt/android-sdk \
|
||||||
|
ANDROID_HOME=/opt/android-sdk \
|
||||||
LANG=en_US.UTF-8 \
|
LANG=en_US.UTF-8 \
|
||||||
LANGUAGE=en_US:en \
|
LANGUAGE=en_US:en \
|
||||||
LC_ALL=en_US.UTF-8 \
|
LC_ALL=en_US.UTF-8 \
|
||||||
ANDROID_HOME=/opt/android-sdk-linux \
|
PATH="$PATH:/opt/android-sdk/cmdline-tools/latest/bin:/opt/android-sdk/platform-tools:/opt/android-sdk/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"
|
|
||||||
|
# Use specific cmdline-tools version
|
||||||
|
ENV CMDLINE_TOOLS_URL=https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip
|
||||||
|
|
||||||
RUN dpkg --add-architecture i386 && \
|
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 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 \
|
||||||
locales ca-certificates apt-transport-https curl unzip redir iproute2 \
|
software-properties-common \
|
||||||
openjdk-8-jdk xvfb x11vnc fluxbox nano telnet expect \
|
libstdc++6:i386 \
|
||||||
libc6 libdbus-1-3 libfontconfig1 libgcc1 \
|
zlib1g:i386 \
|
||||||
libpulse0 libtinfo5 libx11-6 libxcb1 libxdamage1 \
|
libncurses5:i386 \
|
||||||
libnss3 libxcomposite1 libxcursor1 libxi6 \
|
locales \
|
||||||
libxext6 libxfixes3 zlib1g libgl1 pulseaudio socat \
|
ca-certificates \
|
||||||
|
apt-transport-https \
|
||||||
|
curl \
|
||||||
|
unzip \
|
||||||
|
redir \
|
||||||
|
iproute2 \
|
||||||
|
openjdk-17-jdk-headless \
|
||||||
|
xvfb \
|
||||||
|
x11vnc \
|
||||||
|
fluxbox \
|
||||||
|
libpulse0 \
|
||||||
|
telnet \
|
||||||
|
expect \
|
||||||
|
qemu-utils \
|
||||||
|
libglu1-mesa \
|
||||||
|
libnss3 \
|
||||||
|
libxcomposite1 \
|
||||||
|
libxcursor1 \
|
||||||
|
libxi6 \
|
||||||
|
libxtst6 \
|
||||||
|
libasound2 \
|
||||||
--no-install-recommends && \
|
--no-install-recommends && \
|
||||||
locale-gen en_US.UTF-8 && \
|
locale-gen en_US.UTF-8 && \
|
||||||
# Install Android SDK
|
# Install Android SDK cmdline-tools
|
||||||
curl -L $LINK_ANDROID_SDK > /tmp/android-sdk-linux.zip && \
|
mkdir -p /opt/android-sdk/cmdline-tools && \
|
||||||
unzip -q /tmp/android-sdk-linux.zip -d /opt/android-sdk-linux/ && \
|
curl -L $CMDLINE_TOOLS_URL -o /tmp/cmdline-tools.zip && \
|
||||||
rm /tmp/android-sdk-linux.zip && \
|
unzip -q /tmp/cmdline-tools.zip -d /tmp && \
|
||||||
# Customized steps per specific platform
|
mv /tmp/cmdline-tools /opt/android-sdk/cmdline-tools/latest && \
|
||||||
yes | sdkmanager --no_https --licenses && \
|
rm /tmp/cmdline-tools.zip && \
|
||||||
yes | sdkmanager emulator tools platform-tools "platforms;{{ platform }}" "system-images;{{ platform }};google_apis;x86" --verbose | uniq && \
|
# Accept licenses
|
||||||
echo no | avdmanager create avd -n "x86" --package "system-images;{{ platform }};google_apis;x86" --tag google_apis && \
|
yes | sdkmanager --licenses && \
|
||||||
# Unfilter devices (now local because CI downloads from github are unstable)
|
# Install emulator, platform-tools, and specific platform
|
||||||
# curl -o /root/.android/adb_usb.ini https://raw.githubusercontent.com/apkudo/adbusbini/master/adb_usb.ini && \
|
sdkmanager "emulator" "platform-tools" "platforms;{{ platform }}" "system-images;{{ platform }};google_apis;x86_64" --verbose && \
|
||||||
DEBIAN_FRONTEND=noninteractive apt-get purge -yq unzip openjdk-8-jdk && \
|
# Create AVD
|
||||||
|
echo no | avdmanager create avd -n "x86_64" --package "system-images;{{ platform }};google_apis;x86_64" --tag google_apis --device "pixel_2" && \
|
||||||
# Clean up
|
# Clean up
|
||||||
apt-get -yq autoremove && \
|
apt-get -yq autoremove && \
|
||||||
apt-get clean && \
|
apt-get clean && \
|
||||||
apt-get autoclean && \
|
apt-get autoclean && \
|
||||||
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||||
|
|
||||||
# Convert large partitions to qcow2 to save space
|
COPY config.ini /root/.android/avd/x86_64.avd/config.ini
|
||||||
# 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 && \
|
|
||||||
# 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)
|
|
||||||
|
|
||||||
COPY config.ini /root/.android/avd/x86.avd/config.ini
|
# Expose adb and emulator ports
|
||||||
|
|
||||||
# Expose adb
|
|
||||||
EXPOSE 5037 5554 5555 5900
|
EXPOSE 5037 5554 5555 5900
|
||||||
|
|
||||||
# Add script
|
# Add start script
|
||||||
COPY start.sh /start.sh
|
COPY start.sh /start.sh
|
||||||
RUN chmod +x /start.sh
|
RUN chmod +x /start.sh
|
||||||
CMD ["/start.sh"]
|
CMD ["/start.sh"]
|
||||||
|
|||||||
63
templates/Dockerfile.old
Normal file
63
templates/Dockerfile.old
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
FROM ubuntu:18.04
|
||||||
|
|
||||||
|
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 \
|
||||||
|
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"
|
||||||
|
|
||||||
|
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 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\
|
||||||
|
--no-install-recommends && \
|
||||||
|
locale-gen en_US.UTF-8 && \
|
||||||
|
# Install Android SDK
|
||||||
|
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 && \
|
||||||
|
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/*
|
||||||
|
|
||||||
|
COPY config.ini /root/.android/avd/x86.avd/config.ini
|
||||||
|
|
||||||
|
# Expose adb
|
||||||
|
EXPOSE 5037 5554 5555 5900
|
||||||
|
|
||||||
|
# Add script
|
||||||
|
COPY start.sh /start.sh
|
||||||
|
RUN chmod +x /start.sh
|
||||||
|
CMD ["/start.sh"]
|
||||||
@@ -1,16 +1,16 @@
|
|||||||
OWNER=mobdevops/agoda
|
REGISTRY ?= images.caffeinetux.com
|
||||||
|
PROJECT ?= library
|
||||||
IMAGE_NAME=docker-emulator-{{ platform }}
|
IMAGE_NAME=docker-emulator-{{ platform }}
|
||||||
VCS_REF=`git rev-parse --short HEAD`
|
VCS_REF=`git rev-parse --short HEAD`
|
||||||
IMAGE_VERSION ?= 1.0.0
|
IMAGE_VERSION ?= 1.0.0
|
||||||
PROXY ?=
|
QNAME=$(REGISTRY)/$(PROJECT)/$(IMAGE_NAME)
|
||||||
QNAME=$(PROXY)$(OWNER)/$(IMAGE_NAME)
|
|
||||||
|
|
||||||
GIT_TAG=$(QNAME):$(VCS_REF)
|
GIT_TAG=$(QNAME):$(VCS_REF)
|
||||||
BUILD_TAG=$(QNAME):$(IMAGE_VERSION)
|
BUILD_TAG=$(QNAME):$(IMAGE_VERSION)
|
||||||
LATEST_TAG=$(QNAME):latest
|
LATEST_TAG=$(QNAME):latest
|
||||||
|
|
||||||
SNAPSHOT_IMAGE_NAME=docker-emulator-snapshot-{{ platform }}
|
SNAPSHOT_IMAGE_NAME=docker-emulator-snapshot-{{ platform }}
|
||||||
SNAPSHOT_QNAME=$(PROXY)$(OWNER)/$(SNAPSHOT_IMAGE_NAME)
|
SNAPSHOT_QNAME=$(REGISTRY)/$(PROJECT)/$(SNAPSHOT_IMAGE_NAME)
|
||||||
SNAPSHOT_GIT_TAG=$(SNAPSHOT_QNAME):$(VCS_REF)
|
SNAPSHOT_GIT_TAG=$(SNAPSHOT_QNAME):$(VCS_REF)
|
||||||
SNAPSHOT_BUILD_TAG=$(SNAPSHOT_QNAME):$(IMAGE_VERSION)
|
SNAPSHOT_BUILD_TAG=$(SNAPSHOT_QNAME):$(IMAGE_VERSION)
|
||||||
SNAPSHOT_LATEST_TAG=$(SNAPSHOT_QNAME):latest
|
SNAPSHOT_LATEST_TAG=$(SNAPSHOT_QNAME):latest
|
||||||
|
|||||||
@@ -1,39 +1,40 @@
|
|||||||
avd.ini.encoding=UTF-8
|
avd.ini.encoding=UTF-8
|
||||||
AvdId=x86
|
abi.type=x86_64
|
||||||
PlayStore.enabled=true
|
disk.dataPartition.size=2G
|
||||||
abi.type=x86
|
fastboot.forceColdBoot=no
|
||||||
avd.ini.displayname=x86
|
|
||||||
disk.dataPartition.size=2048M
|
|
||||||
hw.accelerometer=yes
|
hw.accelerometer=yes
|
||||||
|
hw.arc=false
|
||||||
hw.audioInput=no
|
hw.audioInput=no
|
||||||
|
hw.audioOutput=no
|
||||||
hw.battery=yes
|
hw.battery=yes
|
||||||
hw.camera.back=none
|
hw.camera.back=none
|
||||||
hw.camera.front=none
|
hw.camera.front=none
|
||||||
hw.cpu.arch=x86
|
hw.cpu.arch=x86_64
|
||||||
hw.cpu.ncore=2
|
hw.cpu.ncore=2
|
||||||
hw.dPad=no
|
hw.dPad=no
|
||||||
hw.device.hash2=MD5:1be89bc42ec9644d4b77968b23474980
|
hw.device.hash2=MD5:6b5943207fe196d842659d2e43022e20
|
||||||
hw.device.manufacturer=Google
|
hw.device.manufacturer=Google
|
||||||
hw.device.name=Nexus 5X
|
hw.device.name=pixel_2
|
||||||
hw.gps=yes
|
hw.gps=yes
|
||||||
hw.gpu.enabled=on
|
hw.gpu.enabled=yes
|
||||||
hw.gpu.mode=swiftshader_indirect
|
hw.gpu.mode=swiftshader_indirect
|
||||||
hw.initialOrientation=Portrait
|
hw.initialOrientation=Portrait
|
||||||
hw.keyboard=no
|
hw.keyboard=yes
|
||||||
hw.lcd.density=160
|
hw.lcd.density=420
|
||||||
|
hw.lcd.height=1920
|
||||||
|
hw.lcd.width=1080
|
||||||
hw.mainKeys=no
|
hw.mainKeys=no
|
||||||
hw.ramSize=1536
|
hw.ramSize=2048
|
||||||
|
hw.sdCard=no
|
||||||
hw.sensors.orientation=yes
|
hw.sensors.orientation=yes
|
||||||
hw.sensors.proximity=yes
|
hw.sensors.proximity=yes
|
||||||
hw.trackBall=no
|
hw.trackBall=no
|
||||||
image.sysdir.1=system-images/{{ platform }}/google_apis/x86/
|
image.sysdir.1=system-images/{{ platform }}/google_apis/x86_64/
|
||||||
runtime.network.latency=none
|
|
||||||
runtime.network.speed=full
|
|
||||||
showDeviceFrame=no
|
showDeviceFrame=no
|
||||||
skin.dynamic=yes
|
skin.dynamic=yes
|
||||||
skin.name=480x800
|
skin.name=1080x1920
|
||||||
skin.path=_no_skin
|
skin.path=_no_skin
|
||||||
skin.path.backup=_no_skin
|
skin.path.backup=_no_skin
|
||||||
tag.display=Google APIs
|
tag.display=Google APIs
|
||||||
tag.id=google_apis
|
tag.id=google_apis
|
||||||
vm.heapSize=192
|
vm.heapSize=256
|
||||||
|
|||||||
39
templates/config.ini.old
Normal file
39
templates/config.ini.old
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
avd.ini.encoding=UTF-8
|
||||||
|
AvdId=x86
|
||||||
|
PlayStore.enabled=true
|
||||||
|
abi.type=x86
|
||||||
|
avd.ini.displayname=x86
|
||||||
|
disk.dataPartition.size=800M
|
||||||
|
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.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.mode=swiftshader_indirect
|
||||||
|
hw.initialOrientation=Portrait
|
||||||
|
hw.keyboard=no
|
||||||
|
hw.lcd.density=160
|
||||||
|
hw.mainKeys=no
|
||||||
|
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
|
||||||
|
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
|
||||||
@@ -4,21 +4,17 @@ adb_port=$ADB_PORT
|
|||||||
adb_server_port=$ADB_SERVER_PORT
|
adb_server_port=$ADB_SERVER_PORT
|
||||||
emulator_opts=$EMULATOR_OPTS
|
emulator_opts=$EMULATOR_OPTS
|
||||||
|
|
||||||
if [ -z "$console_port" ]
|
if [ -z "$console_port" ]; then
|
||||||
then
|
|
||||||
console_port="5554"
|
console_port="5554"
|
||||||
fi
|
fi
|
||||||
if [ -z "$adb_port" ]
|
if [ -z "$adb_port" ]; then
|
||||||
then
|
|
||||||
adb_port="5555"
|
adb_port="5555"
|
||||||
fi
|
fi
|
||||||
if [ -z "$adb_server_port" ]
|
if [ -z "$adb_server_port" ]; then
|
||||||
then
|
|
||||||
adb_server_port="5037"
|
adb_server_port="5037"
|
||||||
fi
|
fi
|
||||||
if [ -z "$emulator_opts" ]
|
if [ -z "$emulator_opts" ]; then
|
||||||
then
|
emulator_opts="-screen multi-touch -no-boot-anim -noaudio -no-window -gpu swiftshader_indirect -camera-back none -camera-front none -skip-adb-auth -no-snapshot-save -read-only"
|
||||||
emulator_opts="-screen multi-touch -no-boot-anim -noaudio -nojni -netfast -verbose -camera-back none -camera-front none -skip-adb-auth -snapshot default -no-snapshot-save"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Detect ip and forward ADB ports outside to outside interface
|
# Detect ip and forward ADB ports outside to outside interface
|
||||||
@@ -29,17 +25,20 @@ redir --laddr=$ip --lport=$adb_port --caddr=127.0.0.1 --cport=$adb_port &
|
|||||||
|
|
||||||
function clean_up {
|
function clean_up {
|
||||||
echo "Cleaning up"
|
echo "Cleaning up"
|
||||||
rm /tmp/.X1-lock
|
rm -f /tmp/.X1-lock
|
||||||
|
|
||||||
kill $XVFB_PID
|
kill $XVFB_PID 2>/dev/null
|
||||||
kill $FLUXBOX_PID
|
kill $FLUXBOX_PID 2>/dev/null
|
||||||
kill $VNC_PID
|
kill $VNC_PID 2>/dev/null
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
trap clean_up SIGHUP SIGINT SIGTERM
|
trap clean_up SIGHUP SIGINT SIGTERM
|
||||||
|
|
||||||
export DISPLAY=:1
|
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 ANDROID_SDK_ROOT=/opt/android-sdk
|
||||||
|
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ANDROID_SDK_ROOT/emulator/lib64/qt/lib:$ANDROID_SDK_ROOT/emulator/lib64:$ANDROID_SDK_ROOT/emulator/lib64/gles_swiftshader
|
||||||
|
|
||||||
Xvfb :1 +extension GLX +extension RANDR +extension RENDER +extension XFIXES -screen 0 1024x768x24 &
|
Xvfb :1 +extension GLX +extension RANDR +extension RENDER +extension XFIXES -screen 0 1024x768x24 &
|
||||||
XVFB_PID=$!
|
XVFB_PID=$!
|
||||||
sleep 1 && fluxbox -display ":1.0" &
|
sleep 1 && fluxbox -display ":1.0" &
|
||||||
@@ -48,14 +47,12 @@ sleep 2 && x11vnc -display :1 -nopw -forever &
|
|||||||
VNC_PID=$!
|
VNC_PID=$!
|
||||||
|
|
||||||
# Set up and run emulator
|
# Set up and run emulator
|
||||||
# qemu references bios by relative path
|
cd $ANDROID_SDK_ROOT/emulator
|
||||||
cd /opt/android-sdk-linux/emulator
|
|
||||||
|
|
||||||
CONFIG="/root/.android/avd/x86.avd/config.ini"
|
CONFIG="/root/.android/avd/x86_64.avd/config.ini"
|
||||||
CONFIGTMP=${CONFIG}.tmp
|
CONFIGTMP=${CONFIG}.tmp
|
||||||
|
|
||||||
if [ -n "$ANDROID_CONFIG" ];
|
if [ -n "$ANDROID_CONFIG" ]; then
|
||||||
then
|
|
||||||
IFS=';' read -ra OPTS <<< "$ANDROID_CONFIG"
|
IFS=';' read -ra OPTS <<< "$ANDROID_CONFIG"
|
||||||
for OPT in "${OPTS[@]}"; do
|
for OPT in "${OPTS[@]}"; do
|
||||||
IFS='=' read -ra KV <<< "$OPT"
|
IFS='=' read -ra KV <<< "$OPT"
|
||||||
@@ -69,4 +66,5 @@ fi
|
|||||||
|
|
||||||
echo "emulator_opts: $emulator_opts"
|
echo "emulator_opts: $emulator_opts"
|
||||||
|
|
||||||
LIBGL_DEBUG=verbose ./qemu/linux-x86_64/qemu-system-x86_64 -avd x86 -ports $console_port,$adb_port $emulator_opts -qemu $QEMU_OPTS
|
# Use the emulator binary directly
|
||||||
|
$ANDROID_SDK_ROOT/emulator/emulator -avd x86_64 -ports $console_port,$adb_port $emulator_opts
|
||||||
|
|||||||
72
templates/start.sh.old
Normal file
72
templates/start.sh.old
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
console_port=$CONSOLE_PORT
|
||||||
|
adb_port=$ADB_PORT
|
||||||
|
adb_server_port=$ADB_SERVER_PORT
|
||||||
|
emulator_opts=$EMULATOR_OPTS
|
||||||
|
|
||||||
|
if [ -z "$console_port" ]
|
||||||
|
then
|
||||||
|
console_port="5554"
|
||||||
|
fi
|
||||||
|
if [ -z "$adb_port" ]
|
||||||
|
then
|
||||||
|
adb_port="5555"
|
||||||
|
fi
|
||||||
|
if [ -z "$adb_server_port" ]
|
||||||
|
then
|
||||||
|
adb_server_port="5037"
|
||||||
|
fi
|
||||||
|
if [ -z "$emulator_opts" ]
|
||||||
|
then
|
||||||
|
emulator_opts="-screen multi-touch -no-boot-anim -noaudio -nojni -netfast -verbose -camera-back none -camera-front none -skip-adb-auth -snapshot default -no-snapshot-save"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Detect ip and forward ADB ports outside to outside interface
|
||||||
|
ip=$(ip addr list eth0|grep "inet "|cut -d' ' -f6|cut -d/ -f1)
|
||||||
|
redir --laddr=$ip --lport=$adb_server_port --caddr=127.0.0.1 --cport=$adb_server_port &
|
||||||
|
redir --laddr=$ip --lport=$console_port --caddr=127.0.0.1 --cport=$console_port &
|
||||||
|
redir --laddr=$ip --lport=$adb_port --caddr=127.0.0.1 --cport=$adb_port &
|
||||||
|
|
||||||
|
function clean_up {
|
||||||
|
echo "Cleaning up"
|
||||||
|
rm /tmp/.X1-lock
|
||||||
|
|
||||||
|
kill $XVFB_PID
|
||||||
|
kill $FLUXBOX_PID
|
||||||
|
kill $VNC_PID
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
Xvfb :1 +extension GLX +extension RANDR +extension RENDER +extension XFIXES -screen 0 1024x768x24 &
|
||||||
|
XVFB_PID=$!
|
||||||
|
sleep 1 && fluxbox -display ":1.0" &
|
||||||
|
FLUXBOX_PID=$!
|
||||||
|
sleep 2 && x11vnc -display :1 -nopw -forever &
|
||||||
|
VNC_PID=$!
|
||||||
|
|
||||||
|
# Set up and run emulator
|
||||||
|
# qemu references bios by relative path
|
||||||
|
cd /opt/android-sdk-linux/emulator
|
||||||
|
|
||||||
|
CONFIG="/root/.android/avd/x86.avd/config.ini"
|
||||||
|
CONFIGTMP=${CONFIG}.tmp
|
||||||
|
|
||||||
|
if [ -n "$ANDROID_CONFIG" ];
|
||||||
|
then
|
||||||
|
IFS=';' read -ra OPTS <<< "$ANDROID_CONFIG"
|
||||||
|
for OPT in "${OPTS[@]}"; do
|
||||||
|
IFS='=' read -ra KV <<< "$OPT"
|
||||||
|
KEY=${KV[0]}
|
||||||
|
VALUE=${KV[1]}
|
||||||
|
mv ${CONFIG} ${CONFIGTMP}
|
||||||
|
cat ${CONFIGTMP} | grep -v ${KEY}= > ${CONFIG}
|
||||||
|
echo ${OPT} >> ${CONFIG}
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "emulator_opts: $emulator_opts"
|
||||||
|
|
||||||
|
LIBGL_DEBUG=verbose ./qemu/linux-x86_64/qemu-system-x86_64 -avd x86 -ports $console_port,$adb_port $emulator_opts -qemu $QEMU_OPTS
|
||||||
Reference in New Issue
Block a user