【unity2023打包安卓工程】踩坑记录

这里写自定义目录标题

  • 踩坑记录
    • 使用环境
    • Unity的准备工作
    • Windows10 SDK
    • Androidstudio
      • 第一个需要注意的地方
      • 第二个需要注意的地方
      • 第三个需要注意的地方
      • 第四个需要注意的地方
      • 第五个需要注意的地方
      • 第六个需要注意的
    • 其他
      • unity启动缓慢
    • 更新
      • 更新一 2023.9.27

踩坑记录

踩了快一个星期的坑,希望能帮助到有需要的人

项目使用的是unity2019版本,由于很多新的插件和功能都已经不支持2019了,所以升级unity的版本
在升级版本的过程中遇到了很多的问题,因为本身基础较差,加之比较新,网上能找到的解决办法少之又少,当然也存在不希望外露保持技术神秘感的大神…
扯远了,在这里记录一下踩坑的过程以及解决办法

使用环境

Androidstudio 2022.3 - - -最好是比较新的像4.11左右或者一下的就尽量不要用了,老版本在打包的时候会弹出异常,提示某些以前在build.gradle里的关键字已经失效了,要用新的去代替
unity 2023 - - -安卓打包相关的工具
windows10 sdk 10.0.1314 - - - 后面会说是干嘛的
ndk r23b - - - 后面会上传附件
sdk 28及以上- - -后面会上传附件,也可以在as官网里下
gradle 7.6.0 - - - 这个在安卓工程里的gradle-wrapper.properties里可以修改
gradle插件 7.4.1 - - - 这个需要和gradle进行匹配,网上可以根据gradle找到对应的版本 在项目根目录下的build.gradle里

Unity的准备工作

在unityhub下载unity2023 我的是2023.1.12f
下载对应的安卓环境(同事亲测它帮我们下的安卓环境是有问题的,比如unit2023打包安卓至少是jdk11,但是它帮我们下的jdk还是8的)
下载之后选择安卓环境打开项目,然后制作你的项目
写完代码后可以现在unity打包成apk看看能不能正常打包运行
如果要打包的话,需要自己安装jdk11
然后在
在这里插入图片描述
上图的位置去掉勾勾,选择你安装好的jdk11的路径
后面的sdk和ndk,gradle都是一样的道理,当然你可以先用默认的打包看看有没有问题,有的话再去下载我上面说的sdk和ndk版本,然后在上图修改对应的路径
到这里应该就能正常打包了
为什么说可以先试一下官方默认给你的环境路径去打包呢,因为这个2023可能太新了,官方还没有适配还是什么的,后面可能就发现了这个问题,指不定后面的你们去打包的时候他已经适配好了呢是吧?
打包的设置
我使用的是il2cpp的打包模式,mono的还没试过,不过估计比il2cpp简单很多
记得在playersettings里确定下面两个都勾上了
在这里插入图片描述
然后unity的工作就基本结束了

Windows10 SDK

在unity工程集成到Androidstudio之前还需要确保一个工具已经准备好了
就是window10 SDK
这个可以在vs installer里点击修改
在这里插入图片描述

然后点击
在这里插入图片描述
确保你的电脑已经至少又一个Windows10 sdk了,否则在集成之后打包的过程中会出现异常
具体的说就是il2cpp在打包的时候会调用c++这类比较底层的代码,而在Androidstudio中调用的时候会需要用到系统里的c++部分代码,其中的内容就是在这个Windows10 sdk里,如果你没有的话,打包的时候就会提示你error # include <string.h>类似的字样,导致打包失败

Androidstudio

