为 UnityPlayerActivity 设置 android:launchmode
Posted
技术标签:
【中文标题】为 UnityPlayerActivity 设置 android:launchmode【英文标题】:Setting android:launchmode for UnityPlayerActivity 【发布时间】:2018-11-25 10:47:10 【问题描述】:我正在 Unity 上构建一个 android 游戏,它有一个用于打开新活动的按钮。
问题是在构建 APK 时,无论我在自定义 AndroidManifest.xml 中添加什么,Unity 都会覆盖它并将 com.unity3d.player.UnityPlayerActivity
的 android:launchMode 设置为 singleTask
。
这会导致以下情况:打开游戏,点击打开 Activity 的按钮,点击主页按钮进入后台,使用图标重新启动应用程序 - 新的 Activity 被破坏,而我看到的是相同的主UnityPlayerActivity(它与原来的相同 - 没有重新创建任何内容)。
为了修复它 - 我必须创建 apk,使用 apktool 对其进行反编译,将 android:launchMode=0
硬编码为 com.unity3d.player.UnityPlayerActivity
(这意味着 standard
而不是 singleTask
),重新编译它,退出它,并且只然后安装它。
这显然是一个完全的 hack,不能用作实际的解决方案。我需要自己想办法设置android:launchMode
。
我该怎么做?
【问题讨论】:
您是否尝试过将项目导出到 android studio? 请发布您的清单 【参考方案1】:调查问题后发现,出现这种行为的原因是Unity在AndroidManifest.xml中将launchMode设置为UnityPlayerActivity为singleTask。
当应用启动一个新 Activity 时,即在 launchMode:singleTask 的实例中——在重新启动时关闭。
无论我们在自定义 AndroidManifest.xml 中设置什么,Unity 都会将其覆盖为 singleTask 并且根据 Unity 官方文档 - Unity 仅支持 launchMode:singleTask。
【讨论】:
以上是关于为 UnityPlayerActivity 设置 android:launchmode的主要内容,如果未能解决你的问题,请参考以下文章
UnityPlayerActivity:java.lang.RuntimeException:无法在未调用 Looper.prepare() 的线程内创建处理程序
Unity接入北斗探针(基于UnityPlayerActivity)丨五编写Unity代码,完成整个项目
Unity接入北斗探针SDK(基于UnityPlayerActivity)丨一效果展示与材料准备
Unity 中的回调侦听器 - 如何从 Android 中的 UnityPlayerActivity 调用脚本文件方法