目前 Rust 对 iOS 和 Android 平台 Target 都是 Tier 2 和 Tier 3 级别的支持,并且都支持 std 。
最终生成的 libmyrust.so 可以在app/build/rustJniLibs/android/对应的平台目录下找到,如app/build/rustJniLibs/android/arm64-v8a/libmyrust.so 我项目里引入的jni, ndk-rs, android_logger应该也足够一般安卓JNI用了,ndk-rs不够还有直接FFI的ndk-sys 图形渲染的话,我用erupt看了文档是有android部分,vulkan的...
rustup target add aarch64-linux-android # for arm64 rustup target add x86_64-linux-android # for x86_64 Gradle插件 为了方便在Android领域常用的Gradle环境下集成编译Rust代码,可以使用一些非官方的工具。在这里我使用的是mozilla提供的工具:https://github.com/mozilla/rust-android-gradle 参考这个插件的...
After all those steps, the build process fails during android linkage: toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld: error: /Users/pakoito/Rust/RustyAndroid/app/src/main/jni/librust.a: no...
python "$NDK_HOME\build\tools\make_standalone_toolchain.py" --api 30 --arch x86 --install-dir NDK/x86 1. 2. 3. 4. 5. 6. 命令中的--api参数对应Android项目的targetSdk版本,同时需要注意当前NDK支持的最高版本,比如版本21最高30,版本25最高33。
注意,如果你使用 r23c 及以上版本,那么cargo build将会出现以下错误,原因是libgcc.a已经被libunwind.a替代: ld: error: unable to find library -lgcc 1. 所以你最好回退到 r21e,或者直接把libunwind.a复制一份重命名为libgcc.a,它的路径为:\android-ndk-r23c\toolchains\llvm\prebuilt\windows-x86_64\lib64...
需要注意的一点是,rust调用C/C++工具链时使用的链接器不是Android上用的gold链接器,因此需要传递-fuse...
切换到android_demo项目下,创建NDK文件 找到make_standalone_toolchain.py文件,执行以下语句 pythonD:/Android/SDK/ndk-bundle/build/tools/make_standalone_toolchain.py--api26--arch arm64--install-dirNDK/arm64 pythonD:/Android/SDK/ndk-bundle/build/tools/make_standalone_toolchain.py--api26--arch arm...
看得出来,Rust 对 iOS 和 Android 的支持还算可以。 Rust 用于移动开发的几种方式 跨平台组件 一些公司使用 Rust 来开发跨平台组件,即,在 iOS 和 Andriod 之间共享代码。 对于iOS ,Rust 可以直接通过FFi 的方式绑定 C-ABI 来进行交互,可以参考 Mozilla 近期发布的这篇文章来了解如何在 iOS 应用中部署 Rust 库...
4.0 之前的 Android Gradle 插件版本要求 CMake IMPORTED 目标必须包含在 jniLibs 目录中才能将这些目标纳入应用。如果您要从该插件的较低版本进行迁移,可能会遇到如下错误: * What went wrong: Execution failed for task ':app:mergeDebugNativeLibs'. > A failure occurred while executing com.android.build....