【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.rhkb.cn/news/438353.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python编写的贪吃蛇小游戏

安装包 pip install pygame完整代码 import pygame import randompygame.init()# 定义颜色 white (255, 255, 255) black (0, 0, 0) red (213, 50, 80) green (0, 255, 0) blue (50, 153, 213)# 定义屏幕大小 dis_width 800 dis_height 600dis pygame.display.set_mo…

探索TOGAF理论的实践应用:企业数字化转型的深度指南

数字化转型的迫切性与路径选择 随着全球化进程和技术革命的加速,企业正面临前所未有的挑战和机遇。数字化转型已成为企业保持竞争力、创新业务模式、优化客户体验的核心手段。然而,企业在实施数字化转型时,往往面临路径不清、技术与业务脱节…

win系统网络重置

重置网络命令:netsh winsock reset 输入winR 调用运行窗口,回车 输入重置网络命令:netsh winsock reset 注意空格

在Stable Diffusion WebUI中安装SadTalker插件时几种错误提示的处理方法

SD中的插件一般安装比较简单,但也有一些插件安装会比较难。比如我在安装SadTalker时,就遇到很多问题,一度放弃了,后来查了一些网上攻略,自己也反复查看日志,终于解决,不吐不快。 一、在Stable …

15分钟学 Python :编程工具 Idea 和 vscode 中配置 Python ( 补充 )

编程工具配置 Python 在 IDE 和 VSCode 中 在编程学习的过程中,选择合适的开发工具至关重要。本文将详细介绍在两种流行的IDE(IntelliJ IDEA 和 Visual Studio Code)中如何配置Python环境,帮助你更高效地进行Python开发。 一、编…

基于SSM的出租车租赁管理系统的设计与实现

文未可获取一份本项目的java源码和数据库参考。 1 选题的背景 现代社会,许多个人、家庭,因为生活、工作方式的改变,对汽车不再希望长期拥有,取而代之的是希望汽车能“召之即…

开源且实用的C#/.NET编程技巧练习宝库(学习,工作,实践指南)

DotNet Exercises介绍 DotNetGuide专栏C#/.NET/.NET Core编程常用语法、算法、技巧、中间件、类库、工作业务实操练习集,配套详细的文章教程讲解,助你快速掌握C#/.NET/.NET Core中各种编程常用语法、算法、技巧、中间件、类库、工作业务实操等等。 GitH…

【Spring Boot 入门二】Spring Boot中的配置文件 - 掌控你的应用设置

一、引言 在上一篇文章中,我们开启了Spring Boot的入门之旅,成功构建了第一个Spring Boot应用。我们从环境搭建开始,详细介绍了JDK的安装以及IDE的选择与配置,然后利用Spring Initializr创建了项目,分析了项目结构&am…

黑马linux笔记(转载)

学习链接 视频链接:黑马程序员新版Linux零基础快速入门到精通 原文链接:黑马程序员新版Linux零基础快速入门到精通——学习笔记 黑马Linux笔记 文章目录 学习链接01初识Linux1.1、操作系统概述1.1.1、硬件和软件1.1.2、操作系统1.1.3、常见操作系统 1.…

SSM人才信息招聘系统-计算机毕业设计源码28084

摘要 本研究旨在基于Java和SSM框架设计并实现一个人才信息招聘系统,旨在提升招聘流程的效率和精准度。通过深入研究Java和SSM框架在Web应用开发中的应用,结合人才招聘领域的需求,构建了一个功能完善、稳定高效的招聘系统。利用SSM框架的优势&…

数据订阅与消费中间件Canal 服务搭建(docker)

MySQL Bin-log开启 进入mysql容器 docker exec -it mysql5.7 bash开启mysql的binlog cd /etc/mysql/mysql.conf.dvi mysqld.cnf #在文件末尾处添加如下配置(如果没有这个文件就创建一个) [mysqld] # 开启 binlog log-binmysql-bin #log-bin/var/lib/mys…

CSP-J模拟赛三补题报告

前言 挂了110pts( ⇑ \Uparrow ⇑ \hspace{14em} 有史以来最大傻逼 T1: 100 p t s \color{green}100pts 100pts T2: 100 p t s → 80 p t s \color{green}100pts\color{yellow}\rightarrow\color{red}80pts 100pts→80pts T3: 100 p t s → 10 p t s \color{gre…

k8s架构,从clusterIP到光电半导体,再从clusterIP到企业管理

clusterIP作为k8s中的服务, 也是其他三个服务的基础 ~]$ kubectl create service clusterip externalname loadbalancer nodeport 客户端的流量到service service分发给pod,pod由控制器自动部署,自动维护 那么问题是service的可用…

【C++前缀和】1895. 最大的幻方|1781

本文涉及的基础知识点 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 LeetCode1895. 最大的幻方 难度分:1781 一个 k x k 的 幻方 指的是一个 k x k 填满整数的方格阵,且每一行、每一列以及两条对角线的和 全部相…

ubuntu 设置静态IP

一、 ip addresssudo nano /etc/netplan/50-cloud-init.yaml 修改前: 修改后: # This file is generated from information provided by the datasource. Changes # to it will not persist across an instance reboot. To disable cloud-inits # ne…

360浏览器时不时打不开csdn

从百度或者csdn的搜索中打开,会发现打不开网页,以前也出现过,只是以为这篇文章被删了,昨天接连多个文章打不开,怀疑的浏览器的问题,复制网址到edge浏览器就打开了 刚刚又出现了,怀疑360会拦截某…

Elasticsearch——数据聚合、数据同步与集群搭建

目录 1.数据聚合1.1.聚合的种类1.2.DSL实现聚合1.2.1.Bucket 聚合语法1.2.2.聚合结果排序1.2.3.限定聚合范围1.2.4.Metric 聚合语法1.2.5.小结 1.3.RestAPI 实现聚合1.3.1.API 语法1.3.2.业务需求1.3.3.业务实现 2.自动补全2.1.拼音分词器2.2.自定义分词器2.3.自动补全查询2.4.…

使用百度文心智能体创建多风格表情包设计助手

文章目录 一、智能定制,个性飞扬二、多元风格,创意无限 百度文心智能体平台为你开启。百度文心智能体平台,创建属于自己的智能体应用。百度文心智能体平台是百度旗下的智能AI平台,集成了先进的自然语言处理技术和人工智能技术&…

C++ STL 初探:打开标准模板库的大门

文章目录 C STL 初探:打开标准模板库的大门前言第一章: 什么是STL?1.1 标准模板库简介1.2 STL的历史背景1.3 STL的组成 第二章: STL的版本与演进2.1 不同的STL版本2.2 STL的影响与重要性 第三章: 为什么学习 STL?3.1 从手动编写到标准化解决方…

C++网络编程之TCP协议

概述 TCP,即传输控制协议,英文全称为Transmission Control Protocol,是互联网协议套件中的核心协议之一。它工作在OSI七层模型的传输层,也工作在TCP/IP四层模型的传输层。TCP协议的主要目的是:在不可靠的网络环境中提供…