android: make installToolchains.sh work again

Google changed their site and the layout of downloaded SDK zips.
Also add a warning to configure if a r2x series NDK version is used, because those aren't supported - they no longer contain GCC, only clang.

Change-Id: I48a42c38c9b657ac6662162a39763aac73ec502a
This commit is contained in:
Nick Feldmann 2024-12-31 14:57:57 +01:00 committed by Solomon Peachy
parent e79996e031
commit f1b53d129f
4 changed files with 37 additions and 40 deletions

View file

@ -3,16 +3,16 @@ application for android.
* Prerequisites * Prerequisites
Download and install the Android SDK[1] and NDK[2], or run installToolchain.sh. Download and install the Android SDK[1] and NDK r10e[2], or run installToolchain.sh.
After you extracted the SDK, you need to run <sdk-dir>/tools/android in order to After you extracted the SDK, you need to run the SDKManager in order to
install the actual platform sdk from the available packages tab (SDK Platform install the actual platform sdk from the available packages tab (SDK Platform
Android 1.5 or above should work). Android 4.4 should work).
In the virtual devices tab you can also setup a emulator. In the virtual devices tab you can also setup a emulator.
Then, make sure you have the ANDROID_SDK_PATH and ANDROID_NDK_PATH (pointing to Then, make sure you have the ANDROID_SDK_PATH and ANDROID_NDK_PATH (pointing to
the each's root directory) environment variables set up, otherwise configure will fail to find the compiler and the each's root directory) environment variables set up, otherwise configure will fail to find the compiler and
compiling the java files will fail. compiling the java files will fail. The installToolchain.sh script will provide reasonable values.
* Build instructions * Build instructions
@ -32,7 +32,5 @@ compiling the java files will fail.
"$ANDROID_SDK_PATH/tools/adb install -r rockbox.apk" "$ANDROID_SDK_PATH/tools/adb install -r rockbox.apk"
[1]: http://developer.android.com/sdk/index.html [1]: https://developer.android.com/studio
[2]: http://developer.android.com/sdk/ndk/index.html [2]: https://github.com/android/ndk/wiki/Unsupported-Downloads
[3]: http://asantoso.wordpress.com/2009/09/15/how-to-build-android-application-package-apk-from-the-command-line-using-the-sdk-tools-continuously-integrated-using-cruisecontrol/
[4]: http://developer.android.com/sdk/installing.html

View file

@ -6,40 +6,43 @@
# it stopped # it stopped
set -e set -e
SDK_DOWNLOAD_URL="http://developer.android.com/sdk/index.html" SDK_DOWNLOAD_URL="https://developer.android.com/studio"
NDK_DOWNLOAD_URL="http://developer.android.com/sdk/ndk/index.html" SDK_DOWNLOAD_KEYWORD="commandlinetools"
NDK_DOWNLOAD_URL="https://github.com/android/ndk/wiki/Unsupported-Downloads"
NDK_DOWNLOAD_KEYWORD="r10e"
find_url() { find_url() {
base_url="$1" base_url="$1"
os="$2" keyword="$2"
wget -q -O - $base_url | grep dl.google.com | sed 's/.*"\(http:\/\/.*\)".*/\1/' | grep $os | grep -v bundle | grep -v .exe # Windows hack os="$3"
wget -q -O - $base_url | grep dl.google.com | sed 's/.*"\(https:\/\/dl.google.com\/.*\.zip\)".*/\1/' | grep $os | grep $keyword | grep -v bundle | grep -v .exe
} }
OS=`uname` OS=`uname`
case $OS in case $OS in
Linux) Linux)
SDK_URL=$(find_url $SDK_DOWNLOAD_URL linux) SDK_URL=$(find_url $SDK_DOWNLOAD_URL $SDK_DOWNLOAD_KEYWORD linux)
NDK_URL=$(find_url $NDK_DOWNLOAD_URL linux) NDK_URL=$(find_url $NDK_DOWNLOAD_URL $NDK_DOWNLOAD_KEYWORD linux)
ANDROID=tools/android ANDROID=cmdline-tools/latest/bin/sdkmanager
;; ;;
Darwin) Darwin)
SDK_URL=$(find_url $SDK_DOWNLOAD_URL mac) SDK_URL=$(find_url $SDK_DOWNLOAD_URL $SDK_DOWNLOAD_KEYWORD mac)
NDK_URL=$(find_url $NDK_DOWNLOAD_URL darwin) NDK_URL=$(find_url $NDK_DOWNLOAD_URL $NDK_DOWNLOAD_KEYWORD darwin)
ANDROID=tools/android ANDROID=cmdline-tools/latest/bin/sdkmanager
;; ;;
CYGWIN*) CYGWIN*)
SDK_URL=$(find_url $SDK_DOWNLOAD_URL windows) SDK_URL=$(find_url $SDK_DOWNLOAD_URL $SDK_DOWNLOAD_KEYWORD windows)
NDK_URL=$(find_url $NDK_DOWNLOAD_URL windows) NDK_URL=$(find_url $NDK_DOWNLOAD_URL $NDK_DOWNLOAD_KEYWORD windows)
ANDROID=tools/android.bat ANDROID=cmdline-tools/latest/bin/sdkmanager.exe
;; ;;
esac esac
prefix="${INSTALL_PREFIX:-$HOME}" prefix="${INSTALL_PREFIX:-$HOME}"
dldir="${DOWNLOAD_DIR:-/tmp}" dldir="${DOWNLOAD_DIR:-/tmp}"
SDK_PATH=$(find $prefix -maxdepth 1 -name "android-sdk-*") SDK_PATH=${ANDROID_HOME:-$(find $prefix -maxdepth 1 -name "android-sdk")}
NDK_PATH=$(find $prefix -maxdepth 1 -name "android-ndk-*") NDK_PATH=$(find $prefix -maxdepth 1 -name "android-ndk-*")
download_and_extract() { download_and_extract() {
@ -52,35 +55,24 @@ download_and_extract() {
fi fi
echo " * Extracting $name..." echo " * Extracting $name..."
case ${local_file} in unzip -qo -d "$prefix" "$local_file"
*.zip)
unzip -qo -d "$prefix" "$local_file"
;;
*.tgz|*.tar.gz)
(cd $prefix; tar -xzf "$local_file")
;;
*.tar.bz2)
(cd $prefix; tar -xjf "$local_file")
;;
*)
echo "Couldn't figure out how to extract $local_file" ! 1>&2
;;
esac
} }
if [ -z "$SDK_PATH" ]; then if [ -z "$SDK_PATH" ]; then
mkdir -p "$prefix/android-sdk/cmdline-tools"
download_and_extract $SDK_URL download_and_extract $SDK_URL
mv "$prefix/cmdline-tools" "$prefix/android-sdk/cmdline-tools/latest"
# OS X doesn't know about realname, use basename instead. # OS X doesn't know about realname, use basename instead.
SDK_PATH=$prefix/$(basename $prefix/android-sdk-*) SDK_PATH=$prefix/$(basename $prefix/android-sdk)
fi fi
if [ -z "$NDK_PATH" ]; then if [ -z "$NDK_PATH" ]; then
download_and_extract $NDK_URL download_and_extract $NDK_URL
NDK_PATH=$prefix/$(basename $prefix/android-ndk-*) NDK_PATH=$prefix/$(basename $prefix/android-ndk-*)
fi fi
if [ -z "$(find $SDK_PATH/platforms -type d -name 'android-*')" ]; then if [ ! -d "$SDK_PATH/platforms/android-19" ] || [ ! -d "$SDK_PATH/build-tools/19.1.0" ]; then
echo " * Installing Android platforms..." echo " * Installing Android platforms..."
$SDK_PATH/$ANDROID update sdk --no-ui --filter platform,platform-tool,tool $SDK_PATH/$ANDROID --install "platforms;android-19" "build-tools;19.1.0"
fi fi
cat <<EOF cat <<EOF

