【问题标题】:Xamarin App runs on debug but crashes on releaseXamarin App 在调试时运行,但在发布时崩溃
【发布时间】:2018-09-13 22:25:06
【问题描述】:

我的 Xamarin 应用程序在调试模式下完美运行,但在发布模式下崩溃。我收到此错误:“不幸的是,应用程序已停止”。我通过 USB 连接了我的手机,当我在发布模式下运行应用程序时,我收到了这个错误。

不幸的是,我无法在发布模式中调试应用程序,因为我在输出窗口中收到此消息:“Android 应用程序正在运行(在 android 项目属性中已禁用调试)”,尽管选中了“启用开发人员工具”框.我尝试了所有链接替代 None/SDK/SDK 和 User 但仍然无法正常工作。

有没有办法在日志文件或其他文件中查看导致崩溃的原因?

【问题讨论】:

标签: c# android xamarin crash crash-reports


【解决方案1】:

在挣扎了几个小时之后,就我而言,这是因为我在 App.xaml 文件中使用了静态资源,同时在声明上方定义了另一个资源。奇怪的是它在调试模式下完美运行,但由于某种原因,在发布模式下不断崩溃。查明问题后,我对声明进行了重新排序,问题得到解决。

无论如何,您可以做的是将 MainActivity 中的整个 onCreate 块包装在 try catch 块中,并在某处记录异常,例如公共 http 请求记录器或将其写入文件。在撰写本文时,RequestBin 拥有这样的免费服务。创建端点后,只需向带有异常消息作为数据的 url 发出 post 请求。这是一个例子:

protected override void OnCreate(Bundle bundle)
{
    try
    {
        // oncreate logic
    }
    catch(Exception ex)
    {
        var client = new HttpClient();
        client.PostAsync("your logger api url", new StringContent(ex.ToString())).Wait();
    }
}

希望这对某人有所帮助。

【讨论】:

  • 谢谢,我在我的一个页面中也使用了错误的静态资源,但为什么它在调试模式下可以完美运行?在这种情况下很难找到问题。
  • 谢谢!这对我有用!节省了很多时间
【解决方案2】:

你可以试试下面的

  1. 手动卸载在调试模式下部署的本地应用。部署发布应用。

  2. 更新你的 Xamarin 版本

  3. 项目设置→Android选项→链接器→配置=发布;链接 = 仅 Sdk 程序集

【讨论】:

  • 我发现“Sdk 和用户程序集”链接选项只会搞砸构建。使用此选项时,我遇到了“无法实例化”和“找不到”类。将其设置为“仅 Sdk”可以正常工作。当 Xamarin 为您提供一个选项但它很少起作用时,这是多么有趣。即便如此,2021 年仍会发生。
【解决方案3】:

确保在release配置

中没有选择Shared Mono Runtime

【讨论】:

  • 我的问题只是在物理设备(不是模拟器)上的发布模式下的 iOS 构建,结果是项目属性上的链接设置与调试模式和发布模式不同。原理同上。
【解决方案4】:

我在项目属性中为“发布”关闭了“优化代码”。为我工作。

【讨论】:

    【解决方案5】:

    我今天遇到了同样的问题。在对配置和构建设置进行多次试验后,唯一对我有用的解决方案是通过 NuGet 包管理器更新所有 Xamarin 相关包。下次遇到这种情况可以试试这个。

    【讨论】:

      【解决方案6】:

      实际上,清理解决方案,卸载应用程序和卸载 API 对我来说工作正常

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-20
        • 2018-07-01
        相关资源
        最近更新 更多