Skip to content

Commit 2202904

Browse files
committed
Android build scripts update for SDK level (#1443)
1 parent 42db957 commit 2202904

File tree

4 files changed

+22
-16
lines changed

4 files changed

+22
-16
lines changed

dist-build/android-aar.sh

100755100644
Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,19 @@
22

33
# Create an AAR with libsodium in all combinations of static | shared | minimal | full.
44
#
5-
# The x86 static library will not work due to text relocation rules, so static x86 versions are limited to shared libraries.
65
# To simplify linking, library variants have distinct names: sodium, sodium-static, sodium-minimal and sodium-minimal-static.
76

87
SODIUM_VERSION="1.0.20.0"
98
NDK_VERSION=$(grep "Pkg.Revision = " <"${ANDROID_NDK_HOME}/source.properties" | cut -f 2 -d '=' | cut -f 2 -d' ' | cut -f 1 -d'.')
109
DEST_PATH=$(mktemp -d)
1110

11+
if [ -z "$NDK_PLATFORM" ]; then
12+
export NDK_PLATFORM="android-21"
13+
echo "Compiling for default platform: [${NDK_PLATFORM}] - That can be changed by setting an NDK_PLATFORM environment variable."
14+
fi
15+
16+
SDK_VERSION=$(echo "$NDK_PLATFORM" | cut -f2 -d"-")
17+
1218
if which zip >/dev/null; then
1319
echo "The 'zip' command is installed."
1420
else
@@ -28,7 +34,7 @@ make_prefab_json() {
2834

2935
make_manifest() {
3036
echo "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\" package=\"com.android.ndk.thirdparty.sodium\" android:versionCode=\"1\" android:versionName=\"1.0\">
31-
<uses-sdk android:minSdkVersion=\"19\" android:targetSdkVersion=\"21\"/>
37+
<uses-sdk android:minSdkVersion=\"$SDK_VERSION\" android:targetSdkVersion=\"$SDK_VERSION\"/>
3238
</manifest>" >"${1}/AndroidManifest.xml"
3339
}
3440

@@ -60,11 +66,6 @@ make_prefab_structure() {
6066
mkdir "$DEST_PATH/${variant}/libs/android.${arch}"
6167
mkdir "$DEST_PATH/${variant}/libs/android.${arch}/include"
6268
NDK_ARCH="$arch"
63-
if [ $arch = "arm64-v8a" ] || [ $arch = "x86_64" ]; then
64-
SDK_VERSION="21"
65-
else
66-
SDK_VERSION="19"
67-
fi
6869

6970
make_abi_json "$DEST_PATH/${variant}/libs/android.${arch}"
7071
done
@@ -118,8 +119,12 @@ zip -9 -r "$AAR_PATH" META-INF prefab AndroidManifest.xml
118119
cd .. || exit
119120
rm -r "$DEST_PATH"
120121

121-
echo
122-
echo "Congrats you have built an AAR containing libsodium! To use it with
122+
echo "Congrats you have built an AAR containing libsodium!
123+
The build used a min Android SDK of version $SDK_VERSION
124+
You can build for a different SDK version by specifying NDK_PLATFORM=\"android-{SDK_VERSION}\"
125+
as an environment variable before running this script but the defaults should be fine.
126+
127+
To use the aar with
123128
gradle or cmake (as set by default for Android Studio projects):
124129
125130
- Edit the app/build.gradle file to add:

dist-build/android-armv8-a.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
export TARGET_ARCH=armv8-a+crypto
33
export CFLAGS="-Os -march=${TARGET_ARCH}"
44
export LDFLAGS="-Wl,-z,max-page-size=16384"
5-
NDK_PLATFORM=android-21 ARCH=arm64 HOST_COMPILER=aarch64-linux-android "$(dirname "$0")/android-build.sh"
5+
ARCH=arm64 HOST_COMPILER=aarch64-linux-android "$(dirname "$0")/android-build.sh"

dist-build/android-build.sh

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
#! /bin/sh
22

33
if [ -z "$NDK_PLATFORM" ]; then
4-
export NDK_PLATFORM="android-21"
5-
echo "Compiling for default platform: [${NDK_PLATFORM}] - That can be changed by setting an NDK_PLATFORM environment variable."
4+
echo "No NDK_PLATFORM specified, set to value such as \"android-{Min_SDK_VERSION}\" or just use android-aar.sh"
5+
exit
66
fi
7+
SDK_VERSION=$(echo "$NDK_PLATFORM" | cut -f2 -d"-")
78
export NDK_PLATFORM_COMPAT="${NDK_PLATFORM_COMPAT:-${NDK_PLATFORM}}"
89
export NDK_API_VERSION="$(echo "$NDK_PLATFORM" | sed 's/^android-//')"
910
export NDK_API_VERSION_COMPAT="$(echo "$NDK_PLATFORM_COMPAT" | sed 's/^android-//')"
@@ -30,8 +31,8 @@ export TOOLCHAIN_DIR="$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/${TOOLCHAIN_OS_
3031
echo "$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/${TOOLCHAIN_OS_DIR}/${HOST_COMPILER}"
3132

3233
export PATH="${PATH}:${TOOLCHAIN_DIR}/bin"
33-
SDK_VERSION_NUM=$(echo $NDK_PLATFORM | cut -d'-' -f2)
34-
export CC=${CC:-"${HOST_COMPILER}${SDK_VERSION_NUM}-clang"}
34+
35+
export CC=${CC:-"${HOST_COMPILER}${SDK_VERSION}-clang"}
3536

3637
echo
3738
echo "Warnings related to headers being present but not usable are due to functions"
@@ -88,5 +89,5 @@ NPROCESSORS=$(getconf NPROCESSORS_ONLN 2>/dev/null || getconf _NPROCESSORS_ONLN
8889
PROCESSORS=${NPROCESSORS:-3}
8990

9091
make clean &&
91-
make -j${PROCESSORS} install &&
92+
make -j"${PROCESSORS}" install &&
9293
echo "libsodium has been installed into ${PREFIX}"

dist-build/android-x86_64.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
export TARGET_ARCH=westmere
33
export CFLAGS="-Os -march=${TARGET_ARCH}"
44
export LDFLAGS="-Wl,-z,max-page-size=16384"
5-
NDK_PLATFORM=android-21 ARCH=x86_64 HOST_COMPILER=x86_64-linux-android "$(dirname "$0")/android-build.sh"
5+
ARCH=x86_64 HOST_COMPILER=x86_64-linux-android "$(dirname "$0")/android-build.sh"

0 commit comments

Comments
 (0)