mirror of
https://github.com/selfxyz/self.git
synced 2026-01-22 13:08:05 -05:00
76 lines
2.1 KiB
Bash
Executable File
76 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# This is adapted from mopro
|
|
|
|
DEVICE_TYPE="arm64"
|
|
BUILD_MODE="release"
|
|
|
|
# Determine the architecture and folder based on device type
|
|
case $DEVICE_TYPE in
|
|
"x86_64")
|
|
ARCHITECTURE="x86_64-linux-android"
|
|
FOLDER="x86_64"
|
|
;;
|
|
"x86")
|
|
ARCHITECTURE="i686-linux-android"
|
|
FOLDER="x86"
|
|
;;
|
|
"arm")
|
|
ARCHITECTURE="armv7-linux-androideabi"
|
|
FOLDER="armeabi-v7a"
|
|
;;
|
|
"arm64")
|
|
ARCHITECTURE="aarch64-linux-android"
|
|
FOLDER="arm64-v8a"
|
|
;;
|
|
*)
|
|
echo -e "${RED}Error: Invalid device type specified in config: $DEVICE_TYPE${DEFAULT}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# Determine the library directory and build command based on build mode
|
|
case $BUILD_MODE in
|
|
"debug")
|
|
LIB_DIR="debug"
|
|
COMMAND=""
|
|
;;
|
|
"release")
|
|
LIB_DIR="release"
|
|
COMMAND="--release"
|
|
;;
|
|
*)
|
|
echo -e "${RED}Error: Invalid build mode specified in config: $BUILD_MODE${DEFAULT}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
PROJECT_DIR=$(pwd)
|
|
|
|
cd ${PROJECT_DIR}/mopro-ffi
|
|
|
|
echo "[android] Install cargo-ndk"
|
|
cargo install cargo-ndk
|
|
|
|
# Print appropriate message based on device type
|
|
echo "Using $ARCHITECTURE libmopro_ffi.a ($LIB_DIR) static library..."
|
|
echo "This only works on $FOLDER devices!"
|
|
|
|
echo "[android] Build target in $BUILD_MODE mode"
|
|
cargo ndk -t ${ARCHITECTURE} build --lib ${COMMAND}
|
|
|
|
echo "[android] Copy files in mopro-android/Example/jniLibs/"
|
|
for binary in ${PROJECT_DIR}/mopro-ffi/target/*/*/libmopro_ffi.so; do file $binary; done
|
|
|
|
mkdir -p jniLibs/${FOLDER}/ && \
|
|
cp ${PROJECT_DIR}/mopro-ffi/target/${ARCHITECTURE}/${LIB_DIR}/libmopro_ffi.so jniLibs/${FOLDER}/libuniffi_mopro.so
|
|
|
|
echo "[android] Generating Kotlin bindings in $BUILD_MODE mode..."
|
|
cargo run --features=uniffi/cli ${COMMAND} \
|
|
--bin uniffi-bindgen \
|
|
generate src/mopro.udl \
|
|
--language kotlin
|
|
|
|
echo "[android] Copy Kotlin bindings to android app"
|
|
cp -r ${PROJECT_DIR}/mopro-ffi/jniLibs/ ${PROJECT_DIR}/android/app/src/main/jniLibs/
|
|
cp -r ${PROJECT_DIR}/mopro-ffi/src/uniffi/ ${PROJECT_DIR}/android/app/src/main/java/uniffi/ |