From dc9ac9f9af67bd40bd16b1d54dafecd66900be51 Mon Sep 17 00:00:00 2001 From: Andreas Fankhauser hiddenalpha.ch Date: Sun, 3 Dec 2023 00:29:53 +0100 Subject: (qemu, android) Try to build a HelloWorld --- doc/note/qemu/setup-android-env.txt | 70 +++++++++++++++++++++++++++---------- 1 file 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 -- cgit v1.1