type
status
date
summary
tags
category
icon

🔍 问题描述

最近,公司的海外渠道商想要项目的安卓包作为审核包,但是在距离上一次给他们包的这期间,团队因为一些原因升级了Unity的版本。
当我在Android Studio上接完了SDK,将构建后的aar包导入Unity工程,进行功能测试,然后将项目打包放到实机上进行测试时,应用出现了闪退的现象。在打开了Android Studio查看日志后,我发现了下图中的报错。
Unity版本:2021.2.18f1
notion image

💡 解决方法

使用Unity引擎安装路径下的class.jar文件替换掉Android工程中该文件。首先,在Unity Hub中找到当前版本Unity的安装路径。对于我来说,我将Unity安装在了D盘,并且使用的是Il2CPP的方式打包,于是在路径:D:\unity\2021.2.18f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\il2cpp\Development\Classes 下找到class.jar文件,将该文件导入android工程中替换掉原来的class.jar文件。然后通过build project导出aar包,替换掉原来的aar包后解决了这个问题。

📔 总结分析

可以理解为class.jar中包含了Unity与Android交互的桥梁,其中包含了交互所必须的一些重要的接口和类,例如JNIBridge类,UnityPlayer类等(UnityPlayer报错也可以考虑这个原因),具体可以在Android Studio中打开查看。
而每个unity版本对应着一个不同的class.jar。在之前的打包过程中,我使用的是2019版本Unity的class.jar文件,所以打包后无法识别出SwappyDisplayManager 这个类。
 
Unity 笔记 Android SDK接入深入解析C#笔记 C# 2 可空值类型
  • Twikoo
  • Cusdis