【问题标题】:Xamarin: can't open app in release mode (with adb logcat)Xamarin:无法在发布模式下打开应用程序(使用 adb logcat)
【发布时间】:2019-10-29 17:51:56
【问题描述】:

我是 Xamarin 的新手,我正在尝试导出我的第一个 APK。 该应用程序在调试模式下完美运行,并且没有给我一个错误。 当我尝试在发布模式下运行时出现问题:输出控制台没有发现错误,但是当我尝试在模拟器中打开应用程序时它崩溃了。

这是 adb logcat:

//https://pastebin.com/4rRLK45p

【问题讨论】:

  • 您的 Mono Linker 设置为什么?你是否启用了 proguard/r8? (Java.Lang.ClassNotFoundException: Didn't find class "android.support.v7.widget.FitWindowsFrameLayout")
  • 我的链接器在 SDK 和用户程序集上都设置了,并且我启用了 ProGuard
  • 首先尝试仅使用指向 sdk 的链接器并关闭 ProGuard,测试发布版本,如果可行,将 ProGuard 文件的排除添加到 --keep 缺少的类,测试发布版本并继续添加ProGuard 文件中缺少的任何 Java 类。现在启用带有 SDK 和用户的链接器并重新测试发布版本。如果它未能通过您的测试,请查看日志并为您的任何用户代码添加链接器异常(通常是基于反射的类/方法/成员。
  • 首先尝试仅使用指向 sdk 的链接器并关闭 ProGuard,测试发布版本,如果可行,将 ProGuard 文件的排除添加到 --keep 缺少的类,测试发布版本并继续添加ProGuard 文件中缺少的任何 Java 类。现在启用带有 SDK 和用户的链接器并重新测试发布版本。如果它未能通过您的测试,请查看日志并为您的任何用户代码添加链接器异常(通常是基于反射的类/方法/成员。
  • 关闭 Proguard 后它就可以工作,但是当我添加 proguard.cfg 文件并再次打开 Proguard 时它甚至无法构建(Java 退出代码 1)。

标签: c# android visual-studio xamarin xamarin.android


【解决方案1】:

你应该在你的 Proguard 配置中加入这个:

-keep class android.support.v7.** { public *; }

https://docs.microsoft.com/tr-tr/xamarin/android/deploy-test/release-prep/proguard?tabs=macos

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多