Compare commits
10 Commits
3c4e6bb9f8
...
df78b01c85
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
df78b01c85 | ||
|
|
6bf51f101d | ||
|
|
d517666b56 | ||
|
|
3e8fb84f0d | ||
|
|
472296fc1d | ||
|
|
bc07a8a80c | ||
|
|
ef1e78f445 | ||
|
|
f2c6c1633e | ||
|
|
eace997379 | ||
|
|
e5cf329ccb |
55
.gitea/workflows/build.yaml
Normal file
55
.gitea/workflows/build.yaml
Normal file
@@ -0,0 +1,55 @@
|
||||
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
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
version: [android-30]
|
||||
fail-fast: false
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Login to Harbor
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ${{ env.REGISTRY }}
|
||||
username: ${{ secrets.HARBOR_USERNAME }}
|
||||
password: ${{ secrets.HARBOR_PASSWORD }}
|
||||
|
||||
- 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
|
||||
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:
|
||||
for version in $(VERSIONS); do \
|
||||
@@ -37,8 +37,10 @@ tag: generate
|
||||
$(MAKE) -C build/$$version tag; \
|
||||
done
|
||||
|
||||
REGISTRY ?= images.caffeinetux.com
|
||||
|
||||
login:
|
||||
@docker login -u "$(DOCKER_USER)" -p "$(DOCKER_PASS)" "$(PROXY)"
|
||||
@docker login -u "$(DOCKER_USER)" -p "$(DOCKER_PASS)" "$(REGISTRY)"
|
||||
|
||||
push: login
|
||||
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
|
||||
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 \
|
||||
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/cmdline-tools/latest/bin:/opt/android-sdk/platform-tools:/opt/android-sdk/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 && \
|
||||
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 telnet expect \
|
||||
libc6 libdbus-1-3 libfontconfig1 libgcc1 \
|
||||
libpulse0 libtinfo5 libx11-6 libxcb1 libxdamage1 \
|
||||
libnss3 libxcomposite1 libxcursor1 libxi6 \
|
||||
libxext6 libxfixes3 zlib1g libgl1 pulseaudio socat \
|
||||
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-17-jdk-headless \
|
||||
xvfb \
|
||||
x11vnc \
|
||||
fluxbox \
|
||||
libpulse0 \
|
||||
telnet \
|
||||
expect \
|
||||
qemu-utils \
|
||||
libglu1-mesa \
|
||||
libnss3 \
|
||||
libxcomposite1 \
|
||||
libxcursor1 \
|
||||
libxi6 \
|
||||
libxtst6 \
|
||||
libasound2 \
|
||||
--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 && \
|
||||
# Install Android SDK cmdline-tools
|
||||
mkdir -p /opt/android-sdk/cmdline-tools && \
|
||||
curl -L $CMDLINE_TOOLS_URL -o /tmp/cmdline-tools.zip && \
|
||||
unzip -q /tmp/cmdline-tools.zip -d /tmp && \
|
||||
mv /tmp/cmdline-tools /opt/android-sdk/cmdline-tools/latest && \
|
||||
rm /tmp/cmdline-tools.zip && \
|
||||
# Accept licenses
|
||||
yes | sdkmanager --licenses && \
|
||||
# Install emulator, platform-tools, and specific platform
|
||||
sdkmanager "emulator" "platform-tools" "platforms;{{ platform }}" "system-images;{{ platform }};google_apis;x86_64" --verbose && \
|
||||
# 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
|
||||
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
|
||||
# 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_64.avd/config.ini
|
||||
|
||||
COPY config.ini /root/.android/avd/x86.avd/config.ini
|
||||
|
||||
# Expose adb
|
||||
# Expose adb and emulator ports
|
||||
EXPOSE 5037 5554 5555 5900
|
||||
|
||||
# Add script
|
||||
# Add start script
|
||||
COPY start.sh /start.sh
|
||||
RUN chmod +x /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 }}
|
||||
VCS_REF=`git rev-parse --short HEAD`
|
||||
IMAGE_VERSION ?= 1.0.0
|
||||
PROXY ?=
|
||||
QNAME=$(PROXY)$(OWNER)/$(IMAGE_NAME)
|
||||
QNAME=$(REGISTRY)/$(PROJECT)/$(IMAGE_NAME)
|
||||
|
||||
GIT_TAG=$(QNAME):$(VCS_REF)
|
||||
BUILD_TAG=$(QNAME):$(IMAGE_VERSION)
|
||||
LATEST_TAG=$(QNAME):latest
|
||||
|
||||
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_BUILD_TAG=$(SNAPSHOT_QNAME):$(IMAGE_VERSION)
|
||||
SNAPSHOT_LATEST_TAG=$(SNAPSHOT_QNAME):latest
|
||||
|
||||
@@ -1,39 +1,40 @@
|
||||
avd.ini.encoding=UTF-8
|
||||
AvdId=x86
|
||||
PlayStore.enabled=true
|
||||
abi.type=x86
|
||||
avd.ini.displayname=x86
|
||||
disk.dataPartition.size=2048M
|
||||
abi.type=x86_64
|
||||
disk.dataPartition.size=2G
|
||||
fastboot.forceColdBoot=no
|
||||
hw.accelerometer=yes
|
||||
hw.arc=false
|
||||
hw.audioInput=no
|
||||
hw.audioOutput=no
|
||||
hw.battery=yes
|
||||
hw.camera.back=none
|
||||
hw.camera.front=none
|
||||
hw.cpu.arch=x86
|
||||
hw.cpu.arch=x86_64
|
||||
hw.cpu.ncore=2
|
||||
hw.dPad=no
|
||||
hw.device.hash2=MD5:1be89bc42ec9644d4b77968b23474980
|
||||
hw.device.hash2=MD5:6b5943207fe196d842659d2e43022e20
|
||||
hw.device.manufacturer=Google
|
||||
hw.device.name=Nexus 5X
|
||||
hw.device.name=pixel_2
|
||||
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.keyboard=yes
|
||||
hw.lcd.density=420
|
||||
hw.lcd.height=1920
|
||||
hw.lcd.width=1080
|
||||
hw.mainKeys=no
|
||||
hw.ramSize=1536
|
||||
hw.ramSize=2048
|
||||
hw.sdCard=no
|
||||
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
|
||||
image.sysdir.1=system-images/{{ platform }}/google_apis/x86_64/
|
||||
showDeviceFrame=no
|
||||
skin.dynamic=yes
|
||||
skin.name=480x800
|
||||
skin.name=1080x1920
|
||||
skin.path=_no_skin
|
||||
skin.path.backup=_no_skin
|
||||
tag.display=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
|
||||
emulator_opts=$EMULATOR_OPTS
|
||||
|
||||
if [ -z "$console_port" ]
|
||||
then
|
||||
if [ -z "$console_port" ]; then
|
||||
console_port="5554"
|
||||
fi
|
||||
if [ -z "$adb_port" ]
|
||||
then
|
||||
if [ -z "$adb_port" ]; then
|
||||
adb_port="5555"
|
||||
fi
|
||||
if [ -z "$adb_server_port" ]
|
||||
then
|
||||
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"
|
||||
if [ -z "$emulator_opts" ]; 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"
|
||||
fi
|
||||
|
||||
# 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 {
|
||||
echo "Cleaning up"
|
||||
rm /tmp/.X1-lock
|
||||
rm -f /tmp/.X1-lock
|
||||
|
||||
kill $XVFB_PID
|
||||
kill $FLUXBOX_PID
|
||||
kill $VNC_PID
|
||||
kill $XVFB_PID 2>/dev/null
|
||||
kill $FLUXBOX_PID 2>/dev/null
|
||||
kill $VNC_PID 2>/dev/null
|
||||
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
|
||||
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_PID=$!
|
||||
sleep 1 && fluxbox -display ":1.0" &
|
||||
@@ -48,14 +47,12 @@ 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
|
||||
cd $ANDROID_SDK_ROOT/emulator
|
||||
|
||||
CONFIG="/root/.android/avd/x86.avd/config.ini"
|
||||
CONFIG="/root/.android/avd/x86_64.avd/config.ini"
|
||||
CONFIGTMP=${CONFIG}.tmp
|
||||
|
||||
if [ -n "$ANDROID_CONFIG" ];
|
||||
then
|
||||
if [ -n "$ANDROID_CONFIG" ]; then
|
||||
IFS=';' read -ra OPTS <<< "$ANDROID_CONFIG"
|
||||
for OPT in "${OPTS[@]}"; do
|
||||
IFS='=' read -ra KV <<< "$OPT"
|
||||
@@ -69,4 +66,5 @@ 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
|
||||
# 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