如何在 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(目前是最新的)。
我真的可以列出我尝试过的所有内容,因为我遇到这个问题已经有一段时间了。
现在我使用的是Unity 2019.2.0f1,但我第一次遇到这个问题是在2019.1.10f1上,我尝试了很多版本,似乎没有任何效果。
我检查了 AndroidManifest 文件是否有任何问题,但没有发现任何问题。
我试图从 Player Settings > Other > Graphics APIs
中删除 OpenGLES3 选项(这对某些人来说似乎是个问题)。
[编辑] 我试图在 Android 清单文件中添加权限行以进行互联网访问(并在 Unity 的播放器设置中对这个选项做了同样的事情)。
如果这可能有帮助,这是我的 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
指令中。
但它们仍然是序列化的,所以我的对象的序列化模型与我构建中的实际对象不同。
我猜这让内存变得一团糟,最终导致我的游戏崩溃。
所以最后,我必须序列化所有这些变量,即使我没有使用它们。这不是太多的数据,以至于我的游戏会变慢或其他什么,但它有点烦人,所以我可能会为这些未使用的变量找到一些解决方法。
我希望这个反馈可以帮助到任何人。
我正在尝试使用 Unity 2019.2 构建一个 android 游戏,使用 IL2CPP 背景和 Android App Bundle 格式。
每当我尝试启动游戏时,它会在出现 Unity 启动画面后立即崩溃。
它实际上在异步加载场景时崩溃,我有一个加载目的的第一个场景,所以当游戏开始时,这个第一个场景打开并在后台加载实际的游戏场景。 我不知道这是否与我的问题有关,但我正在使用 Google Play Services 0.9.64(目前是最新的)。
我真的可以列出我尝试过的所有内容,因为我遇到这个问题已经有一段时间了。
现在我使用的是Unity 2019.2.0f1,但我第一次遇到这个问题是在2019.1.10f1上,我尝试了很多版本,似乎没有任何效果。
我检查了 AndroidManifest 文件是否有任何问题,但没有发现任何问题。
我试图从
Player Settings > Other > Graphics APIs
中删除 OpenGLES3 选项(这对某些人来说似乎是个问题)。[编辑] 我试图在 Android 清单文件中添加权限行以进行互联网访问(并在 Unity 的播放器设置中对这个选项做了同样的事情)。
如果这可能有帮助,这是我的 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
指令中。
但它们仍然是序列化的,所以我的对象的序列化模型与我构建中的实际对象不同。
我猜这让内存变得一团糟,最终导致我的游戏崩溃。
所以最后,我必须序列化所有这些变量,即使我没有使用它们。这不是太多的数据,以至于我的游戏会变慢或其他什么,但它有点烦人,所以我可能会为这些未使用的变量找到一些解决方法。
我希望这个反馈可以帮助到任何人。