initial commit

This commit is contained in:
ppoffice 2020-10-07 17:58:47 -04:00
commit 2f980d457d
12 changed files with 483 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.idea

52
Dockerfile Normal file
View File

@ -0,0 +1,52 @@
FROM ubuntu:18.04
ENV ANDROID_SDK_HOME /opt/android-sdk-linux
ENV ANDROID_SDK_ROOT /opt/android-sdk-linux
ENV ANDROID_HOME /opt/android-sdk-linux
ENV ANDROID_SDK /opt/android-sdk-linux
ENV PATH "${PATH}:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/cmdline-tools/tools/bin:${ANDROID_HOME}/emulator:${ANDROID_HOME}/bin"
ENV DEBIAN_FRONTEND noninteractive
# Install required tools
# Dependencies to execute Android builds
RUN dpkg --add-architecture i386 && apt-get update -yqq && apt-get install -y \
curl \
expect \
git \
libc6:i386 \
libgcc1:i386 \
libncurses5:i386 \
libstdc++6:i386 \
zlib1g:i386 \
openjdk-8-jdk \
wget \
unzip \
vim \
&& apt-get clean
RUN groupadd android && useradd -d /opt/android-sdk-linux -g android android
COPY tools /opt/tools
COPY licenses /opt/licenses
WORKDIR /opt/android-sdk-linux
RUN /opt/tools/entrypoint.sh built-in
RUN /opt/android-sdk-linux/cmdline-tools/tools/bin/sdkmanager "cmdline-tools;latest"
RUN /opt/android-sdk-linux/cmdline-tools/tools/bin/sdkmanager "build-tools;30.0.2"
RUN /opt/android-sdk-linux/cmdline-tools/tools/bin/sdkmanager "platforms;android-30"
RUN /opt/android-sdk-linux/cmdline-tools/tools/bin/sdkmanager "platform-tools"
RUN /opt/android-sdk-linux/cmdline-tools/tools/bin/sdkmanager "emulator"
RUN /opt/android-sdk-linux/cmdline-tools/tools/bin/sdkmanager "system-images;android-30;google_apis;x86_64"
CMD /opt/tools/entrypoint.sh built-in

45
README.md Normal file
View File