这里的部分比较复杂,我尽量剪短一点说明
因为是在Androidstudio里进行整体打包的,所以这里的打包环境一定要确定是正确的(也就是说每个工具之间的版本一定要是兼容和匹配的)
如果不匹配的话就会出现很多你在网上根本找不到原因和办法的异常,因为它给出的异常信息就少之又少,所以寻找解决办法就是在大海捞针
每个工具之间的版本我在上面已经写了,如果你的工具版本和我的不一样,需要自己去尝试
如果比我低很多的,建议你用我上面推荐的版本,因为版本太低的工具基本上是被淘汰了,其他的工具已经不支持了
比如你的sdk和ndk都是比较新的,但是你的gradle还是老的版本
再具体一点就是sdk是34,nkd是r23b的,但是你的gradle版本还在4.0或者附近的话,在打包的时候就会出现提示你某些xml里的属性不见了,就是因为不兼容的问题导致的
所以如果你遇到了异常但是又弹尽粮绝的话,可以尝试更新工具的版本
在projectsettings里设置你的sdk,ndk以及jdk
然后按照官方给出的unity集成到Androidstudio的流程进行操作

https://github.com/Unity-Technologies/uaal-example/blob/master/docs/android.md

把unity打包出来的安卓工程里的unitylibrary集成到Androidstudio里

第一个需要注意的地方

官方里说的
在这里插入图片描述
在setting.gradle里添加框框里的内容的需要修改
我使用的Androidstudio2022
需要把框框里的内容放到项目根目录下的build.gradle里

第二个需要注意的地方

下图框框里的路径你记得改成你的unitylibrary的路径,不要直接复制粘贴,我就是直接复制粘贴了,sync半天都没识别到unitylibrary…
在这里插入图片描述

第三个需要注意的地方

Androidstudio 2022版本好提示你包名的设置已经更换了新的规则,需要进行修改
在主模板里的builder.gradle添加这个
在这里插入图片描述
不能在AndroidManifest.xml里添加packagename这个字段了,否则会报异常

第四个需要注意的地方

需要在
在这里插入图片描述
string.xml文件中添加上面这行代码,否则会弹出recources x00之类的异常
这个是老问题了,之前的版本打包的时候也会又这个问题

第五个需要注意的地方

在项目根目录的local.properties文件里
可以指定一下你的sdk和ndk的路径
不指定的话就在projectsettings里进行选择
Androidstudio2022已经不支持在buidl.gradle的defaultconfig里添加ndk这个关键词了
直接在外面添加ndkversion就可以了
在这里插入图片描述

第六个需要注意的

正常的普通项目,上面都解决了的话应该就可以正常打包了
如果项目中用到了阿里的arouter插件
在进行打包的时候会提示异常, asm 7之类的,这个问题目前还没有解决,由于时间关系只能先用回2019的旧版本
试试2021的版本可不可以打包成功吧…

其他

unity启动缓慢

(该问题已解决,可往下看)
这个问题之前的版本也有,一直不知道原因,就是单纯的unity集成到Androidstudio之后,进行调用打开,需要等很长的一段时间,这个问题在更新了unity和Androidstudio之后还是会有,如果有大佬知道原因的话务必解一下小弟的困惑
就先记录这么多吧,研究了快一个星期了…
可能还有一点遗漏的,想起来的话会再更新的…
希望可以帮助到有需要的人…

更新

更新一 2023.9.27

unity2023版会出现arouter插件的兼容问题
亲测unity2021版可以正常使用
另外提及一下,关于unity集成到安卓项目中作为一个module,在跳转的时候出现的等待时间过长问题
已经发现了解决的思路以及问题所在
涉及到各方面的因素,这里就只说明解决思路
我们发现,在unity自己打包出来的apk运行是不会出现等待时间过长的情况的,但是为什么集成到安卓工程之后就出现了这个问题呢,很明显是在安卓工程中我们遗漏了一些配置或者说是操作
检查unityi打包出来的unitylibaray我们可以发现
文件里又一个laucher的文件,这个文件就是unity自己写的类似安卓工程里的app这个主模块
抱着试一试的操作我去检查了一下unity自己打包出来的和安卓原生的app主模块里配置文件的区别,发现果然是这里的问题
实际说到这里已经很清楚了,后面的我就细说了。
这个问题可以说困扰了我两三年之久,当然实际肯定没这么久的,毕竟中间我也很少关注这个问题以及安卓工程一些打包的知识,不过这个解决的思路我确实受益匪浅,通过比较两者的区别去找到解决问题的关键点,嘛,虽然之前也有尝试过,不过确实也是因为基础太差了,也没人引导

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/143515.html

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

