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

news2024/11/30 5:50:23

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.coloradmin.cn/o/26287.html

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

相关文章

面试八股 | 计算机网络 | TCP三次握手

CP三次握手和四次挥手是面试题的热门考点,它们分别对应TCP的连接和释放过程,今天我们先来认识一下TCP三次握手过程,以及是否可以使用“两报文握手”建立连接。1、TCP是什么? TCP是面向连接的协议,它基于运输连接来传送…

【附源码】计算机毕业设计JAVA养老机构系统

【附源码】计算机毕业设计JAVA养老机构系统 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: JAVA mybati…

国际物流和跨境电商物流的区别

跨境物流是将货物通过海、陆、空运输从一个国家运输到另一个国家或地区,最终完成交易的目的。国际物流是实现两地对物资进行物理移动的一项国际商品交易或交流活动,从而完成国际商品交易的终目的。二者说法不同而已,本质上两者并没有太大的区…

APAUNet

Title:APAUNet: Axis Projection Attention UNet for Small Target in 3D Medical Segmentation 摘要: 在医学分割中,小目标分割对于诊断至关重要。在本文提出了轴向投影注意力网络,用于三维医学图像分割,特别是小目标。考虑到背…

什么是PCB中的光学定位点,不加可不可以?

什么是PCB中的光学定位点,不加可不可以? 这个问题在我平时的教学答疑出现的频次非常高,很多新手在初次接触这个概念的时候往往分不清楚这个光学定位点作用什么?从而导致他根本不知道什么时候该加,什么时候不加。 今天我…

物流通知:您的快递即刻送达!

“双11”购物狂欢节刚刚过去 “双12”马上就要到啦! 回想双11期间 隔日达、次日达的快递 让买买买的快乐直接翻倍 也大大提升了消费者们 双12的再消费欲望 飞奔的物流背后有什么秘密武器? 来跟着小翼一探究竟! 物流行业的飞速发展给…

Android App开发之利用JNI实现加密和解密操作实战(附源码 简单易懂)

运行有问题或需要源码请点赞关注收藏后评论区留言~~~ 一、JNI实现加密和解密 在实际开发中 JNI主要应用于以下场景 1:对关键业务数据进行加密和解密 Java代码容易遭到破解,JNI加密更加安全 2:底层的网络操作与设备操作 Java作为一门高级…

智慧农业建设方案中的物联网技术

物联网即“物物相联之网”,指通过射频识别(RFID)、红外感应器、全球定位系统、激光扫描器等信息传感设备,按约定的协议,把物与物,人与物进行智能化连接,进行信息交换和通讯,以实现智能化识别、定…

一分钟给大量视频褪色并加马赛克

剪辑视频的时候,想给大量的视频进行褪色处理,并且添加马赛克,可以用什么简单的操作方法吗?今天小编就来给大家安利一个可以快速批量这样进行操作的方法,下面就来看看具体的操作吧! 首先大家在浏览器搜索下载…

【VTK+有限元后处理】节点属性值查询

功能 有限元在后处理过程中,我们如果想获取某一个节点的属性数据值,最直接的方法就是点击这个节点,然后显示其属性数据。 代码实现 首先我们需要使用到VTK的点拾取类vtkPointPicker类。 从需求可知,我们需要与窗口进行交互&am…

STM32开发_利用SPI协议读写SD卡、介绍SD卡SPI时序

一、​ SD卡引脚接口功能介绍 1.1 SD卡引脚 目录 一、​ SD卡引脚接口功能介绍 1.1 SD卡引脚接口图 1.2 SPI方式驱动SD卡介绍 1.3 开发板接口定义 二、MMC卡、SD卡介绍 2.1 SD卡和MMC两者间区别 2.2 SD卡版本说明 2.3 SD卡常用的指令表 三、向SD卡发送命令的步骤介…

【数据结构】堆的拓展延伸 —— 堆排序 和 TopK问题

文章目录前言堆排序TopK问题结语前言 上篇博客,我们实现了堆。那么堆到底有什么应用情景?今天的内容就是堆的两个应用,堆排序和TopK问题。话不多说,我们这就开始。 堆排序 堆排序,是根据堆的结构而设计出的一种排序…

Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks

原文链接:https://aclanthology.org/D19-1410.pdf 概述 问题: BERT和RoBERT模型在进行语义匹配的时候,需要将每个可能的组合都输入到模型中,会带来大量的计算(因为BERT模型对于句子对的输入,使用[SEP]来标记…

C++11、17、20的内存管理-指针、智能指针和内存池从基础到实战(中)

C11、17、20的内存管理-指针、智能指针和内存池从基础到实战(中)第三章 分配器allocator和new重载1、重载operator的new和delete包括数组如果我们访问的是一个数组2、类成员操作符new重载和放置placement_newplacement new(放置内存&#xff…

并发编程(三)原子性(1)

【认识原子性】: 一个小程序认识原子性: package T05_YuanZiXing;import java.util.concurrent.CountDownLatch; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock;public class T00_00_IPlusPlus {private …

Android源码相关面试专题

Android源码相关面试专题 1、Android属性动画实现原理 工作原理:在一定时间间隔内,通过不断对值进行改变,并不断将该值赋给对象的属性,从而实现该对象在该属性上的动画效果。 正在上传…重新上传取消 1)ValueAnimato…

Do Transformers Really Perform Bad for Graph Representation?

Do Transformers Really Perform Bad for Graph Representation? 论文中提出了Graphormer,它建立在标准的Transformer架构之上,并且在广泛地图表示学习任务重获得了优异的成绩。同时,作者也提出了一些简单但是有效的结构编码方法来帮助Grap…

【支付宝生态质量验收与检测技术】

如何验收和检测海量的支付宝生态小程序的质量,是一个很重要的课题。本次分享会简单介绍如何通过平台化的方式在小程序入驻环节进行准入验收,以及使用前端自动化测试技术和智能化算法对小程序质量进行检测。希望能对小程序质量的验收和测试提供参考。讲师…

计算机网络-应用层(应用层概述,网络应用模型(C/S模型,P2P模型),DNS域名协议)

文章目录1. 应用层概述2. 网络应用模型3. 域名系统(DNS)1. 应用层概述 应用层概述:应用层对应用程序的通信提供服务。 应用层协议定义: 应用进程交换的报文类型,请求还是响应各种报文类型的语法,如报文中…

分布式锁-简单入门

状态不是很好,记一下以前学过的分布式锁吧。 样例简介 不谈大概念,就是简单入门以及使用。 为什么要用分布式锁呢? 假设我需要一个定时操作,每天在某个点,我要处理一批数据,要先从数据库中查询出来&…