【unity2021-2023打包安卓工程】踩坑记录

这篇具有很好参考价值的文章主要介绍了【unity2021-2023打包安卓工程】踩坑记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

踩坑记录

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

项目使用的是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
然后在
【unity2021-2023打包安卓工程】踩坑记录,unity,androidstudio,java,android
上图的位置去掉勾勾,选择你安装好的jdk11的路径
后面的sdk和ndk,gradle都是一样的道理,当然你可以先用默认的打包看看有没有问题,有的话再去下载我上面说的sdk和ndk版本,然后在上图修改对应的路径
到这里应该就能正常打包了
为什么说可以先试一下官方默认给你的环境路径去打包呢,因为这个2023可能太新了,官方还没有适配还是什么的,后面可能就发现了这个问题,指不定后面的你们去打包的时候他已经适配好了呢是吧?
打包的设置
我使用的是il2cpp的打包模式,mono的还没试过,不过估计比il2cpp简单很多
记得在playersettings里确定下面两个都勾上了
【unity2021-2023打包安卓工程】踩坑记录,unity,androidstudio,java,android
然后unity的工作就基本结束了

Windows10 SDK

在unity工程集成到Androidstudio之前还需要确保一个工具已经准备好了
就是window10 SDK
这个可以在vs installer里点击修改
【unity2021-2023打包安卓工程】踩坑记录,unity,androidstudio,java,android

然后点击
【unity2021-2023打包安卓工程】踩坑记录,unity,androidstudio,java,android
确保你的电脑已经至少又一个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里

第一个需要注意的地方

官方里说的
【unity2021-2023打包安卓工程】踩坑记录,unity,androidstudio,java,android
在setting.gradle里添加框框里的内容的需要修改
我使用的Androidstudio2022
需要把框框里的内容放到项目根目录下的build.gradle里

第二个需要注意的地方

下图框框里的路径你记得改成你的unitylibrary的路径,不要直接复制粘贴,我就是直接复制粘贴了,sync半天都没识别到unitylibrary…
【unity2021-2023打包安卓工程】踩坑记录,unity,androidstudio,java,android

第三个需要注意的地方

Androidstudio 2022版本好提示你包名的设置已经更换了新的规则,需要进行修改
在主模板里的builder.gradle添加这个
【unity2021-2023打包安卓工程】踩坑记录,unity,androidstudio,java,android
不能在AndroidManifest.xml里添加packagename这个字段了,否则会报异常

第四个需要注意的地方

需要在
【unity2021-2023打包安卓工程】踩坑记录,unity,androidstudio,java,android
string.xml文件中添加上面这行代码,否则会弹出recources x00之类的异常
这个是老问题了,之前的版本打包的时候也会又这个问题

第五个需要注意的地方

在项目根目录的local.properties文件里
可以指定一下你的sdk和ndk的路径
不指定的话就在projectsettings里进行选择
Androidstudio2022已经不支持在buidl.gradle的defaultconfig里添加ndk这个关键词了
直接在外面添加ndkversion就可以了
【unity2021-2023打包安卓工程】踩坑记录,unity,androidstudio,java,android

第六个需要注意的

正常的普通项目,上面都解决了的话应该就可以正常打包了
如果项目中用到了阿里的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主模块里配置文件的区别,发现果然是这里的问题
实际说到这里已经很清楚了,后面的我就细说了。
这个问题可以说困扰了我两三年之久,当然实际肯定没这么久的,毕竟中间我也很少关注这个问题以及安卓工程一些打包的知识,不过这个解决的思路我确实受益匪浅,通过比较两者的区别去找到解决问题的关键点,嘛,虽然之前也有尝试过,不过确实也是因为基础太差了,也没人引导

unity2021

关于在Androidstudio打包aar供unity调用的问题

这里只说unity的问题
如果在安卓中调用打好的aar一切正常,放在unity里打包时出现了类似

Android Error:AAPT: error: resource android:attr/colorError not found

这样的问题,大概率是因为unity和你的Androidstudio需要的依赖的版本不一样导致的
这个时候需要去查看Androidstudio里的build.gradle你所添加的插件的依赖版本和unity里的是否一致,不一致的会直接复制Androidstudio里的然后重新打包即可

关于unity调用aar包打包时出现的问题

如果unity需要调用aar包,在打包的时候出现了关于minisdk相关的异常信息,需要比较一下unity里的minisdkversion和aar包里的sdkversion是否一致,不一致的话最好保持一致

关于unity打包成apk出现的问题

问题如下,在assets的plugins的Android里添加了aar包,然后测试打包的时候出现了multiple dex classes之类的字样的异常
在未添加新的aar包之前,直接进行打包是正常的
我的解决思路是

  1. 在网上看了可能是library缓存的问题,于是删掉了然后重新打开unity进行打包,无效
  2. 可能是添加了新的aar包的问题,所以我试着删掉了aar包,重新打包,无效
  3. 而且在第二个的操作之后,即使我想按照原来的项目代码去打包原来的apk也一直在报这个错
  4. 在lunch gradle 里添加了如下代码
    【unity2021-2023打包安卓工程】踩坑记录,unity,androidstudio,java,android 无效
  5. 我试着先不打包apk,打包成安卓工程然后导入到as里面,然后再进行打包,发现是OK的,所以问题就出在unity的laugh gradle里面
  6. 可能是gradle和jdk和sdk和ndk之间版本不同的导致的,我把unity里的gradle,ndk和sdk个版本都跟Androidstudio里的保持了一致,还是无法进行正常打包,推测可能是jdk的版本问题,但是unity2021只支持jdk8,因此只能另寻他法,无效
  7. 由于打包的方式是mono,所以关于打包build出来的信息都在
    【unity2021-2023打包安卓工程】踩坑记录,unity,androidstudio,java,android
    这里面,这里就是问题所在了,这个build出来的信息和Androidstudio里的build一样的, 如果有新的内容加进来,然后又删掉了,build里偶尔是会出现内容没有清理完全的情况的,因此要删掉这个文件里的下面两个文件夹里的build
    【unity2021-2023打包安卓工程】踩坑记录,unity,androidstudio,java,android

