我的最新版本以每 1000 台设备大约 99 次崩溃的速度崩溃 - 明显高于之前的版本。 libmonosgen 中的新崩溃有两种形式:
集群 1:libmonosgen-2.0.so
signal 11 (SIGSEGV), code 2 (SEGV_ACCERR)
libmonosgen-2.0.so
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> com.dailybits.foodjournal <<<
backtrace:
#00 pc 0000000000192304 /data/app/com.dailybits.foodjournal-KapbLS3Zx20G2S79yI3CTw==/lib/arm/libmonosgen-2.0.so
集群 2:libmonosgen-2.0.so (mono_class_get_flags)
signal 11 (SIGSEGV), code 2 (SEGV_ACCERR)
mono_class_get_flags
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> com.dailybits.foodjournal <<<
backtrace:
#00 pc 000000000014f310 /data/app/com.dailybits.foodjournal-rwLqwfyotHI-Ulk481Wk8g==/lib/arm64/libmonosgen-2.0.so (mono_class_get_flags)
预发布报告看起来都是绿色的,App Center 没有这些崩溃,它们只出现在 Google Play 中。
问题:
配置详情如下
(两个构建选项似乎都会导致相同的问题)
版本信息
Microsoft Visual Studio Professional 2019
Version 16.4.2
VisualStudio.16.Release/16.4.2+29613.14
Microsoft .NET Framework
Version 4.8.03752
Xamarin 16.4.000.307 (d16-4@e031886)
Visual Studio extension to enable development for Xamarin.iOS and Xamarin.Android.
Xamarin.Android SDK 10.1.1.0 (d16-4/f2c9364)
Xamarin.Android Reference Assemblies and MSBuild support.
Mono: bef1e63
Java.Interop: xamarin/java.interop/d16-4@c4e569f
ProGuard: xamarin/proguard/master@905836d
SQLite: xamarin/sqlite/3.28.0@46204c4
Xamarin.Android Tools: xamarin/xamarin-android-tools/master@9f4ed4b
2020 年 2 月 17 日编辑
迄今为止我的一些调查:
我决定仔细梳理所有更改,还原所有软件包更新,然后一个接一个地重新进行,直到发布开始崩溃。
如果我不走运,这将需要几周的时间,但它应该可以找出导致崩溃的原因。它还应该允许我将我的新功能交付到 100%,而不会为所有用户造成崩溃高峰。手指交叉:)
最佳答案
经过大量的研究(见问题底部),我决定从应用程序中删除所有更改,并开始将它们一一发布。幸运的是,正如我完成对所有更改的详细梳理(来自 2 个月的工作),一位用户发布了 1 星评论,并附有详细的复制说明!。
因此,“如何在没有堆栈跟踪的情况下调查崩溃”问题的答案:
你必须找到一个repro,一种方法(对于生产版本)找到一个是等待你的用户告诉你。
其他在线问题的答案:
在加载应用程序代码之前发生崩溃,或者
那不相关?
发生崩溃?或者更好的是,我可以将崩溃与应用相关联吗
生成 session 日志?
痕迹?
详细信息/实际崩溃的根本原因:
事实证明,我最喜欢的 PropertyChanged.Fody 和 Xamarin Forms 的行为自我上次更新以来已经发生了变化,以至于生成的 PropertyChanged 事件比过去多(IE,即使分配的值是等于原始值,现在触发“propertychanged”事件)。
在我的一个更有趣的 View 模型中(基于条目控件的文本值进行自动单位转换),当与自定义控件结合使用时,这会导致无限递归。 (意思是值会改变,这会触发一个propertychanged事件,这会更新控件,这会将值分配给viewmodel,这将触发propertychanged等......)
一旦我进行了复制,调查和解决问题就变得微不足道了。
我能够通过使用 [DoNotNotify] 装饰其中一个属性来解决这个问题
关于android - 如何调查 Xamarin/libmonosgen-2.0.so native 崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60213460/