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

标签 android unity-game-engine crash startup

我正在尝试使用 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/

相关文章:

android - 以编程方式创建 TextView 时如何在下方设置按钮?

unity-game-engine - 如何在运行时操纵地形的形状区域 - Unity 3D

objective-c - 应用核心图像过滤器 - 应用程序崩溃

android - <compatible-screens> 适用于 galaxy note

java - 如何制作某个自定义 ListView 项目,将您发送到某个 Activity ?

java - Google android maps api v2 始终显示标记标题

unity-game-engine - 多个碰撞器的推荐方法

c# - Unity中角色跳跃时如何禁用重力?

iphone - UIAlertView 在未记录的方法上崩溃

c++ - Qt应用程序启动崩溃