From eb0794a5d8af5b7b370b01c5ae4f7f5f0c14bc0d Mon Sep 17 00:00:00 2001
From: gnzlbg <gonzalobg88@gmail.com>
Date: Thu, 16 May 2019 12:17:37 +0200
Subject: [PATCH] Update Android SDK, NDK (r19c), and API versions
 (arm:24,x86:28)

* Update Android NDK to version r19c
* Update Android API versions to:
  * API 24 on arm and aarch64 targets
  * API 28 on x86 and x86_64 targets
* Unified headers were removed in NDK 16
* Refactor the NDK and SDK installation scripts
* OpenJDK version 8 must be kept: it appears that
  the Android tools do not work with more modern OpenJDK
  versions.
---
 ci/android-install-ndk.sh                  | 31 ++++++++++-----
 ci/android-install-sdk.sh                  | 44 +++++++++++++---------
 ci/docker/aarch64-linux-android/Dockerfile |  2 +-
 ci/docker/arm-linux-androideabi/Dockerfile |  2 +-
 ci/docker/i686-linux-android/Dockerfile    |  2 +-
 5 files changed, 52 insertions(+), 29 deletions(-)

diff --git a/ci/android-install-ndk.sh b/ci/android-install-ndk.sh
index 54f7b2ef..90c9747c 100644
--- a/ci/android-install-ndk.sh
+++ b/ci/android-install-ndk.sh
@@ -11,27 +11,40 @@
 
 set -ex
 
-curl --retry 10 -O https://dl.google.com/android/repository/android-ndk-r15b-linux-x86_64.zip
-unzip -q android-ndk-r15b-linux-x86_64.zip
+NDK=android-ndk-r19c
+curl --retry 10 -O https://dl.google.com/android/repository/${NDK}-linux-x86_64.zip
+unzip -q ${NDK}-linux-x86_64.zip
 
 case "$1" in
+  arm)
+    arch=arm
+    api=24
+    ;;
+  armv7)
+    arch=arm
+    api=24
+    ;;
   aarch64)
     arch=arm64
+    api=24
     ;;
-
   i686)
     arch=x86
+    api=28
+    ;;
+  x86_64)
+    arch=x86_64
+    api=28
     ;;
-
   *)
-    arch=$1
+    echo "invalid arch: $1"
+    exit 1
     ;;
 esac;
 
-android-ndk-r15b/build/tools/make_standalone_toolchain.py \
-        --unified-headers \
+${NDK}/build/tools/make_standalone_toolchain.py \
         --install-dir "/android/ndk-${1}" \
         --arch "${arch}" \
-        --api 24
+        --api ${api}
 
-rm -rf ./android-ndk-r15b-linux-x86_64.zip ./android-ndk-r15b
+rm -rf ./${NDK}-linux-x86_64.zip ./${NDK}
diff --git a/ci/android-install-sdk.sh b/ci/android-install-sdk.sh
index e011cfc3..fe28d434 100644
--- a/ci/android-install-sdk.sh
+++ b/ci/android-install-sdk.sh
@@ -18,46 +18,56 @@ set -ex
 # located in https://github.com/appunite/docker by just wrapping it in a script
 # which apparently magically accepts the licenses.
 
+SDK=4333796
 mkdir sdk
-curl --retry 10 https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip -O
-unzip -d sdk sdk-tools-linux-3859397.zip
+curl --retry 10 https://dl.google.com/android/repository/sdk-tools-linux-${SDK}.zip -O
+unzip -q -d sdk sdk-tools-linux-${SDK}.zip
 
 case "$1" in
   arm | armv7)
-    abi=armeabi-v7a
+    api=24
+    image="system-images;android-${api};google_apis;armeabi-v7a"
     ;;
-
   aarch64)
-    abi=arm64-v8a
+    api=24
+    image="system-images;android-${api};google_apis;arm64-v8a"
     ;;
-
   i686)
-    abi=x86
+    api=28
+    image="system-images;android-${api};default;x86"
     ;;
-
   x86_64)
-    abi=x86_64
+    api=28
+    image="system-images;android-${api};default;x86_64"
     ;;
-
   *)
     echo "invalid arch: $1"
     exit 1
     ;;
 esac;
 
-# See: https://stackoverflow.com/a/51644855/1422197
-export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
+# Try to fix warning about missing file.
+# See https://askubuntu.com/a/1078784
+mkdir -p /root/.android/
+echo '### User Sources for Android SDK Manager' >> /root/.android/repositories.cfg
+echo '#Fri Nov 03 10:11:27 CET 2017 count=0' >> /root/.android/repositories.cfg
+
+# Print all available packages
+# yes | ./sdk/tools/bin/sdkmanager --list --verbose
 
 # --no_https avoids
-     # javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found
-yes | ./sdk/tools/bin/sdkmanager --licenses --no_https
+# javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found
+#
+# | grep -v = || true    removes the progress bar output from the sdkmanager
+# which produces an insane amount of output.
+yes | ./sdk/tools/bin/sdkmanager --licenses --no_https | grep -v = || true
 yes | ./sdk/tools/bin/sdkmanager --no_https \
         "emulator" \
         "platform-tools" \
-        "platforms;android-24" \
-        "system-images;android-24;default;$abi"
+        "platforms;android-${api}" \
+        "${image}" | grep -v = || true
 
 echo "no" |
     ./sdk/tools/bin/avdmanager create avd \
         --name "${1}" \
-        --package "system-images;android-24;default;$abi"
+        --package "${image}" | grep -v = || true
diff --git a/ci/docker/aarch64-linux-android/Dockerfile b/ci/docker/aarch64-linux-android/Dockerfile
index 14584237..6751dd93 100644
--- a/ci/docker/aarch64-linux-android/Dockerfile
+++ b/ci/docker/aarch64-linux-android/Dockerfile
@@ -9,7 +9,7 @@ RUN dpkg --add-architecture i386 && \
   python \
   unzip \
   expect \
-  openjdk-11-jre \
+  openjdk-8-jre \
   libstdc++6:i386 \
   libpulse0 \
   gcc \
diff --git a/ci/docker/arm-linux-androideabi/Dockerfile b/ci/docker/arm-linux-androideabi/Dockerfile
index acc784e7..544d1676 100644
--- a/ci/docker/arm-linux-androideabi/Dockerfile
+++ b/ci/docker/arm-linux-androideabi/Dockerfile
@@ -9,7 +9,7 @@ RUN dpkg --add-architecture i386 && \
   python \
   unzip \
   expect \
-  openjdk-11-jre \
+  openjdk-8-jre \
   libstdc++6:i386 \
   libpulse0 \
   gcc \
diff --git a/ci/docker/i686-linux-android/Dockerfile b/ci/docker/i686-linux-android/Dockerfile
index 59ea2d79..54032205 100644
--- a/ci/docker/i686-linux-android/Dockerfile
+++ b/ci/docker/i686-linux-android/Dockerfile
@@ -9,7 +9,7 @@ RUN dpkg --add-architecture i386 && \
   python \
   unzip \
   expect \
-  openjdk-11-jre \
+  openjdk-8-jre \
   libstdc++6:i386 \
   libpulse0 \
   gcc \
-- 
GitLab