相关文章

在Vue中通过ElementUI构建前端页面【登录,注册】,在IEDA构建后端实现前后端分离

一.ElementUI组件入门 1.对于ElementUI的理解 是一套基于 Vue.js 的开源UI组件库&#xff0c;提供了丰富的可复用组件&#xff0c;可以帮助开发者快速构建美观、易用的前端界面 2.Element UI 的特点和优势 多样化的组件&#xff1a;Element UI 提供了众多常用的基础组件&#…

全网最牛,Jmeter接口自动化测试从0到1实施步骤(详细整理)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、工具下载 JDK…

uniapp 微信小程序之隐私协议开发

uniapp 微信小程序之隐私协议开发 官网通知&#xff1a;https://developers.weixin.qq.com/miniprogram/dev/framework/user-privacy/PrivacyAuthorize.html 1、配置 __usePrivacyCheck__: true&#xff1b;位置 manifest.json : "mp-weixin":{"__usePrivacyCh…

数据结构:二叉树的基本概念

文章目录 1. 二叉树的定义2. 二叉树的特点3. 特殊二叉树斜树满二叉树完全二叉树 4. 二叉树的性质 1. 二叉树的定义 如果我们猜一个100以内的数字,该怎么猜才能理论最快呢? 第一种方式:从1,2一直猜到100, 反正数字都是100以内,总能猜到的 第二种方式:先猜50,如果比结果小,猜75…

Unity Urp无线延申的网格效果

