js
安装编译链
rustup target add aarch64-linux-android armv7-linux-androideabi
aarch64-linux-android 用于输出arm64-v8a的.so文件
armv7-linux-androideabi 用于输出armeabi-v7a的.so文件
您可以通过rustup target list查看所有支持的工具链.
js
### 安装编译工具
`cargo install cargo-ndk`
- `cargo-ndk` 用来编译so文件
js
cargo ndk -t armeabi-v7a -t arm64-v8a build --release
关于cargo ndk
更多用法可以参考: github.com/bbqsrc/carg...
arm64-v8a
平台的so文件输出在target/aarch64-linux-android/release/xxx.so
armeabi-v7a
平台的so文件输出在target/armv7-linux-androideabi/release/xxx.so
参考文章 blog.csdn.net/angcyo/arti...
按照上面的流程 android 的 so文件就可以打包出来了。
提问ai ai给了另一套方式:
js
# armv7 支持
export CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER="$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/darwin-x86_64/bin/armv7a-linux-androideabi24-clang"
export CC_armv7_linux_androideabi="$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/darwin-x86_64/bin/armv7a-linux-androideabi24-clang"
export AR_armv7_linux_androideabi="$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar"
# x86_64 支持
export CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER="$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/darwin-x86_64/bin/x86_64-linux-android24-clang"
export CC_x86_64_linux_android="$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/darwin-x86_64/bin/x86_64-linux-android24-clang"
export AR_x86_64_linux_android="$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar"
在 .bash_profile 或者.zprofile 中添加这个
然后通过 这个命令也可以打出so 文件
js
cargo build --release --target armv7-linux-androideabi
cargo build --release --target x86_64-linux-android
so文件弄出来之后 直接Android 引入就可以了。
对于ios 直接用下面的命令 就可以生成 .a 文件 但是我没引入成功 有大佬引入成功 麻烦评论区指点一下
js
cargo build --release --target aarch64-apple-ios
cargo build --release --target x86_64-apple-ios
lipo -create \
target/aarch64-apple-ios/release/libvideo_compressor.a \
target/x86_64-apple-ios/release/libvideo_compressor.a \
-output ios/libvideo_compressor.a