View file

@ -730,6 +730,7 @@ Paul Sauro
Dmitry Prozorov Dmitry Prozorov
Mustafa YILDIZ Mustafa YILDIZ
Lianela Sky Lianela Sky
Nick Feldmann
The libmad team The libmad team
The wavpack team The wavpack team

8
tools/configure vendored
View file

@ -794,11 +794,16 @@ androidcc () {
exit exit
fi fi
if [ -z "$ANDROID_NDK_PATH" ]; then if [ -z "$ANDROID_NDK_PATH" ]; then
echo "ERROR: You need the Android NDK installed (r10e or higher) and have the ANDROID_NDK_PATH" echo "ERROR: You need the Android NDK installed (r10e to r17) and have the ANDROID_NDK_PATH"
echo "environment variable point to the root directory of the Android NDK." echo "environment variable point to the root directory of the Android NDK."
exit exit
fi fi
make_toolchain="${ANDROID_NDK_PATH}/build/tools/make-standalone-toolchain.sh" make_toolchain="${ANDROID_NDK_PATH}/build/tools/make-standalone-toolchain.sh"
if [ ! -f "$make_toolchain" ]; then
echo "ERROR: You need the Android NDK installed (r10e to r17). Please note that"
echo "versions newer than r17 are not supported because they do not contain GCC."
exit
fi
# the prebuilt android NDK only supports x86_64 architecture anyway, so we can take shortcuts # the prebuilt android NDK only supports x86_64 architecture anyway, so we can take shortcuts
buildhost=$(uname | tr "[:upper:]" "[:lower:]")-x86_64 buildhost=$(uname | tr "[:upper:]" "[:lower:]")-x86_64
@ -815,6 +820,7 @@ androidcc () {
ANDROID_PLATFORM_VERSION=$1 ANDROID_PLATFORM_VERSION=$1
GCCOPTS="$GCCOPTS $3" GCCOPTS="$GCCOPTS $3"
gccchoice="4.9" gccchoice="4.9"
rm -rf "${pwd}/android-toolchain" # old toolchain must be removed before running script
# arch dependant stuff # arch dependant stuff
case $ANDROID_ARCH in case $ANDROID_ARCH in
armeabi) armeabi)