41 lines
1.9 KiB
Bash
Executable File
41 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Build + install egtest (egui grid, no textures) on the emulator or phone.
|
|
# ./build.sh # x86_64 (emulator) + install
|
|
# ./build.sh aarch64 # phone + install
|
|
# ./build.sh <arch> no-install
|
|
set -euo pipefail
|
|
cd "$(dirname "$0")/.."
|
|
|
|
export ANDROID_HOME=$HOME/android-sdk
|
|
export ANDROID_NDK_ROOT=$HOME/android-sdk/ndk/27.0.12077973
|
|
export PATH="$HOME/.cargo/bin:$ANDROID_HOME/platform-tools:$PATH"
|
|
|
|
SDK_PLATFORM=android-35
|
|
export ANDROID_JAR=$HOME/android-sdk/platforms/$SDK_PLATFORM/android.jar
|
|
|
|
NDK_BIN=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin
|
|
arg1=${1:-x86_64}
|
|
arg2=${2:-install}
|
|
case $arg1 in
|
|
x86_64) export ANDROID_ABI=x86_64; export CC_x86_64_linux_android=$NDK_BIN/x86_64-linux-android26-clang CXX_x86_64_linux_android=$NDK_BIN/x86_64-linux-android26-clang++ AR_x86_64_linux_android=$NDK_BIN/llvm-ar; target=x86_64-linux-android ;;
|
|
aarch64) export ANDROID_ABI=arm64-v8a; export CC_aarch64_linux_android=$NDK_BIN/aarch64-linux-android26-clang CXX_aarch64_linux_android=$NDK_BIN/aarch64-linux-android26-clang++ AR_aarch64_linux_android=$NDK_BIN/llvm-ar; target=aarch64-linux-android ;;
|
|
*) echo "unknown: $arg1"; exit 1 ;;
|
|
esac
|
|
|
|
# 16KB-page kernel (Pixel 9 Pro) rejects .so with p_align that the segment
|
|
# offsets don't satisfy — pin max-page-size to 4 KB (sltest-verified layout).
|
|
export RUSTFLAGS="-C link-arg=-Wl,-z,max-page-size=4096"
|
|
|
|
export CARGO_APK_RELEASE_KEYSTORE=$HOME/.android/debug.keystore
|
|
export CARGO_APK_RELEASE_KEYSTORE_PASSWORD=android
|
|
|
|
adb=(); [ -n "${ADB_SERIAL:-}" ] && adb=(adb -s "$ADB_SERIAL")
|
|
|
|
cargo apk2 build --release --target "$target" --lib
|
|
apk=target/release/apk/egtest.apk
|
|
echo "APK: $apk ($(du -h "$apk" | cut -f1))"
|
|
if [ "$arg2" = install ] && command -v adb >/dev/null; then
|
|
"${adb[@]}" install -r "$apk"
|
|
"${adb[@]}" shell am start -n wow.gmp.egtest/android.app.NativeActivity || true
|
|
fi
|