如何在 Unity android 版本上修复 "activityStartTrigger: not whiteListed"?

How to fix "activityStartTrigger: not whiteListed" on Unity android builds?

我正在尝试使用 Unity 2019.2 构建一个 android 游戏,使用 IL2CPP 背景和 Android App Bundle 格式。

每当我尝试启动游戏时,它会在出现 Unity 启动画面后立即崩溃。

它实际上在异步加载场景时崩溃,我有一个加载目的的第一个场景,所以当游戏开始时,这个第一个场景打开并在后台加载实际的游戏场景。 我不知道这是否与我的问题有关,但我正在使用 Google Play Services 0.9.64(目前是最新的)。

我真的可以列出我尝试过的所有内容,因为我遇到这个问题已经有一段时间了。

如果这可能有帮助,这是我的 Android 清单的样子:

<?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: not whiteListed" 的事情做了很多研究,但似乎无法在网上找到任何东西。 此外,我没有使用 UnityPlayerActivity 在我的代码中执行任何操作。

如果有人能帮助我,那就太好了,我被这个问题困住了,它阻止了我发布我的游戏。 非常感谢您的关注。

好的...

经过大量的故障排除,我终于找到了这些崩溃的原因,以及如何修复它们。

我附在主要消息上的日志实际上是不完整的。 我从 Android Device Monitor 的 logcat 获得了这些,带有过滤器 "Unity",但还有更多未显示的 Unity 相关日志。

activityStartTrigger 实际上存在于我的大部分构建中,并且不对任何崩溃负责。 有趣的是关于内存泄漏:

Could not allocate memory: System out of memory!

所以现在,为了知道事情发生在哪里,我回到了之前的 git 提交,以找到构建崩溃的地方。

长话短说: 我有几个仅在编辑器中使用的序列化变量(我编写了很多编辑器脚本),并且由于我在构建中不需要这些变量,所以我将它们包装在 #if UNITY_EDITOR #endif 指令中。 但它们仍然是序列化的,所以我的对象的序列化模型与我构建中的实际对象不同。 我猜这让内存变得一团糟,最终导致我的游戏崩溃。

所以最后,我必须序列化所有这些变量,即使我没有使用它们。这不是太多的数据,以至于我的游戏会变慢或其他什么,但它有点烦人,所以我可能会为这些未使用的变量找到一些解决方法。

我希望这个反馈可以帮助到任何人。