unity il2cpp打包安卓打包崩溃原因Unity2020.3 il2cpp.so丢失

news/2024/5/20 2:17:16 标签: android, gradle, unity

Unity2020.3 il2cpp.so

问题:升级unity2020.3后,使用il2cpp方式打Android包,在手机上启动会崩溃,追查崩溃原因是il2cpp.so not found。

解决过程:

il2cpp.so没有?一脸懵逼!记得以前在调用BuildPipeline.BuildPlayer后,会直接在lib目录下生成il2cpp.so,现在怎么没有了呢?

没有什么头绪,能想到的也就:

1、是不是BuildPipeline.BuildPlayer接口参数有了变化?

2、代码上是否编译报错,导致il2cpp.so生成失败?

3、unity2020.3的bug?

4、unity2020.3对il2cpp进行了改动,需要新的使用方式?

这个问题查了2天的时间,对上面列举的原因一一进行了排除尝试。

1、是不是BuildPipeline.BuildPlayer接口参数有了变化?

首先想到的是是否有构建参数可以控制il2cpp.so的生成,因为以前il2cpp.so就是在BuildPlayer的native阶段生成的。

查遍了BuildOptions的所有参数,没有找一个跟il2cpp相关的参数。

2、代码上是否编译报错,导致il2cpp.so生成失败?

打印了BuildPipeline.BuildPlayer的结果BuildReport,没发现任何报错。

3、unity2020.3的bug?

安装了unity2020.3最新版本,打包同样崩溃,想通过切换unity版本来解决的想法破灭。

4、unity2020.3对il2cpp进行了改动,需要新的使用方式?

查看了unity2020.3的官方文档,没有找到有用的相关说明。

新建了一个测试项目,发现点击Build Settings中的export,同样没有生成il2cpp.so。

但是点击build直接生成apk,解包apk发现有il2cpp.so。

到这里算是有点眉目了。

对比自定义Gradle Template模板文件,并没有发现什么不一样的。

这里误导了我,耽误了很久的时间,直到我去对比gradle导出目录的build.gradle文件,发现了特别的东西

unityLibrary/build.gradle文件中,发现了BuildIl2CppTask任务。

到这里,算是找到了真正的原因!原来il2cpp.so是通过BuildIl2CppTask任务生成的。

但是为什么调用BuildPipeline.BuildPlayer,没有在build.gradle中加入BuildIl2CppTask任务呢?未解之谜啊!

不纠结,先解决崩溃的问题,既然发现是unity没有加入BuildIl2CppTask任务,那就让我加入吧。

            // 修改unityLibrary/build.gradle
            string path = gradlePath + "/unityLibrary/build.gradle";
            string str = File.ReadAllText(path);
            // BuildIl2CppTask任务模板文件
            string path2 = gradlePath + "/../Assets/Plugins/Android/il2cppTask.txt";
            string task = File.ReadAllText(path2)

            str += task;

            File.WriteAllText(path, str);

在BuildPipeline.BuildPlayer之后,执行上述代码,实现修改build.gradle文件的目的。


http://www.niftyadmin.cn/n/10727.html

相关文章

马齿苋多糖偶联顺铂复合物/黄连素偶联顺铂化合物/载顺铂mPEg-PGA纳米微球制备方法

小编今天整理了马齿苋多糖偶联顺铂复合物/黄连素偶联顺铂化合物/载顺铂mPEg-PGA纳米微球制备方法,一起来看! 黄连素偶联顺铂化合物制备方法: 以A549/DDP细胞为研究对象,分别加入12 μg/mL的顺铂,浓度为20 μmol/L,40 μmol/L,80 μmol/L的黄连素12 μg/…

2022第8届中国大学生程序设计竞赛CCPC威海站, 签到题7题

文章目录E.Python Will be Faster than CA.DunaiG.Grade 2J.Eat, Sleep, RepeatC.GrassD.SternhalmaI.Dragon Bloodline补题链接:https://codeforces.com/gym/104023 E.Python Will be Faster than C E. Python Will be Faster than C time limit per test1 secon…

微信小程序和H5之间互相跳转、互相传值

最近又开始写小程序了,刚好遇到微信小程序和内嵌 H5 之间来回跳转,来回交互;这里记录一下微信小程序和 H5 之间交互的实现;(我的小程序是通过 un-app 框架来写的,内部代码基本都是 vue) 文章目录…

【python实战】朋友因股票亏了,很惨常愤恨不平,当天我就分析出原因:怎么做到的?(听说关注我的人会暴富)

导语 有温度 有深度 有广度 就等你来关注哦~ 所有文章完整的素材源码都在👇👇 粉丝白嫖源码福利,请移步至CSDN社区或文末公众hao即可免费。 对于大部分股票投资者来说,一年能拿住翻倍的股票就实属不易。一年10倍,甚至…

大数据开发工程师要求高么?有前景么

Python近段时间一直涨势迅猛,在各大编程排行榜中崭露头角,得益于它多功能性和简单易上手的特性,让它可以在很多不同的工作中发挥重大作用。 正因如此,目前几乎所有大中型互联网企业都在使用 Python 完成各种各样的工作&#xff0…

oracle的从入门到精通第一篇(oracle的基本概念与crud)

文章目录概念什么是oracle?什么是sqlplus?oracle几大语言(SQL |DDL|DML|DQL|DCL|TCL)oracle用户相关操作(加锁|解锁|授权|取消授权)oracle当中的数据类型:字符型:数值型:…

深度学习基础--神经网络(4)参数更新策略,梯度法

导数 导数:表示某个瞬间的变化量,公式定义: df(x)dxlimh→0f(xh)−f(x)h(4.4)\frac{df(x)}{dx} lim_{h \to 0}\frac{f(x h)-f(x)}{h} \tag{4.4} dxdf(x)​limh→0​hf(xh)−f(x)​(4.4) 求导的代码实现: import numpy as np i…

【MySQL运行原理篇】底层运行结构

MySQL整体架构图 简略版图 1.1连接管理 一句话:负责客户端连接服务器的部分 网络连接层, 对客户端的连接处理、安全认证、授权等,每个客户端连接都会在服务端拥有一个线程,每个连接发起的查询都会在对应的单独线程中执行。服务器上维护一…