@ -0,0 +1,45 @@
# Docker for Android SDK 30
Docker for Android SDK 30 with preinstalled build tools and emulator image
> Edit from [mindrunner/docker-android-sdk](https://github.com/mindrunner/docker-android-sdk)
**Installed Packages**
```bash
# sdkmanager --list
Path | Version | Description | Location
------- | ------- | ------- | -------
build-tools;30.0.2 | 30.0.2 | Android SDK Build-Tools 30.0.2 | build-tools/30.0.2/
cmdline-tools;latest | 2.1 | Android SDK Command-line Tools (latest) | cmdline-tools/latest/
emulator | 30.1.5 | Android Emulator | emulator/
patcher;v4 | 1 | SDK Patch Applier v4 | patcher/v4/
platform-tools | 30.0.4 | Android SDK Platform-Tools | platform-tools/
platforms;android-30 | 3 | Android SDK Platform 30 | platforms/android-30/
system-images;android-30;google_apis;x86_64 | 8 | Google APIs Intel x86 Atom_64 System Image | system-images/android-30/google_apis/x86_64/
```
**Usage**
- Interactive way
```bash
$ docker run -it --rm --privileged androidsdk/android-30:latest bash
# check installed packages
$ sdkmanager --list
# create and run emulator
$ avdmanager create avd -n first_avd --abi google_apis/x86_64 -k "system-images;android-30;google_apis;x86_64"
$ emulator -avd first_avd -no-window -no-audio &
$ adb devices
# You can also run other Android platform tools, which are all added to the PATH environment variable
```
To connect the emulator using `adb` on the docker host machine, start the container with `--net=host`.
You could also use [`scrcpy`](https://github.com/Genymobile/scrcpy) to do a screencast of the emulator.
- Non-interactive way
```bash
# check installed packages
$ docker run -it --rm androidsdk/android-30:latest sdkmanager --list
# list existing emulators
$ docker run -it --rm androidsdk/android-30:latest avdmanager list avd
# You can also run other Android platform tools, which are all added to the PATH environment variable
```

View File

@ -0,0 +1,2 @@
8933bad161af4178b1185d1a37fbf41ea5269c55

View File

@ -0,0 +1,2 @@
84831b9409646a918e30573bab4c9c91346d8abd

View File

@ -0,0 +1,14 @@
#!/usr/bin/expect -f
set timeout 1800
set cmd [lindex $argv 0]
set licenses [lindex $argv 1]
spawn {*}$cmd
expect {
"(y/N)" {
exp_send "y\r"
exp_continue
}
eof
}

44
tools/android-env.sh Normal file
View File

@ -0,0 +1,44 @@
#!/usr/bin/env bash
export ANDROID_HOME=/opt/android-sdk-linux
export ANDROID_SDK_ROOT=${ANDROID_HOME}
export ANDROID_SDK_HOME=${ANDROID_HOME}
export ANDROID_SDK=${ANDROID_HOME}
export PATH=${PATH}:${ANDROID_HOME}/cmdline-tools/tools/bin:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/emulator:${ANDROID_HOME}/bin:
function print_header() {
figlet SBB CFF FFS
figlet welcome to
figlet andep
echo ''
echo ''
echo ''
}
function help() {
figlet "usage:"
echo "update_sdk: Updates the SDK"
echo "andep: Installs one or more android Packets."
echo " -Example: anddep \"platforms;android-26\""
echo "help: Shows this help"
echo ''
echo ''
echo ''
}
function update_sdk() {
android-accept-licenses.sh "sdkmanager --update"
}
function andep() {
if [ -z ${1} ]; then
help
return 1
fi
android-accept-licenses.sh "sdkmanager ${1}"
}
export -f help
export -f update_sdk
export -f andep

64
tools/android-sdk-update.sh Executable file
View File

@ -0,0 +1,64 @@
#!/bin/bash
mkdir -p /opt/android-sdk-linux/bin/
cp /opt/tools/android-env.sh /opt/android-sdk-linux/bin/
source /opt/android-sdk-linux/bin/android-env.sh
built_in_sdk=1
echo $#
echo $1
if [ $# -ge 0 ] && [ "$1" == "lazy-dl" ]
then
echo "Using Lazy Download Flavour"
built_in_sdk=0
elif [ $# -ge 0 ] && [ "$1" == "built-in" ]
then
echo "Using Built-In SDK Flavour"
built_in_sdk=1
else
echo "Please use either built-in or lazy-dl as parameter"
exit 1
fi
cd ${ANDROID_HOME}
echo "Set ANDROID_HOME to ${ANDROID_HOME}"
if [ -f commandlinetools-linux.zip ]
then
echo "SDK Tools already bootstrapped. Skipping initial setup"
else
echo "Bootstrapping SDK-Tools"
wget -q https://dl.google.com/android/repository/commandlinetools-linux-6609375_latest.zip -O commandlinetools-linux.zip
unzip commandlinetools-linux.zip
mkdir cmdline-tools
mv tools cmdline-tools/
fi
echo "Make sure repositories.cfg exists"
mkdir -p ~/.android/
touch ~/.android/repositories.cfg
echo "Copying Licences"
cp -rv /opt/licenses ${ANDROID_HOME}/licenses
echo "Copying Tools"
mkdir -p ${ANDROID_HOME}/bin
cp -v /opt/tools/*.sh ${ANDROID_HOME}/bin
echo "Installing packages"
if [ $built_in_sdk -eq 1 ]
then
android-accept-licenses.sh "sdkmanager --package_file=/opt/tools/package-list-minimal.txt --verbose"
else
android-accept-licenses.sh "sdkmanager --package_file=/opt/tools/package-list.txt --verbose"
fi
echo "Updating SDK"
update_sdk
echo "Accepting Licenses"
android-accept-licenses.sh "sdkmanager --licenses --verbose"

View File

@ -0,0 +1,30 @@
#!/bin/bash
set +e
bootcomplete=""
failcounter=0
timeout=600
sleeptime=10
maxfail=$((timeout / sleeptime))
until [[ "${bootcomplete}" =~ "1" ]]; do
bootcomplete=`adb -e shell getprop dev.bootcomplete 2>&1 &`
if [[ "${bootcomplete}" =~ "" ]]; then
((failcounter += 1))
echo "Waiting for emulator to start"
if [[ ${failcounter} -gt ${maxfail} ]]; then
echo "Timeout ($timeout seconds) reached; failed to start emulator"
while pkill -9 "emulator" >/dev/null 2>&1; do
echo "Killing emulator proces...."
pgrep "emulator"
done
echo "Process terminated"
pgrep "emulator"
exit 1
fi
fi
sleep ${sleeptime}
done
echo "Emulator is ready"

24
tools/entrypoint.sh Executable file
View File

@ -0,0 +1,24 @@
#!/bin/bash
function checkbin() {
type -P su-exec
}
function su_mt_user() {
su android -c '"$0" "$@"' -- "$@"
}
chown android:android /opt/android-sdk-linux
if checkbin; then
exec su-exec android:android /opt/tools/android-sdk-update.sh "$@"
else
su_mt_user /opt/tools/android-sdk-update.sh ${1}
fi

View File

@ -0,0 +1,23 @@
add-ons;addon-google_apis-google-26
add-ons;addon-google_apis-google-27
build-tools;26.0.3
build-tools;27.0.0
cmake;3.6.4111459
emulator
extras;android;gapid;1
extras;android;gapid;3
extras;android;m2repository
extras;google;auto
extras;google;google_play_services
extras;google;instantapps
extras;google;m2repository
extras;google;market_apk_expansion
extras;google;market_licensing
extras;google;simulators
extras;google;webdriver
extras;m2repository;com;android;support;constraint;constraint-layout;1.0.2
extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.2
lldb;2.3
platforms;android-26
platforms;android-27
tools

182
tools/package-list.txt Normal file
View File

@ -0,0 +1,182 @@
add-ons;addon-google_apis-google-15
add-ons;addon-google_apis-google-16
add-ons;addon-google_apis-google-17
add-ons;addon-google_apis-google-18
add-ons;addon-google_apis-google-19
add-ons;addon-google_apis-google-21
add-ons;addon-google_apis-google-22
add-ons;addon-google_apis-google-23
add-ons;addon-google_apis-google-24
add-ons;addon-google_gdk-google-19
build-tools;19.1.0
build-tools;20.0.0
build-tools;21.1.2
build-tools;22.0.1
build-tools;23.0.1
build-tools;23.0.2
build-tools;23.0.3
build-tools;24.0.0
build-tools;24.0.1
build-tools;24.0.2
build-tools;24.0.3
build-tools;25.0.0
build-tools;25.0.1
build-tools;25.0.2
build-tools;25.0.3
build-tools;26.0.0
build-tools;26.0.2
build-tools;26.0.3
build-tools;27.0.0
cmake;3.6.4111459
emulator
extras;android;gapid;1
extras;android;gapid;3
extras;android;m2repository
extras;google;auto
extras;google;google_play_services
extras;google;instantapps
extras;google;m2repository
extras;google;market_apk_expansion
extras;google;market_licensing
extras;google;simulators
extras;google;webdriver
extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0
extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha2
extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha3
extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha4
extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha5
extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha6
extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha7
extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha8
extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha9
extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta1
extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta2
extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta3
extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta4
extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-beta5
extras;m2repository;com;android;support;constraint;constraint-layout;1.0.1
extras;m2repository;com;android;support;constraint;constraint-layout;1.0.2
extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0
extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha2
extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha3
extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha4
extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha5
extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha6
extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha7
extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha8
extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha9
extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta1
extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta2
extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta3
extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta4
extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-beta5
extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.1
extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.2
lldb;2.3
platforms;android-10
platforms;android-11
platforms;android-12
platforms;android-13
platforms;android-14
platforms;android-15
platforms;android-16
platforms;android-17
platforms;android-18
platforms;android-19
platforms;android-20
platforms;android-21
platforms;android-22
platforms;android-23
platforms;android-24
platforms;android-25
platforms;android-26
platforms;android-7
platforms;android-8
platforms;android-9
sources;android-15
sources;android-16
sources;android-17
sources;android-18
sources;android-19
sources;android-20
sources;android-21
sources;android-22
sources;android-23
sources;android-24
sources;android-25
sources;android-26
sources;android-27
system-images;android-10;default;armeabi-v7a
system-images;android-10;default;x86
system-images;android-10;google_apis;armeabi-v7a
system-images;android-10;google_apis;x86
system-images;android-14;default;armeabi-v7a
system-images;android-15;default;armeabi-v7a
system-images;android-15;default;mips
system-images;android-15;default;x86
system-images;android-15;google_apis;armeabi-v7a
system-images;android-15;google_apis;x86
system-images;android-16;default;armeabi-v7a
system-images;android-16;default;mips
system-images;android-16;default;x86
system-images;android-16;google_apis;x86
system-images;android-17;default;armeabi-v7a
system-images;android-17;default;mips
system-images;android-17;default;x86
system-images;android-17;google_apis;armeabi-v7a
system-images;android-17;google_apis;x86
system-images;android-18;default;armeabi-v7a
system-images;android-18;default;x86
system-images;android-18;google_apis;armeabi-v7a
system-images;android-18;google_apis;x86
system-images;android-19;default;armeabi-v7a
system-images;android-19;default;x86
system-images;android-19;google_apis;armeabi-v7a
system-images;android-19;google_apis;x86
system-images;android-21;android-tv;armeabi-v7a
system-images;android-21;android-tv;x86
system-images;android-21;default;armeabi-v7a
system-images;android-21;default;x86
system-images;android-21;default;x86_64
system-images;android-21;google_apis;armeabi-v7a
system-images;android-21;google_apis;x86
system-images;android-21;google_apis;x86_64
system-images;android-22;android-tv;armeabi-v7a
system-images;android-22;android-tv;x86
system-images;android-22;default;armeabi-v7a
system-images;android-22;default;armeabi-v7a
system-images;android-22;default;x86
system-images;android-22;default;x86_64
system-images;android-22;google_apis;armeabi-v7a
system-images;android-22;google_apis;x86
system-images;android-22;google_apis;x86_64
system-images;android-23;android-tv;armeabi-v7a
system-images;android-23;android-tv;x86
system-images;android-23;android-wear;armeabi-v7a
system-images;android-23;android-wear;x86
system-images;android-23;default;x86
system-images;android-23;default;x86_64
system-images;android-23;google_apis;armeabi-v7a
system-images;android-23;google_apis;x86
system-images;android-23;google_apis;x86_64
system-images;android-24;android-tv;x86
system-images;android-24;default;arm64-v8a
system-images;android-24;default;armeabi-v7a
system-images;android-24;default;x86
system-images;android-24;default;x86_64
system-images;android-24;google_apis;arm64-v8a
system-images;android-24;google_apis;armeabi-v7a
system-images;android-24;google_apis_playstore;x86
system-images;android-24;google_apis;x86
system-images;android-24;google_apis;x86_64
system-images;android-25;android-tv;x86
system-images;android-25;android-wear;armeabi-v7a
system-images;android-25;android-wear;x86
system-images;android-25;google_apis;armeabi-v7a
system-images;android-25;google_apis;x86
system-images;android-25;google_apis;x86_64
system-images;android-26;android-tv;x86
system-images;android-26;android-wear;x86
system-images;android-26;google_apis_playstore;x86
system-images;android-26;google_apis;x86
tools