mirror of
https://github.com/jedisct1/libsodium.git
synced 2025-10-14 01:58:51 +08:00
Android build scripts update for SDK level (#1443)
* Android build scripts: Changed default SDK level to 21; enabled specifying NDK_PLATFORM environment variable for custom SDK level; misc cleanup of Android build scripts * Update android-aar.sh I forgot to hit save on the script after making this change locally. The script works either way but by setting this value again in android-build.sh people can more easily build arch specific binaries if they want so the export is unnecessary but also rather meaningless.
This commit is contained in:
@@ -2,13 +2,20 @@
|
||||
|
||||
# Create an AAR with libsodium in all combinations of static | shared | minimal | full.
|
||||
#
|
||||
# The x86 static library will not work due to text relocation rules, so static x86 versions are limited to shared libraries.
|
||||
# To simplify linking, library variants have distinct names: sodium, sodium-static, sodium-minimal and sodium-minimal-static.
|
||||
|
||||
SODIUM_VERSION="1.0.21.0"
|
||||
NDK_VERSION=$(grep "Pkg.Revision = " <"${ANDROID_NDK_HOME}/source.properties" | cut -f 2 -d '=' | cut -f 2 -d' ' | cut -f 1 -d'.')
|
||||
DEST_PATH=$(mktemp -d)
|
||||
|
||||
if [ -z "$NDK_PLATFORM" ]; then
|
||||
export NDK_PLATFORM="android-21"
|
||||
echo "Compiling for default platform: [${NDK_PLATFORM}] - That can be changed by setting an NDK_PLATFORM environment variable."
|
||||
fi
|
||||
|
||||
SDK_VERSION=$( echo "$NDK_PLATFORM" | cut -f2 -d"-" )
|
||||
|
||||
|
||||
if which zip >/dev/null; then
|
||||
echo "The 'zip' command is installed."
|
||||
else
|
||||
@@ -28,7 +35,7 @@ make_prefab_json() {
|
||||
|
||||
make_manifest() {
|
||||
echo "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\" package=\"com.android.ndk.thirdparty.sodium\" android:versionCode=\"1\" android:versionName=\"1.0\">
|
||||
<uses-sdk android:minSdkVersion=\"19\" android:targetSdkVersion=\"21\"/>
|
||||
<uses-sdk android:minSdkVersion=\"$SDK_VERSION\" android:targetSdkVersion=\"$SDK_VERSION\"/>
|
||||
</manifest>" >"${1}/AndroidManifest.xml"
|
||||
}
|
||||
|
||||
@@ -60,11 +67,7 @@ make_prefab_structure() {
|
||||
mkdir "$DEST_PATH/${variant}/libs/android.${arch}"
|
||||
mkdir "$DEST_PATH/${variant}/libs/android.${arch}/include"
|
||||
NDK_ARCH="$arch"
|
||||
if [ $arch = "arm64-v8a" ] || [ $arch = "x86_64" ]; then
|
||||
SDK_VERSION="21"
|
||||
else
|
||||
SDK_VERSION="19"
|
||||
fi
|
||||
|
||||
|
||||
make_abi_json "$DEST_PATH/${variant}/libs/android.${arch}"
|
||||
done
|
||||
@@ -118,8 +121,13 @@ zip -9 -r "$AAR_PATH" META-INF prefab AndroidManifest.xml
|
||||
cd .. || exit
|
||||
rm -r "$DEST_PATH"
|
||||
|
||||
echo
|
||||
echo "Congrats you have built an AAR containing libsodium! To use it with
|
||||
|
||||
echo "Congrats you have built an AAR containing libsodium!
|
||||
The build used a min Android SDK of version $SDK_VERSION
|
||||
You can build for a different SDK version by specifying NDK_PLATFORM=\"android-{SDK_VERSION}\"
|
||||
as an environment variable before running this script but the defaults should be fine.
|
||||
|
||||
To use the aar with
|
||||
gradle or cmake (as set by default for Android Studio projects):
|
||||
|
||||
- Edit the app/build.gradle file to add:
|
||||
|
@@ -2,4 +2,4 @@
|
||||
export TARGET_ARCH=armv8-a+crypto
|
||||
export CFLAGS="-Os -march=${TARGET_ARCH}"
|
||||
export LDFLAGS="-Wl,-z,max-page-size=16384"
|
||||
NDK_PLATFORM=android-21 ARCH=arm64 HOST_COMPILER=aarch64-linux-android "$(dirname "$0")/android-build.sh"
|
||||
ARCH=arm64 HOST_COMPILER=aarch64-linux-android "$(dirname "$0")/android-build.sh"
|
||||
|
@@ -1,9 +1,10 @@
|
||||
#! /bin/sh
|
||||
|
||||
if [ -z "$NDK_PLATFORM" ]; then
|
||||
export NDK_PLATFORM="android-21"
|
||||
echo "Compiling for default platform: [${NDK_PLATFORM}] - That can be changed by setting an NDK_PLATFORM environment variable."
|
||||
echo "No NDK_PLATFORM specified, set to value such as \"android-{Min_SDK_VERSION}\" or just use android-aar.sh"
|
||||
exit
|
||||
fi
|
||||
SDK_VERSION=$( echo "$NDK_PLATFORM" | cut -f2 -d"-" )
|
||||
export NDK_PLATFORM_COMPAT="${NDK_PLATFORM_COMPAT:-${NDK_PLATFORM}}"
|
||||
export NDK_API_VERSION="$(echo "$NDK_PLATFORM" | sed 's/^android-//')"
|
||||
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_
|
||||
echo "$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/${TOOLCHAIN_OS_DIR}/${HOST_COMPILER}"
|
||||
|
||||
export PATH="${PATH}:${TOOLCHAIN_DIR}/bin"
|
||||
SDK_VERSION_NUM=$(echo $NDK_PLATFORM | cut -d'-' -f2)
|
||||
export CC=${CC:-"${HOST_COMPILER}${SDK_VERSION_NUM}-clang"}
|
||||
|
||||
export CC=${CC:-"${HOST_COMPILER}${SDK_VERSION}-clang"}
|
||||
|
||||
echo
|
||||
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
|
||||
PROCESSORS=${NPROCESSORS:-3}
|
||||
|
||||
make clean &&
|
||||
make -j${PROCESSORS} install &&
|
||||
make -j"${PROCESSORS}" install &&
|
||||
echo "libsodium has been installed into ${PREFIX}"
|
||||
|
@@ -2,4 +2,4 @@
|
||||
export TARGET_ARCH=westmere
|
||||
export CFLAGS="-Os -march=${TARGET_ARCH}"
|
||||
export LDFLAGS="-Wl,-z,max-page-size=16384"
|
||||
NDK_PLATFORM=android-21 ARCH=x86_64 HOST_COMPILER=x86_64-linux-android "$(dirname "$0")/android-build.sh"
|
||||
ARCH=x86_64 HOST_COMPILER=x86_64-linux-android "$(dirname "$0")/android-build.sh"
|
||||
|
Reference in New Issue
Block a user