【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.mzph.cn/news/89595.shtml

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

相关文章

codesys【虚轴】

1概述&#xff1a;codesys里有3个轴&#xff1a; 自由编码器&#xff0c;虚轴&#xff0c;实轴。 流程&#xff1a;【高速输入&#xff1a;采集AB脉冲】带》【自由编码器】带》【虚轴】带》【实轴】 1虚轴&#xff1a; 用法和实轴一样。 一般用于&#xff0c;一拖多。 2编…

GEO生信数据挖掘(二)下载基因芯片平台文件及注释

检索到目标数据集后&#xff0c;开始数据挖掘&#xff0c;本文以阿尔兹海默症数据集GSE1297为例 目录 下载平台文件 1.AnnotGPL参数改为TRUE,联网下载芯片平台的soft文件。&#xff08;国内网速奇慢经常中断&#xff09; 2.手工去GEO官网下载 转换芯片探针ID为gene name 拓…

u盘初始化后怎么恢复文件?这几步操作帮你找回

随着科技的进步和便携设备的普及&#xff0c;U盘已经成为我们日常工作和生活中不可缺少的存储介质。然而&#xff0c;在使用U盘的过程中&#xff0c;我们可能会遇到各种问题&#xff0c;其中之一就是意外的初始化导致文件丢失。本文将为大家介绍如何在U盘初始化后恢复文件的方法…

Jenkins学习笔记4

配置构建流程&#xff1a; Jenkins任务创建&#xff1a; 1&#xff09;创建新任务&#xff1a; 把这个Accept first connection改成 No Validation。问题得到解决。 说明下&#xff0c;要确认下主分支的名称是master还是main。 构建触发器这块暂时没有需要配置的。 传输文件…

【yolov1】详解yolov1理论 代码

目标检测要解决的3大问题&#xff1a; 1、有没有&#xff1f; 图片中是否有要检测的物体&#xff1f;&#xff08;检测物体&#xff0c;判定前景背景&#xff09; 2、是什么&#xff1f; 这些物体分别是什么&#xff1f;&#xff08;检测到的物体是什么&#xff09; 3、在…

vuereact质检工具(eslint)安装使用总结

1、ESLint ESLint工具主要类似java中的checkStyle和findbugs&#xff0c;是检查代码样式和逻辑规范的工具。 1.1、ESLint安装流程 打开VSCode软件&#xff0c;打开扩展中心&#xff0c;下载ESLint插件 图1.1 点击后面的install按进行安装&#xff0c;如图1.2所示&#xff1…

单元测试

