繁体   English   中英

SIGABRT 在 Android 12 上运行 Xamarin.Forms 应用程序时

[英]SIGABRT when running a Xamarin.Forms app on Android 12

我正在开发一个 Xamarin.Forms 应用程序,该应用程序在所有 Android 版本(包括 11)上运行良好。

但是,我被要求使用该应用程序以 Android 12 为目标。 因此,我将所有 NuGet 软件包更新为最新安装的 JDK11,将其设置在 Projects > Android > Locations 中。 I changed the "compile with" SDK to Android 12.0 (S) and "Target Android Version" to Android 12.0 in the Android project settings.

该应用程序编译良好,并在 Android 11 模拟器上正常运行。 但是,一旦我部署到 Android 12 模拟器,Visual Studio 会显示“无法附加调试器”错误,并且应用程序在本机启动后立即崩溃。 Logcat 有这个显示:

2021-12-01 17:41:51.888 17289-17289/com.my.project W/monodroid-gc: GREF GC Threshold: 46080
2021-12-01 17:41:53.132 17289-17289/com.my.project W/com.my.project: Attempt to remove non-JNI local reference, dumping thread
2021-12-01 17:41:54.382 17289-17321/com.my.project D/libEGL: loaded /vendor/lib64/egl/libEGL_emulation.so
2021-12-01 17:41:54.392 17289-17321/com.my.project D/libEGL: loaded /vendor/lib64/egl/libGLESv1_CM_emulation.so
2021-12-01 17:41:54.400 17289-17321/com.my.project D/libEGL: loaded /vendor/lib64/egl/libGLESv2_emulation.so
2021-12-01 17:41:58.663 17289-17289/com.my.project W/com.my.project: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (unsupported, reflection, allowed)
2021-12-01 17:41:58.664 17289-17289/com.my.project W/com.my.project: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (unsupported, reflection, allowed)
2021-12-01 17:42:09.395 17289-17289/com.my.project I/com.my.project: Explicit concurrent copying GC freed 3212(948KB) AllocSpace objects, 2(40KB) LOS objects, 49% free, 2495KB/4990KB, paused 430us total 10.736ms
2021-12-01 17:42:18.466 17289-17336/com.my.project E/app_process64: * Assertion at /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mono/utils/mono-context.c:474, condition `fpctx->head.magic == FPSIMD_MAGIC' not met
2021-12-01 17:42:18.466 17289-17337/com.my.project E/app_process64: * Assertion at /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mono/utils/mono-context.c:474, condition `fpctx->head.magic == FPSIMD_MAGIC' not met
2021-12-01 17:42:18.466 17289-17335/com.my.project E/app_process64: * Assertion at /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mono/utils/mono-context.c:474, condition `fpctx->head.magic == FPSIMD_MAGIC' not met
2021-12-01 17:42:18.472 17289-17335/com.my.project A/libc: Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 17335 (Thread-3), pid 17289 (com.my.project)
2021-12-01 17:42:18.584 17340-17340/? I/crash_dump64: performing dump of process 17289 (target tid = 17335)
2021-12-01 17:42:18.865 17340-17340/? A/DEBUG: pid: 17289, tid: 17335, name: Thread-3  >>> com.my.project <<<
2021-12-01 17:42:18.983 336-336/? I/Zygote: Process 17289 exited due to signal 6 (Aborted)
2021-12-01 17:42:18.997 1292-2303/? I/ActivityManager: Process com.my.project (pid 17289) has died: fg  TOP 
2021-12-01 17:42:19.041 1292-1772/? I/libprocessgroup: Successfully killed process cgroup uid 10157 pid 17289 in 44ms
2021-12-01 17:42:19.082 1292-1722/? W/ActivityManager: setHasOverlayUi called on unknown pid: 17289

在发布模式下编译时,我看到完全相同的输出。

如果我创建一个空白 Xamarin.Forms 应用程序,并将其重新定位为 Android 12,它会正常启动,尽管 Visual Studio 仍然无法附加调试器。

如果我在同一个模拟器上运行本机 Android 应用程序,它也以 Android 12 为目标,它运行正常。

我不完全确定 go 从这里到哪里。 我们的应用程序很大,并且已经开发了几年。 目前,我正在尝试一个一个地删除我们的外部依赖项,看看是否有任何一个可能是原因,但这是一个乏味的过程,我很想知道是否有更好的方法。

在我执行以下操作后,该应用程序开始启动:

  • 从 Android 项目参考中删除了 Java.Interop 参考。
  • 在 Android 项目 > 选项 > Android 构建 > 高级中勾选了 x86_64 支持。 出于某种原因,支持的架构复选框在我们的 P4 历史记录中被随机选中和取消选中,我认为我们团队中的任何人都不是故意这样做的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM