Unity应用在车机上启动有概率黑屏的解决方案

问题描述

最近将游戏适配到车机上(Android系统),碰到了一个严重bug,启动的时候有概率会遇到黑屏,表现就是全黑,无法进入Unity的场景。

经过查看LogCat日志,也没有任何报错,也没有任何的Unity日志输出。

经过比较正常的时候和非正常的时候的日志,发现正常的时候会有这条日志。

ActivityTaskManager: Displayed com.xxx.xxx/com.unity3d.player.MainActivity: +285ms

其中MainActivity是继承于UnityPlayerActivity的我们自己写的类。

而黑屏的时候没有这条日志,也就是并没有启动成功UnityPlayerActivity,在 UnityPlayerActivity生命周期中写了日志,发现有执行到,但是表现就是黑屏。

排查问题

经过了以下几种方式排查:

  • 删除接入的第三方SDK:黑屏
  • 删除Plugin/Android下的所有代码:黑屏
  • 直接Unity出包:黑屏
  • 删除所有场景,新建了一个新场景:黑屏
  • 升级Unity版本:黑屏
  • 修改targetsdk为30、31、32、33、34:黑屏
  • jdk改为8和11:黑屏
  • 新建一个Unity工程:正常不会黑屏
  • 将新建的工程的ProjectSetting文件覆盖到黑屏的工程:正常不会黑屏

经过对问题的排查,最终定位到了应该是ProjectSetting的某个设置导致的,但是设置那么多,于是继续排查,将空工程的配置一项一项修改为黑屏的设置,最终排查到了这个选项导致的。

解决方案

将Resizable Window勾选上,会有概率黑屏,Unity场景都进不了,Unity的相关日志也没有任何输出。取消勾选"Resizable Window"这样直出apk是没有再碰到黑屏问题了。

但是接入了第三方SDK后,会出现了别的问题,也就是应用尺寸不对了。

经过尝试,修改了AndroidManifest.xml的下面选项,则目前结果正常了。

将主Activity加上android:resizeableActivity="true",这样既可解决。

 上面的应该是对于会改变应用尺寸的系统,可能需要这么操作才会避免黑屏问题,猜测是因为系统的代码有bug导致需要这么处理规避问题,如果你也碰到这个问题,可以进行如上尝试。

总结

如果你在车机上碰到Unity应用有概率黑屏,可以尝试如下设置:

  1. 在PlayerSetting里将Android下的Resizable Window取消勾选,注意是不要勾选
  2. 在AndroidManifest.xml里将主Activity的android:resizeableActivity设置为true

这样可能能解决你们的问题。 

最近更新

  1. TCP协议是安全的吗?

    2024-01-28 02:52:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-28 02:52:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-28 02:52:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-28 02:52:01       20 阅读

热门阅读

  1. KY115 后缀子串排序

    2024-01-28 02:52:01       30 阅读
  2. 【Vue】1-3、Webpack 中的 loader

    2024-01-28 02:52:01       30 阅读
  3. 技术周总结 2024.01.22-01.28

    2024-01-28 02:52:01       39 阅读
  4. 蓝桥杯省一题单

    2024-01-28 02:52:01       35 阅读
  5. python的深浅拷贝

    2024-01-28 02:52:01       34 阅读
  6. HTTP协议(简单知识点)

    2024-01-28 02:52:01       40 阅读
  7. 【js大坑】苹果ios的日期时间兼容问题

    2024-01-28 02:52:01       33 阅读
  8. 《Leetcode》动态规划-求不相邻数的最大和

    2024-01-28 02:52:01       30 阅读