summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Fankhauser hiddenalpha.ch2023-12-03 00:29:53 +0100
committerAndreas Fankhauser hiddenalpha.ch2023-12-03 00:29:53 +0100
commitdc9ac9f9af67bd40bd16b1d54dafecd66900be51 (patch)
treeddb0a3407e035f503ce6006a827a99eba3ee7a52
parenta7fae4870f6796f17b044a54a795f1a048604d29 (diff)
downloadUnspecifiedGarbage-dc9ac9f9af67bd40bd16b1d54dafecd66900be51.zip
UnspecifiedGarbage-dc9ac9f9af67bd40bd16b1d54dafecd66900be51.tar.gz
(qemu, android) Try to build a HelloWorld
-rw-r--r--doc/note/qemu/setup-android-env.txt70
1 files changed, 51 insertions, 19 deletions
diff --git a/doc/note/qemu/setup-android-env.txt b/doc/note/qemu/setup-android-env.txt
index 97f8801..e93f2a0 100644
--- a/doc/note/qemu/setup-android-env.txt
+++ b/doc/note/qemu/setup-android-env.txt
@@ -1,38 +1,70 @@
#
# Tools for Android development.
#
-# HINT: Migration to qemu not yet tested.
+# HINT: Since JDK-8 is no longer available, we have to add clutter to
+# apksigner command. Eg:
+# apksigner -J-add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED \
+# -J-add-opens=java.base/sun.security.x509=ALL-UNNAMED \
+# -J-add-opens=java.base/sun.security.pkcs=ALL-UNNAMED
+#
+# Refs:
+# - [Clean Android HelloWorld Tutorial](https://www.hanshq.net/command-line-android.html)
+# - [List of available versions](https://dl.google.com/android/repository/repository-11.xml)
#
set -e
### Made for debian 10 (alias buster)
true \
- && PKGS_TO_ADD="curl unzip openjdk-11-jdk-headless aapt apksigner zipalign" \
- && PKGS_TO_DEL="curl unzip" \
- && PKGINIT="apt-get update" \
- && PKGADD="apt-get install -y --no-install-recommends" \
- && PKGDEL="apt-get purge -y" \
- && PKGCLEAN="apt-get clean" \
- && PLATFORM_VERSION="22" \
- && BUILD_TOOLS_VERSION="22.0.1" \
+ && PKGS_TO_ADD="curl unzip openjdk-17-jdk-headless aapt apksigner zipalign" \
+ && SUDO=sudo \
+ && PKGINIT="$SUDO apt update" \
+ && PKGADD="$SUDO apt install -y --no-install-recommends" \
+ && PKGCLEAN="$SUDO apt clean" \
+ && PLATFORM_VERSION="24" \
+ && BUILD_TOOLS_VERSION="34.0.0" \
&& CMDLINETOOLS_URL="https://dl.google.com/android/repository/commandlinetools-linux-8512546_latest.zip" \
- \
- && export ANDROID_HOME="/usr/lib/android-sdk" \
- && export PATH="$PATH:/usr/lib/android-sdk/build-tools/debian:/usr/lib/android-sdk/cmdline-tools/latest/bin:/usr/lib/android-sdk/build-tools/$BUILD_TOOLS_VERSION" \
+ && BUILD_TOOLS_URL="https://dl.google.com/android/repository/build-tools_r25-linux.zip" \
+ && PLATFORM_URL="https://dl.google.com/android/repository/platform-${PLATFORM_VERSION:?}_r02.zip" \
+ && BUILD_TOOLS_ZIP="$(basename "${BUILD_TOOLS_URL:?}")" \
\
&& $PKGINIT \
&& $PKGADD $PKGS_TO_ADD \
+ && `# Cmdline tools` \
&& (cd /var/tmp && curl -sSLO "${CMDLINETOOLS_URL:?}") \
&& if test -x /tmp/cmdline-tools; then echo >&2 "[ERROR] /tmp/cmdline-tools already exists"; false; fi \
- && (cd /tmp && unzip /var/tmp/$(basename "$CMDLINETOOLS_URL") >/dev/null) \
- && mkdir /usr/lib/android-sdk/cmdline-tools \
- && mkdir /usr/lib/android-sdk/cmdline-tools/latest \
- && mv /tmp/cmdline-tools/* /usr/lib/android-sdk/cmdline-tools/latest/. \
- && yes | sdkmanager --install "platforms;android-${PLATFORM_VERSION:?}" "build-tools;${BUILD_TOOLS_VERSION:?}" \
+ && (cd /tmp && unzip /var/tmp/$(basename "${CMDLINETOOLS_URL:?}") >/dev/null) \
+ && $SUDO mkdir /usr/lib/android-sdk/cmdline-tools \
+ && $SUDO mkdir /usr/lib/android-sdk/cmdline-tools/latest \
+ && (cd /tmp/cmdline-tools && tar --owner=0 --group=0 -c bin lib source.properties) | (cd /usr/lib/android-sdk/cmdline-tools/latest && $SUDO tar x) \
+ && `# Build Tools` \
+ && (cd /var/tmp && curl -sSL "${BUILD_TOOLS_URL:?}" -o "${BUILD_TOOLS_ZIP:?}") \
+ && mkdir "/tmp/${BUILD_TOOLS_ZIP%.*}" \
+ && (cd "/tmp/${BUILD_TOOLS_ZIP%.*}" && unzip "/var/tmp/${BUILD_TOOLS_ZIP:?}") \
+ && (cd "/tmp/${BUILD_TOOLS_ZIP%.*}" && tar --owner=0 --group=0 -c *) \
+ | (cd /usr/lib/android-sdk/build-tools && $SUDO tar x) \
+ && $SUDO find /usr/lib/android-sdk/build-tools -type d -exec chmod 755 {} + \
&& `# Those for some reason are broken (wrong linker) so use the debian variant.` \
- && (cd "/usr/lib/android-sdk/build-tools/${BUILD_TOOLS_VERSION:?}" && rm aapt zipalign) \
- && $PKGDEL $PKGS_TO_DEL \
+ && (cd "/usr/lib/android-sdk/build-tools/android*" && $SUDO rm aapt zipalign) \
+ && `# Platform` \
+ && (cd /var/tmp && curl -sSLO "${PLATFORM_URL:?}") \
+ && if test -x /tmp/android*; then echo >&2 '[ERROR] /tmp/android* already exists'; false; fi \
+ && (cd /tmp && unzip /var/tmp/$(basename "${PLATFORM_URL:?}") >/dev/null) \
+ && $SUDO mkdir /usr/lib/android-sdk/platforms \
+ && (cd /tmp && tar --owner=0 --group=0 -c android-*) | (cd /usr/lib/android-sdk/platforms && $SUDO tar x) \
+ && $SUDO find /usr/lib/android-sdk/platforms/android-* -type d -exec chmod o+rx {} + \
+ && $SUDO find /usr/lib/android-sdk/platforms/android-* -type f -exec chmod o+r {} + \
+ && `# Environ` \
+ && printf >>~/.profile '%s\n' \
+ "PATH=/usr/lib/android-sdk/build-tools/debian:\$PATH" \
+ "PATH=\"$(ls -d /usr/lib/android-sdk/build-tools/android*):\$PATH\"" \
+ "CLASSPATH=/usr/lib/android-sdk/build-tools/android-7.1.1/lib/dx.jar" \
+ "LD_LIBRARY_PATH=/usr/lib/android-sdk/build-tools/android-7.1.1/lib64:\$LD_LIBRARY_PATH" \
+ "export PATH" \
+ "export CLASSPATH" \
+ "export LD_LIBRARY_PATH" \
+ && `# Cleanup` \
&& $PKGCLEAN \
&& rm -rf /tmp/* \
+ && printf '\n Done :)\n\n' \
&& true