Unity升级到2017.4.30 支持-64位版本后出包闪退、黑屏等问题及解决方案

升级到Un2017.4.30后出包闪退、黑屏等问题及解决方案

1.dex的问题。 classes2.dex报错

原因:
项目的方法数超过65536 multidex多

方案
1.首先在 defau Config里面添加 multi DexEnabled true
2.如果项目中用到 android就在依赖里面添加 implementation android. multidex: multidex:20.1
如果项目中不使用 Android就添加这个依赖 implementation 'com. android. support: multidex:10.3

2.android. content.res. ResourcesNotFound Exception: String resource ID#0x0运行app闪退报这样的错误

原因:
因为项目升级有一些Unty新依赖的res文件没有拷贝到 Android Studio项目工程中,引用时候闪退失败

方案:
1首先用Unity打出一个 Android工程,拷贝/src/ main/res文件夹
2对照 Android Studio工程对应目录下的res文件如果缺少就复制过来,如果同名就修改覆盖或者添加等。

3.升级导致的一些sdk不支持64位so文件报错闪退/黑屏等

原因:
旧的jar包如高德定位系统和 easymovietexturel包都是不支持64位的

方案
1.在高德开发平台下载谷歌定位SDK支持包arm64-v8a拷贝到项目的com目录里待打包时导入.so文件
2.对于 EasyMovie Texture不支持64位可以先不管,在代码中注释掉使用的地方即可

4.运行apk黑屏,无法加载obb资源的问题。

原因:
1 Unity项目中 EasyMovieTexture生命周期调用非64位o文件
2 Unity直接打出安卓工程会在 Android Manifest.x中生成一个 unity. build-d的校验码,
但是as工程中是手动修改的 Android Manifest. x没有 unity. bundle-id这个校验码,
因此导致校验码校验失败,导致apk在运行时读取ob包路径出错最终加载失败

方案:
1.找到 MediaPlayerCtrl.cs脚本在运行周期前 return,禁止调用 EasyMovieTexture
非64位的.so文件
2.通过批处理的方式将unty导出的安卓工程中的 Android Manifest. xm文件
拷贝到as工程对应目录下,重新打包测试

dddddddddddddddddddddddd

后来事实证明上面第二步通过批处理方式拷贝Xml到 Android Studio工程中是错误的,
失败了的方法。因为Unity导出的安卓工程是有自动合并各个jar包的AndroidManifest.xml文件
导致里面会有一些比如 android:name,icon之类的值无效
甚至一些序列化文件报错,所以最终复制到 Android Studio中会出问题,另,
Android Studio中的xml是以前配置好的公用的,所以相对稳定。故上述方案失败。
方案:
通过在 Visual Studio中创建一个控制台命令,通过C#的 System. IO对两个xml
(Unty导出安卓工程的xml和 Android Studio中的xml)
进行读写,将 Unity导出的xml的 unity.buid-id校验码拷贝到As中,然后使用批处理命令最终将新的安卓工程打包处理,并测试成功。
这样就最终解决了apk黑屏加载ob文件失败的问题

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值