无线延申的网格 该项目必须是再Urp项目 shader代码实现 Shader "Unlit/infTutorial1" {Properties{_Alpha ("Alpha", Range(0, 0.5)) 0.5}SubShader{Tags{"RenderPipeline""UniversalRenderPipeline""RenderType""…

VMware下的ubuntu虚拟机,实现虚拟机与本地硬盘间的文件互传

本次安装vmware tools工具&#xff0c;以实现二者间的文件互传。 1、打开VMware软件&#xff0c;运行Ubuntu系统虚拟机 安装过程需在ubuntu虚拟机启动的情况下&#xff0c;才能进行安装&#xff1b; 2、安装VMware Tools 在VM主菜单栏中&#xff0c;点击 “虚拟机&#xff0…

Linux ❀ 进程出现process information unavailable时的消除方法

[rootmaster ~]# jps 74963 -- process information unavailable 78678 Jps [rootmaster ~]# cd /tmp/hsperfdata_redhat/ # redhat为启动该java进程的用户ps -ef | grep $pid查找 [rootmaster hsperfdata_redhat]# ll total 32 -rw------- 1 redhat redhat 32768 Sep 27 15:…

使用日志分析工具了解网络情况

日志分析&#xff08;或日志文件分析&#xff09;是检查整个网络中生成的日志数据的过程&#xff0c;日志数据从各种来源生成&#xff0c;包括外围设备、工作站、服务器、应用程序以及其他硬件和软件组件&#xff0c;将它们收集到一个中心位置并进行分析&#xff0c;可以为了解…

深入解析JVM:双亲委派机制的原理与实践

双亲委派机制 引言概述流程工作原理&#xff1a; 优势自定义类加载器实际应用 主页传送门&#xff1a;&#x1f4c0; 传送 引言 在Java虚拟机&#xff08;JVM&#xff09;中&#xff0c;类加载是一个重要的概念&#xff0c;而双亲委派机制是类加载的核心之一。本文将深入研究双…

写代码生成流程图

我们在写文档&#xff0c;博客的时候&#xff0c;一般都会使用markdown语法&#xff0c;最常见的就是一些github开源项目的README。有时候会去画一些流程图&#xff0c;例如使用process.on或者xmind等第三方网站&#xff0c;然后截图插入到文档中。 今天我们介绍一种使用代码直…

分布式搜索引擎Elasticsearch

一、Elasticsearch介绍 1.Elasticsearch产生背景 大数据量的检索NoSql: not only sql,泛指非关系型的数据库Nginx的7层负载均衡和4层负载均衡2.Elasticsearch是什么 一个基于Lucene的分布式搜索和分析引擎,一个开源的高扩展的分布式全文检索引擎 Elasticsearch使用Java开发…

一次ES检索的性能优化经验记录

优化功能: 统一检索能力&#xff0c;为各服务所调用。 该接口并发压力大&#xff0c;压测效果不理想。 初步2k线程两台压测机预发环境压测结果两pod下为400qps左右&#xff0c;单pod 平均qps200&#xff0c;响应时间在五分钟之后达到了峰值&#xff0c;平响达到几十秒开外。 压…

跨境电商引流之Reddit营销,入门保姆级攻略

在当今竞争激烈的在线市场中&#xff0c;企业不断寻求新的方法来加强其数字营销工作。Reddit 是最受欢迎的社交媒体平台之一&#xff0c;为企业提供了巨大的潜力&#xff0c;可以通过引人入胜且相关的内容来接触目标受众。然而&#xff0c;将 Reddit 用于营销目的需要仔细考虑某…

企业专线成本高?贝锐蒲公英轻松实现财务系统远程访问

在办公及信息系统领域&#xff0c;许多企业纷纷采用金蝶等财务管理软件来提升运营效率。以某食品制造企业为例&#xff0c;该企业总部位于广州&#xff0c;并拥有湖北仙桃工厂、广州从化工厂和湖南平江工厂三大生产基地。为提高管理效率&#xff0c;该企业在广州总部局域网内部…

游戏社区-搭建的目的和意义是什么

在游戏社区中&#xff0c;用户的活跃度指标是至关重要的&#xff0c;因此在必要时&#xff0c;我们会进行指标转化&#xff0c;以丰富的内容形式来促进用户的活跃度&#xff1b;作为一个垂直社区&#xff0c;我们可以通过聚合和培养一批游戏KOL&#xff0c;建立用户之间的紧密联…

成都瀚网科技:抖音上线地方方言自动翻译功能

为了让很多方言的地域历史、文化、习俗能够以短视频的形式生产、传播和保存&#xff0c;解决方言难以被更多用户阅读和理解的问题&#xff0c;平台正式上线推出当地方言自动翻译功能。创作者可以利用该功能&#xff0c;将多个方言视频“一键”转换为普通话字幕供大众观看。 具体…

leetcode 23. 合并 K 个升序链表

2023.9.25 本题要合并k个有序链表&#xff0c;最朴素的方法可以联想到之前做的合并两个有序链表。 用一个for循环遍历lists数组&#xff0c;利用合并两个有序链表的代码&#xff0c;不断合并lists中的链表&#xff0c;最后返回头节点即可。 代码如下&#xff1a; /*** Definit…

vue-cli创建项目、vue项目目录结(运行vue项目)、ES6导入导出语法、vue项目编写规范

vue-cli创建项目、vue项目目录结构、 ES6导入导出语法、vue项目编写规范 1 vue-cli创建项目 1.1 vue-cli 命令行创建项目 1.2 使用vue-cli-ui创建 2 vue项目目录结构 2.1 运行vue项目 2.2 vue项目的目录结构 3 es6导入导出语法 4 vue项目编写规范 4.1 修改项目 4.2 以后…

VC++判断程序是否已经运行;仅运行一次

VC判断程序是否已经运行&#xff1b;仅运行一次 BOOL CClientApp::InitInstance() {...//判断程序是否已经运行&#xff1b;仅运行一次CreateMutex(NULL,true,_T("xxxxx")); //xxxxx&#xff1a;为程序标识码if(GetLastError()ERROR_ALREADY_EXISTS) { AfxMess…