grim/scripts/android.sh

98 lines
2.3 KiB
Bash
Raw Normal View History

2023-05-17 21:06:02 +03:00
#!/bin/bash
2024-09-14 01:47:06 +03:00
usage="Usage: android.sh [type] [platform]\n - type: 'build', 'release', ''\n - platform, for build type: 'v7', 'v8', 'x86'"
2023-05-17 21:06:02 +03:00
case $1 in
2024-09-14 01:47:06 +03:00
build|release)
2023-05-17 21:06:02 +03:00
;;
*)
printf "$usage"
2023-05-17 21:06:02 +03:00
exit 1
esac
2024-09-14 01:47:06 +03:00
if [[ $1 == "build" ]]; then
case $2 in
v7|v8|x86)
;;
*)
printf "$usage"
exit 1
esac
fi
2024-06-19 15:40:07 +03:00
# Setup build directory
BASEDIR=$(cd $(dirname $0) && pwd)
cd ${BASEDIR}
cd ..
2024-09-14 01:47:06 +03:00
# Install platforms and tools
rustup target add armv7-linux-androideabi
rustup target add aarch64-linux-android
rustup target add x86_64-linux-android
cargo install cargo-ndk
2024-09-14 01:47:06 +03:00
success=0
2024-09-14 01:47:06 +03:00
### Build native code
function build_lib() {
[[ $1 == "v7" ]] && arch=(armeabi-v7a)
[[ $1 == "v8" ]] && arch=(arm64-v8a)
[[ $1 == "x86" ]] && arch=(x86_64)
2024-09-14 01:47:06 +03:00
sed -i -e 's/"rlib"/"cdylib","rlib"/g' Cargo.toml
2024-07-02 16:40:07 +03:00
2024-09-14 01:47:06 +03:00
# Fix for https://stackoverflow.com/questions/57193895/error-use-of-undeclared-identifier-pthread-mutex-robust-cargo-build-liblmdb-s
export CPPFLAGS="-DMDB_USE_ROBUST=0" && export CFLAGS="-DMDB_USE_ROBUST=0"
cargo ndk -t ${arch} build --profile release-apk
unset CPPFLAGS && unset CFLAGS
cargo ndk -t ${arch} -o android/app/src/main/jniLibs build --profile release-apk
if [ $? -eq 0 ]
then
success=1
fi
2024-07-02 16:40:07 +03:00
2024-09-14 01:47:06 +03:00
sed -i -e 's/"cdylib","rlib"/"rlib"/g' Cargo.toml
}
2024-07-02 16:40:07 +03:00
2024-09-14 01:47:06 +03:00
### Build application
function build_apk() {
version=$(grep -m 1 -Po 'version = "\K[^"]*' Cargo.toml)
2023-05-17 21:06:02 +03:00
cd android
2024-09-14 01:47:06 +03:00
./gradlew clean
2024-09-14 02:06:35 +03:00
./gradlew assembleSignedRelease
2024-06-27 12:30:51 +03:00
2024-09-14 01:47:06 +03:00
# Setup release file name
if [ -n $1 ]; then
rm -rf grim-${version}-$1.apk
2024-09-14 02:06:35 +03:00
mv app/build/outputs/apk/signedRelease/app-signedRelease.apk grim-${version}-$1.apk
2024-09-14 01:47:06 +03:00
fi
2024-06-27 12:30:51 +03:00
2024-09-14 01:47:06 +03:00
cd ..
}
# Remove build targets
rm -rf target/release-apk
rm -rf target/aarch64-linux-android
rm -rf target/x86_64-linux-android
rm -rf target/armv7-linux-androideabi
rm -rf android/app/src/main/jniLibs/*
2024-06-27 12:30:51 +03:00
2024-09-14 01:47:06 +03:00
if [[ $1 == "build" ]]; then
build_lib $2
[ $success -eq 1 ] && build_apk
2024-06-27 12:30:51 +03:00
2024-09-14 01:47:06 +03:00
# Launch application at all connected devices.
for SERIAL in $(adb devices | grep -v List | cut -f 1);
do
2024-06-27 12:30:51 +03:00
adb -s $SERIAL install ${apk_path}
sleep 1s
adb -s $SERIAL shell am start -n mw.gri.android/.MainActivity;
done
2024-09-14 01:47:06 +03:00
else
build_lib "v7"
[ $success -eq 1 ] && build_lib "v8"
[ $success -eq 1 ] && build_apk "arm"
rm -rf android/app/src/main/jniLibs/*
[ $success -eq 1 ] && build_lib "x86"
[ $success -eq 1 ] && build_apk "x86_64"
2023-04-10 16:02:53 +03:00
fi