xamarin.forms - 在启动期间调用 Database.Migrate() 时崩溃
问题描述
我有一个使用 Entity Framework Core 的 Xamarin Forms 应用程序。当我开始并在模拟器上测试时,一切都很好。此外,当我在运行先前版本的设备上启动时,它会按预期工作。但是,当我在没有数据的设备上运行应用程序时,它会在执行以下操作时崩溃:
var context = new EfCoreContext();
context.Database.Migrate();
当谷歌的预发布报告在 9 台设备中的 7 台上失败时,我首先注意到了这一点。那里的错误是:
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'google/walleye/walleye:9/PQ2A.190405.003/5310204:user/release-keys'
Revision: 'MP1'
ABI: 'arm64'
pid: 12770, tid: 12770, name: utions.moneyfox >>> com.applysolutions.moneyfox <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x20
Cause: null pointer dereference
x0 0000000000000000 x1 0000000000000000 x2 0000000000000000 x3 0000007fec923bd0
x4 0000007f29ade9a0 x5 0000007fec923c60 x6 0000000000000000 x7 0000000000000000
x8 0000000000000000 x9 0000000000000000 x10 0000000000000000 x11 0000000000000000
x12 0000000000000000 x13 0000000000000000 x14 00000000ffffffff x15 0000000000000000
x16 0000007f1bd1d1f8 x17 0000007f1bb44670 x18 0000000000000008 x19 0000007f1bd34560
x20 0000000000000002 x21 0000000000000000 x22 0000000000000000 x23 000000000000007f
x24 0000000000000000 x25 0000000000000000 x26 0000007fec923d50 x27 0000007f16bdda34
x28 0000007f29ade000 x29 0000007fec923070
sp 0000007fec923070 lr 0000007f1ba8b658 pc 0000007f1bb44678
backtrace:
#00 pc 0000000000177678 /data/app/com.applysolutions.moneyfox-tqWhOmZmoDQ8yd5YLjvTqg==/lib/arm64/libmonosgen-2.0.so (mono_jit_info_get_method+8)
有趣的是,当我删除 Migrate 调用时,重新启动并添加它,应用程序就可以启动了。同样在预发布报告中始终有 2 或 3 台设备可以毫无问题地启动应用程序。我可以想象这是某种时间问题或其他一些影响在这里发挥作用。但是无论我把它放在我的应用程序的哪个位置,这个调用都会一直崩溃。
我试图通过尝试捕获和全局错误处理程序获取更多信息,这些信息应该记录到我的日志文件中。但不幸的是,什么也没抓到。有没有办法缩小问题范围,可能基于发布前报告中的错误日志?
解决方案
好吧,这似乎是 Xamarin.Android 中的一个问题:https ://developercommunity.visualstudio.com/content/problem/580820/xamarin-problem-following-update-to-vs2019-161.html
似乎它已在 16.1.4 中修复。
推荐阅读
- python - 仅使用互联网导入 python 模块
- c# - 有没有可能修复以前工作的表格,现在我将它粘贴到另一个表格中它不会工作?
- javascript - 使用 window.open 打开存储在变量中的 URL
- html - 如果无效输入是禁用祖先的一部分,我如何突出显示它们?
- swift - 我可以连接到 BLE 设备并同时广播 iBeacon 吗?
- c - “1e”是什么意思?
- socrata - 将应用程序令牌和查询功能添加到 api json 端点的正确语法是什么?
- linux - 我有一个登录时间的工作脚本,但如果用户未登录,我会收到错误消息
- datastage - 有没有办法比较两个文件并使用数据阶段生成只有字段级别差异的输出?
- jquery - 为什么我的 jquery 展开/折叠行不起作用?