2

我在使用 IL2CPP 构建我的应用程序“VolarPro”时遇到了严重问题。

我的测试设置: Unity:2020.3.3f1 设备:Samsung Galaxy Tab S3 Tablet Android 版本:9

详细信息:我开发了一款针对安卓操作系统的模拟游戏。游戏逻辑在主线程上,模拟部分(ODE 求解器)在单独的线程上运行。

该应用程序现已准备就绪,应该会在 Google Play 商店中发布。由于 Google 的 64 位策略,我现在被迫使用 IL2CPP 而不是 Mono 来构建我的应用程序。

在我测试的所有设备上使用 Mono 构建时,应用程序运行良好。

使用 IL2CPP 构建应用程序有效(.apk + .obb 扩展文件,ARMv7+ARM64)。但是运行应用程序失败。

如果我将 C++ 编译器配置设置为“发布”,应用程序会启动,但会立即冻结/GUI 没有响应,但我可以听到背景声音播放。我现在可以弄清楚主线程在 Release 构建中冻结,而模拟线程继续正常运行。Logcat 显示的唯一错误是:

30958 30958 错误 Zygote isWhitelistProcess - 进程被列入白名单 30958 30958 错误 Zygote accessInfo : 1 30958 30958 错误 eering.VolarPro 未启动调试器,因为进程无法加载 jdwp 代理。

如果我将 C++ 编译器配置设置为“调试”,则应用程序启动并且 GUI 响应。到目前为止,一切都很好。但是,我发现执行速度非常慢,而且游戏物理行为与 Mono 构建非常奇怪。Logcat 不显示错误。

对于可能导致问题的原因或如何调试此问题,我真的很感激:

  • 在仅在 IL2CPP 上显示的单独线程上进行模拟是否有任何陷阱?
  • 会不会是我使用了与 IL2CPP 不兼容的 .NET 方法?
  • 有哪些机制会导致发布版本冻结但调试版本不会冻结?
  • 为什么使用 IL2CPP 和 Mono 的游戏物理感觉不同?
  • 关于我应该尝试的构建设置的任何建议?(增量GC、代码剥离等)
  • 有什么解决方法吗?例如,在 Android Studio 中进行最终构建?

所以我陷入了深深的绝望和迷茫之中。任何有关如何让我的应用程序运行的帮助将不胜感激!

谢谢你。

4

0 回答 0