一、什么是单元测试 二、Junit单元测试框架 三、如何使用Junit单元测试框架 package study.StringUtils;public class StringUtil {public static void printNumber(String name){if (namenull){System.out.println ("名字的长度是&#xff1a;0");return;}System.ou…

性能测试监控-java分析工具Arthas

Arthas监控docker中的jvm_ray_my的博客-CSDN博客 Quick Start | arthas arthas是什么 Arthas是阿里巴巴开源的Java诊断工具&#xff0c;它可以帮助开发人员快速、方便地定位和解决Java应用的问题。 Arthas主要包括以下功能&#xff1a; 诊断Java应用中的性能问题&#xff…

天眼查询企业信息API接口

"天眼"一般是指"天眼查"&#xff0c;这是一个提供全国企业信息查询的API接口。天眼查以"天眼"作为用户logo&#xff0c;基于人工智能算法的数据采集和分析技术&#xff0c;为企业和个人提供全量、精准、实时、权威的企业信息查询服务。 天眼查A…

国产5G手机20天销量不及苹果一天,被iPhone15按在地上摩擦

iPhone15的上市销售&#xff0c;最大竞争对手无疑是国产5G手机&#xff0c;如今iPhone15上市首日的销量数据也已经出炉&#xff0c;高达200万台&#xff0c;这比国产5G手机卖20天的销量还要多&#xff0c;iPhone15让国产手机领教了什么叫遥遥领先。 据了解苹果对iPhone15的预期…

第十四届蓝桥杯大赛软件赛决赛 C/C++ 大学 B 组 试题 A: 子 2023

[蓝桥杯 2023 国 B] 子 2023 试题 A: 子 2023 【问题描述】 小蓝在黑板上连续写下从 1 1 1 到 2023 2023 2023 之间所有的整数&#xff0c;得到了一个数字序列&#xff1a; S 12345678910111213 ⋯ 20222023 S 12345678910111213\cdots 20222023 S12345678910111213⋯2…

[React] React高阶组件(HOC)

文章目录 1.Hoc介绍2.几种包装强化组件的方式2.1 mixin模式2.2 extends继承模式2.3 HOC模式2.4 自定义hooks模式 3.高阶组件产生初衷4.高阶组件使用和编写结构4.1 装饰器模式和函数包裹模式4.2 嵌套HOC 5.两种不同的高阶组件5.1 正向的属性代理5.2 反向的继承 6.如何编写高阶组…

第5章 网络编程

5.1 OSI模型有哪几层?以及各自的作用 难度:★ 重点:★ 白话解析 无它,唯记尔;实在记不住也需要有个印象。 参考答案 OSI(Open System Interconnection):开放式系统互联参考模型。它分为7层,自顶而下分别是:应用层、表示层、会话层、传输层、网络层、数据链路层和物…

【数据结构与算法】 - 时间复杂度和空间复杂度、二分查找、线性查找

数据结构与算法 1. 数据结构的定义2. 二分查找2.1 二分查找的定义2.2 二分查找分析2.3 二分查找实现2.4 二分查找算法图解2.5 二分算法引发的问题2.6 二分算法改良版2.7 二分算法改良版解析2.8 二分算法改良版图解2.9 二分算法改良版注意事项 3. 时间复杂度3.1 时间复杂度的概念…

【c语言中数组和指针的联系】

C语言中的数组和指针之间存在紧密的联系&#xff0c;因为数组名本质上就是指向数组首元素的指针。这种联系使得在处理数组时可以像处理指针一样操作&#xff0c;同时也使得数组和指针可以互相转换。 下面详细说明数组和指针之间的联系&#xff0c;并提供一些示例来演示这种联系…

LeetCode算法二叉树—226. 翻转二叉树

目录 226. 翻转二叉树 代码&#xff1a; 运行结果&#xff1a; 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1]示例 2&#xff1a; 输入…

OpenCV读取图像时按照BGR的顺序HWC排列,PyTorch按照RGB的顺序CHW排列

OpenCV读取RGB图像 在OpenCV中&#xff0c;读取的图片默认是HWC格式&#xff0c;即按照高度、宽度和通道数的顺序排列图像尺寸的格式。我们看最后一个维度是C&#xff0c;因此最小颗粒度是C。 例如&#xff0c;一张形状为2562563的RGB图像&#xff0c;在OpenCV中读取后的格式…

IDEA 启动 java web 老项目

背景&#xff1a;一套 java web 老代码&#xff0c;使用 eclipse 工具开发。内网&#xff0c;无 eclipse 开发工具&#xff0c;只有 IDEA。 代码目录结构如下&#xff1a; demo/.settings/* demo/src/com/demo/controller/* demo/webapp/js/* demo/webapp/jsp/* demo/webapp/M…

MySQL学习笔记18

MySQL的备份与恢复&#xff1a; 制定数据库备份策略进行备份&#xff0c;并且把数据导入到测试环境。 核心技术&#xff1a; 1&#xff09;掌握MySQL的备份工具使用及各自特点&#xff1b; 2&#xff09;熟悉Shell脚本&#xff1b; 3&#xff09;熟悉MySQL数据的导入导出&a…

数据计算-第15届蓝桥杯第一次STEMA测评Scratch真题精选

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥杯真题&#xff0c;这是Scratch蓝桥杯真题解析第154讲。 第15届蓝桥杯第1次STEMA测评已于2023年8月20日落下帷幕&#xff0c;编程题一共有6题&#xff0c;分别如下&a…