为啥 apk 仅在 Android 10 的发布版本中中止?
Posted
技术标签:
【中文标题】为啥 apk 仅在 Android 10 的发布版本中中止?【英文标题】:Why does the apk abort only in the release version on Android 10?为什么 apk 仅在 Android 10 的发布版本中中止? 【发布时间】:2020-09-20 19:20:58 【问题描述】:我正在使用 Unity 2018.4 制作 2D 游戏。仅在发布版本中,也可能在 android 10 中,我遇到了原生代码(可能来自某个库)的奇怪错误。
我不知道如何解释中止消息。
Abort message
我使用的唯一不以 Unity 开头的库是从 SQLite 网站本身提取的 libsqlite3.so
。 (Link 这里)
我也遇到了来自 Android Vitals 的 Google Play 的错误,但它同样不可读。
有谁知道我该如何解决?我的游戏已经在 Play 商店中,我收到了一些投诉。
【问题讨论】:
【参考方案1】:SIGSEGV
,很好。欢迎来到真正让 Android 崩溃的游戏程序员俱乐部。我有几个猜测,但不能肯定。更多信息会很有用 - 您的版本的所有用户都会发生这种情况,还是只是某些设备或设备系列?
我已经设法做到了,但我的崩溃是一致的 - 每次都发生,而不仅仅是发布。我打开了一些 libGDX
本机对象,然后尝试在关闭它们之前更改活动。我的崩溃看起来很像你的。检查您的屏幕更改,以确保在尝试更改活动/片段之前干净地关闭所有对象。
你提到发布的事实让我想到了 ProGuard。如果您打开它,它可以积极优化“未使用”的类。这意味着如果您有通过反射使用的类,那么它们将不会被编译到发布包中。您可以尝试将其完全关闭并发布,看看是否能让事情再次正常运行。如果是这个原因,请查看
-keepclasseswithmembers class [your_class_path].** *;
在你的proguard-rules.pro
.
【讨论】:
谢谢您的回答。很抱歉不太了解,但我该如何清洁这些物品?据我所知,Unity 只编译一个 Activity,UnityPlayerActivity。当场景发生变化时,该错误通常发生在装有 Android 10 的 64 位手机上。 在那种情况下我不知道对不起。我的是绘制/渲染子系统的一部分,我只需要使用object.close();
关闭它们【参考方案2】:
我怀疑是正确的,问题是 64x 库 libsqlite3.so
,我不太明白可能发生了什么,我将库替换为来自 this 源的库。
【讨论】:
以上是关于为啥 apk 仅在 Android 10 的发布版本中中止?的主要内容,如果未能解决你的问题,请参考以下文章
Android - 仅在发布 apk 中,java.lang.IllegalArgumentException:无法为类创建转换器
为啥 Kivy apk 在 android 设备上启动 apk 后立即崩溃
为啥 Android Studio 创建的 APK 比 Eclipse 创建的 APK 大?
为啥 Google Maps Cordova ionic angular 仅在 Android 中工作而在 IOS 中为空白?