最后是lancher和unitylibaray两个的build 都删掉比较保险,反正build会在你打包的时候自动重新生成的,所以可以放心删除文章来源地址https://www.toymoban.com/news/detail-731337.html

到了这里,关于【unity2021-2023打包安卓工程】踩坑记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【错误记录】Unity 安卓打包报错( Platform Android with graphics API OpenGLES3 is not supported with HDRP )

    在 Unity 编辑器中 , 选择 \\\" 菜单栏 | File | Build Settings \\\" 选项 , 编译 Android Apk 文件 ; 报如下错误 : 报错信息 Platform Android with graphics API OpenGLES3 is not supported with HDRP, use the Vulkan graphics API instead. , HDRP不支持带有图形API OpenGLES3的平台Android,请使用Vulkan图形API代替 ; HDRP 是 高清渲染管

    2024年02月12日
    浏览(41)
  • 【unity安卓】Unity2021导出安卓项目视频无法播放(黑屏、只有声音)

    感谢陈老师解决这个问题! 使用videoplay播放视频导出安卓项目后视频无法播放 1.加入这几个shader 整体所需shader 2.改视频设置 codec 改vp8 transcode勾选 3.修改项目申请读取手机读写权限(非必须)

    2024年02月12日
    浏览(42)
  • Electron+React项目打包踩坑记录

    写下本文的时间是 2024/01/16,搜索了网络上 Electron+React 的打包方式,中间行不通,本文采用的方式是记录本文时 Electron 快速入门(https://www.electronjs.org/zh/docs/latest/tutorial/quick-start)记录的打包方式,最主要的区别在于把 html 文件换成 React 项目打包后 build 文件夹里面的 html 文件了

    2024年01月20日
    浏览(42)
  • 【unity】安卓环境配置(踩坑整理)

    1、模块安装 可能报错:Currently selected scripting backend (IL2CPP) is notinstalled. 解决:部分项目依赖于IL2CPP,及WebGL组件,因此也需要勾上。 2、打开偏好设置 3、设置需要的VS版本 可能报错:CS1617 Invalid option ‘7.1’ for /langversion; must be ISO-1, ISO-2, Default or an integer in range 1 to 6. 解决:

    2023年04月09日
    浏览(35)
  • Unity2023, Unity2022, Unity2021的性能对比(帧率)

    最近由于需要用到Unity最新版的一些功能,比如Spline,比如Foward+渲染,新项目用了Unity2022.3.5版本,但是出包之后,感觉帧率很低。本着好奇的态度,专门写了一个测试场景,分别在Unity2023.1.15,Unity2022.3.5,Unity2021.3.14版本,进行了测试,分别得出帧率: Unity 2023.1.15 -- 97 帧左

    2024年02月07日
    浏览(66)
  • Unity2022.2 版本 Android 打包环境踩坑

    最近项目用到了Unity 2022.2版本,在打Android包时遇到了一些问题:用UnityHub下载的 Android JDK, SDK, NDK 在unity编辑器中都不支持, 原因是当前hub下载的jdk版本是老版本8.0, 而此unity版本需要的是OpenJDK version 11 和 NDK r23b,参考官网:Android 环境设置 - Unity 手册 (unity3d.com) 所以这里

    2024年02月08日
    浏览(69)
  • Unity3d发布android项目,打包apk包流程(unity2021.3.10)

    1、如下图,在安装版本设置里,点击添加模块。如果没有添加模块,证明你安装路径不是目前版本的安装路径,先去设置回来。 2、框选Android Build Support,点击继续,如下图, 3、同意,安装,如下图, 4、等待安装完成即可,如下图。 1、点击菜单栏File→Build Settings,进行编辑

    2023年04月23日
    浏览(55)
  • Unity FBSDK 接入踩坑记录

    问题描述: 打包报错“TempgradleOutunityLibrarysrcmainjavacomunity3dplayerUnityPlayerActivity.java使用或覆盖了已过时的 API.” 1.期间我尝试了将包导出到AndroidStudio中打包,查看bug,导入之后不作任何处理然后打包 作为非专业安卓工程师,我根本就看不懂报错,只知道和“com.android.

    2024年02月07日
    浏览(38)
  • 记录--UNI-APP安卓本地打包详细教程(保姆级)

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 uni-app 官方文档地址 原生开发者支持 1、Android Studio 下载地址:Android Studio官网 OR Android Studio中文社区 2、最新版的HBuilderX 3、App离线SDK下载:最新android平台SDK下载 4、3.1.10版本起需要申请Appkey,申请请参考

    2023年04月09日
    浏览(75)
  • Unity 射线与碰撞范围检测【踩坑记录】

    射线检测在2D和3D的区别比较大 一定要加上对应的Collider组件 对应的函数只检测对应的Collider, Physics.Raycast 是不会检测到Collider 2D的(这个让我有一次debug了好久才发现) 对应API如下 可以使用 Debug.DrawLine(Vector3 origin,Vector3 destination,Color color) 和 Debug.DrawRay(Vector3 origin,Vector3 dir

    2023年04月08日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包