文章目录
说在前面
- 操作系统:windows11
- java版本:23
- android sdk版本:35
- android ndk版本:22
- rust版本:
AndroidStudio安装
- 安装AndroidStudio是为了安装
sdk
、ndk
,现在好像没有直接下载这俩的方式了 - 官网
选择下载对应版本即可,这里选择win64版本 - ndk选上
编译
-
从该仓库下载源代码,这里
-
按照
README
中设置环境变量,由于在windows
中,这样处理:shellset ANDROID_NDK_HOME="path/to/ndk" set ANDROID_HOME="path/to/sdk"
sdk以及ndk路径为上面安装的Android SDK Location,即
shellset ANDROID_HOME=C:\Users\xxx\AppData\Local\Android\Sdk set ANDROID_NDK_HOME=C:\Users\xxx\AppData\Local\Android\Sdk\ndk
-
修改rust目标平台
shellrustup target add aarch64-linux-android
-
安装
ndk rust bindings
shellcargo install cargo-ndk
-
将rust代码编译成动态库
shellcargo ndk -t arm64-v8a -o app/src/main/jniLibs/ build
-
编译apk
由于本文中我们使用的sdk版本为35,因此需要调整下build.gradle文件中相关参数,如下:
其中ndkVersion为C:\Users\xxx\AppData\Local\Android\Sdk\ndk
路径下ndk版本:
sdk版本即上述安装的35
,修改好后进行编译shell./gradlew build
编译好之后可以看到apk文件
安装运行
-
其实在编译完rust动态库之后,后面的流程应该算是标准的android开发流程了,只不过我自身不太熟悉
-
这里在安装调试的时候也可以使用
AndroidStudio
进行操作了 -
如果使用
AS
中提供的虚拟机器,注意要选好机器的ABI类型,因为我们编译的动态库只有一个版本
-
另外,有些机器是不支持wgpu的,所以可能运行直接闪退
-
安装点击运行即可
shell./gradlew installDebug
我这里用的小米,好像整个显示往下偏移了,触摸事件也往下偏移了
问题
-
error[E0635]: unknown feature
proc_macro_span_shrink
需要将
proc-macro2
升级到最新版本,本文中使用如下版本没有问题,参考tomlproc-macro2 = { version = "1.0.86", features=["default", "proc-macro"] }
-
gradle下载过慢
可以替换成国内源,编辑以下文件:
替换为:
shelldistributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.0-bin.zip
-
org.gradle.cache.CacheOpenException: Could not open cp_settings generic class cache for settings file
gradle版本于java版本不兼容,首先查看兼容版本列表,找到java版本对应的gradle版本
我这里用的java23,对应的gradle版本为8.10,所以将该文件中的对应版本改成8.10.x,这里改成了8.10.2:
shelldistributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.10.2-bin.zip
-
java.lang.UnsatisfiedLinkError: dlopen failed: library "libmain.so" not found
虚拟机器的abi版本不对
shell2024-10-03 17:32:10.404 6039-6039 AndroidRuntime co.realfit.agdkegui E FATAL EXCEPTION: main Process: co.realfit.agdkegui, PID: 6039 java.lang.UnsatisfiedLinkError: dlopen failed: library "libmain.so" not found
-
Could not determine the dependencies of task ':app:compileDebugJavaWithJavac'. SDK location not found. Define a valid SDK location with an ANDROID_HOME environment variable or by setting the sdk.dir path in your project's local properties file at 'D:\Code\rust-android-examples-main\agdk-egui\local.properties'.
按照错误提示创建文件如下:
shellsdk.dir=C:\\Users\\xxx\\AppData\\Local\\Android\\Sdk