【问题标题】:Xamarin app crashes after launch screen on iOS 12Xamarin 应用程序在 iOS 12 上的启动屏幕后崩溃
【发布时间】:2020-02-22 17:52:14
【问题描述】:

所以我使用 Xamarin.Forms v3.4.0 制作了一个应用程序,在我的 iPhone(SE、iOS 13.3)上测试了一个 android 设备,它运行良好。 作为一个测试,我在旧设备(iPhone 6、iOS 12.4)上运行它,它在蓝色启动屏幕后立即崩溃。

问题是它甚至没有启动调试器。崩溃太早以至于调试器甚至还没有启动,所以我不知道如何确定导致崩溃的原因。尝试在 Main.cs 和 AppDelegate.cs 的第一行放置断点,同样,调试器不会停在那里。

在那之后,我认为这可能与设备的处理器有关,所以我为装有 iOS 12.4(相同设备,旧操作系统)的 iPhone SE 设置了一个模拟器,它同样崩溃了。所以,是的,它必须与操作系统版本有关。

我的其他想法是,这可能与黑暗模式有关(对不起,我只是提出想法)。我使用this guide实现了暗模式

我不知道从哪里开始,感谢任何帮助。

编辑:
刚刚将 Xamarin.Forms 更新到 4.4.x,我仍然遇到完全相同的问题。

【问题讨论】:

  • 您最好将XF的版本更新到最新版本(4.4.x)。在这样的旧版本中调试应用程序可能会导致 unkinow 问题。
  • @LucasZhang-MSFT 刚刚更新,完全一样
  • 并没有给出太多关于这个问题的想法。尝试清理解决方案,删除 bin/obj,如果在 vs mac 上删除项目根目录中的 .vs/ 并重建并重试。从 xcode 中查看模拟器的控制台日志也可能会给出一些想法
  • 尝试启用common language runtime exception n 查看是否有任何错误

标签: ios xamarin xamarin.forms xamarin.ios


【解决方案1】:

问题实际上出在我用来处理暗模式的自定义页面渲染器中。显然,TraitCollectionDidChange()previousTraitCollection 参数在 iOS 12 中为空。

所以它只是一个NullReferenceException很容易修复:

if (previousTraitCollection == null)
    return;

我不知道为什么调试器没有及时启动来识别错误,但幸运的是,我通过将Linker Behavior修改为Link Framework SDKs Only发现了它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-27
    • 2017-05-06
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多