当前位置: 首页 > article >正文

【rust/egui/android】在android中使用egui库

文章目录

  • 说在前面
  • AndroidStudio安装
  • 编译
  • 安装运行
  • 问题

说在前面

  • 操作系统:windows11
  • java版本:23
  • android sdk版本:35
  • android ndk版本:22
  • rust版本:

AndroidStudio安装

  • 安装AndroidStudio是为了安装sdkndk,现在好像没有直接下载这俩的方式了
  • 官网
    在这里插入图片描述
    选择下载对应版本即可,这里选择win64版本
  • ndk选上
    在这里插入图片描述

编译

  • 从该仓库下载源代码,这里
    在这里插入图片描述
  • 按照README中设置环境变量,由于在windows中,这样处理:
    set ANDROID_NDK_HOME="path/to/ndk"
    set ANDROID_HOME="path/to/sdk"
    
    sdk以及ndk路径为上面安装的Android SDK Location,即
    set ANDROID_HOME=C:\Users\xxx\AppData\Local\Android\Sdk
    set ANDROID_NDK_HOME=C:\Users\xxx\AppData\Local\Android\Sdk\ndk
    
  • 修改rust目标平台
    rustup target add aarch64-linux-android
    
  • 安装ndk rust bindings
    cargo install cargo-ndk
    
  • 将rust代码编译成动态库
    cargo 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,修改好后进行编译
    ./gradlew build
    
    编译好之后可以看到apk文件
    在这里插入图片描述

安装运行

  • 其实在编译完rust动态库之后,后面的流程应该算是标准的android开发流程了,只不过我自身不太熟悉
  • 这里在安装调试的时候也可以使用AndroidStudio进行操作了
  • 如果使用AS中提供的虚拟机器,注意要选好机器的ABI类型,因为我们编译的动态库只有一个版本
    在这里插入图片描述
  • 另外,有些机器是不支持wgpu的,所以可能运行直接闪退
  • 安装点击运行即可
    ./gradlew installDebug
    
    我这里用的小米,好像整个显示往下偏移了,触摸事件也往下偏移了
    在这里插入图片描述

问题

  • error[E0635]: unknown feature proc_macro_span_shrink
    需要将proc-macro2升级到最新版本,本文中使用如下版本没有问题,参考

    proc-macro2 = { version = "1.0.86", features=["default", "proc-macro"] }
    
  • gradle下载过慢
    可以替换成国内源,编辑以下文件:
    在这里插入图片描述
    替换为:

    distributionUrl=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:
    在这里插入图片描述

      distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.10.2-bin.zip
    
  • java.lang.UnsatisfiedLinkError: dlopen failed: library “libmain.so” not found
    虚拟机器的abi版本不对

    2024-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’.
    按照错误提示创建文件如下:

    sdk.dir=C:\\Users\\xxx\\AppData\\Local\\Android\\Sdk
    

http://www.kler.cn/news/337584.html

相关文章:

  • python-FILIP/字符串p形编码/数字三角形
  • Linux 缓冲区
  • Go基本数据结构
  • C++ 3D冒险游戏开发案例
  • 如何让算法拥有“记忆”?一文读懂记忆化搜索
  • 【重学 MySQL】五十二、MySQL8 新特性:计算列
  • 成都百洲文化传媒有限公司怎么样可靠不?
  • 机器学习——强化学习与深度强化学习
  • 【客户服务】万亿级智能客服系统架构设计与落地
  • 基于VITA57.1标准的8路SFP+光纤通道数据传输FMC子卡模块
  • 【计算机网络 - 基础问题】每日 3 题(二十九)
  • STM32CUBEIDE FreeRTOS操作教程(六):recursive mutexes递归互斥信号量
  • 【devops】devops-ansible之剧本初出茅庐--搭建rsync和nfs
  • 【JAVA基础】集合类之HashSet的原理及应用
  • Charles安卓抓包环境配置
  • ChatGPT背景下,高职人工智能技术应用专业的人才培养
  • 约数个数约数之和
  • 数字图像处理:边缘检测
  • SpringBoot中使用Redis实现排行榜功能,并考虑到 当用户积分相同时,要求按最后更新时间升序
  • 【移动端】Viewport 视口