我正在尝试使用 Unity 2019.2、使用 IL2CPP 背景和 Android App Bundle 格式构建 Android 游戏。
每当我尝试启动游戏时,它都会在 Unity 启动画面出现后立即崩溃。
异步加载场景时它实际上会崩溃,我有一个用于加载目的的第一个场景,因此当游戏开始时,第一个场景会打开并在后台加载实际的游戏场景。 我不知道这是否与我的问题有关,但我使用的是 Google Play Services 0.9.64(目前是最新版本)。
我真的可以列出我尝试过的所有内容,因为我遇到这个问题已经有一段时间了。
现在我使用的是Unity 2019.2.0f1,但我第一次遇到这个问题是在2019.1.10f1上,我尝试了很多版本,似乎都不起作用。
我检查了 AndroidManifest 文件是否有任何问题,但没有发现任何问题。
我尝试从
播放器设置 > 其他 > 图形 API
中删除 OpenGLES3 选项(这对某些人来说似乎是个问题)。[编辑]我尝试在 Android Manifest 文件中添加用于 Internet 访问的权限行(并在 Unity 的播放器设置中对此选项执行了相同的操作)。
如果这可能有帮助,我的 Android list 如下所示:
<?xml version="1.0" encoding="utf-8"?>
<!-- This file was automatically generated by the Google Play Games plugin for Unity
Do not edit. -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.google.example.games.mainlibproj"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="14" />
<application>
<!-- The space in these forces it to be interpreted as a string vs. int -->
<meta-data android:name="com.google.android.gms.games.APP_ID"
android:value="\u003████████████" />
<!-- Keep track of which plugin is being used -->
<meta-data android:name="com.google.android.gms.games.unityVersion"
android:value="\u0030.9.64" />
<activity android:name="com.google.games.bridge.NativeBridgeActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
</application>
</manifest>
(我更喜欢隐藏 APP_ID 值,以防可能导致安全问题)
这是 LogCat 错误:
E/ActivityTrigger(2337): activityStartTrigger: not whiteListed com.████████████.████████████/com.unity3d.player.UnityPlayerActivity/41
E/ActivityTrigger(2337): activityResumeTrigger: not whiteListed com.████████████.████████████/com.unity3d.player.UnityPlayerActivity/41
E/ActivityTrigger(2337): activityResumeTrigger: not whiteListed com.████████████.████████████/com.unity3d.player.UnityPlayerActivity/41
E/InputDispatcher(2337): channel '3ea1bfc com.████████████.████████████/com.unity3d.player.UnityPlayerActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
我不知道这意味着什么,并且我对“activityStartTrigger:未列入白名单”进行了大量研究,但似乎无法在网上找到任何内容。 另外,我没有在我的代码中使用 UnityPlayerActivity 执行任何操作。
如果有人能帮助我,那就太棒了,我被这个问题困扰了,它阻止了我发布我的游戏。 非常感谢您的关注。
最佳答案
好吧...
经过大量故障排除,我终于找到了这些崩溃的原因以及解决方法。
我附加到主消息中的日志实际上并不完整。 我从 Android Device Monitor 的 logcat 中使用过滤器“Unity”获取了这些日志,但还有更多与 Unity 相关的日志未显示。
activityStartTrigger 实际上存在于我的大多数构建中,并且不会导致任何崩溃。 有趣的是内存泄漏:
Could not allocate memory: System out of memory!
所以现在,为了了解事情发生在哪里,我返回到之前的 git 提交,以查找构建崩溃的位置。
长话短说:
我有几个仅在编辑器中使用的序列化变量(我做了很多编辑器脚本编写),并且由于我在构建中不需要这些变量,所以我将它们包装在 #if UNITY_EDITOR #endif
说明。
但它们仍然是序列化的,因此我的对象的序列化模型与我的构建中的实际对象不同。
我想这会让内存变得困惑并最终导致我的游戏崩溃。
所以最后,我必须序列化所有这些变量,即使我没有使用它们。这些数据并不会导致我的游戏变慢或发生其他什么情况,但它有点烦人,所以我可能会为这些未使用的变量找到一些解决方法。
我希望这个反馈可以帮助任何人。
关于android - 如何修复 Unity android 版本上的 "activityStartTrigger: not whiteListed"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57281334/