xamarin.forms - 如何解决 Xamarin Android 链接问题

标签 xamarin.forms xamarin.android

我的 Xamarin Forms Android 应用程序在调试中运行良好。但在发布版中,当部署到模拟器或设备时,应用程序会在显示启动屏幕后“停止”。调试日志显示这些错误,表明它找不到类 FitWindowsLinearLayout...

10-23 22:24:59.270 14008 14008 E AndroidRuntime: Caused by: android.view.InflateException: Binary XML file line #14: Binary XML file line #14: Error inflating class android.support.v7.widget.FitWindowsLinearLayout

10-23 22:24:59.270 14008 14008 E AndroidRuntime: Caused by: android.view.InflateException: Binary XML file line #14: Error inflating class android.support.v7.widget.FitWindowsLinearLayout

10-23 22:24:59.270 14008 14008 E AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v7.widget.FitWindowsLinearLayout" on path: DexPathList[[zip file "/data/app/zeemerix.NflCalcXF-1/base.apk"],nativeLibraryDirectories=[/data/app/zeemerix.NflCalcXF-1/lib/arm, /data/app/zeemerix.NflCalcXF-1/base.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib]]

将链接更改为“无”可以解决问题,但 APK 会很大。 我应该使用“跳过链接程序集”吗?如果是这样,输入什么?

我尝试使用 Proguard 配置文件,但是当我这样做时,MainPage 显示为空白屏幕,并且调试日志显示它找不到 Help_ObClick(),这是 MainPage 代码后面的事件处理程序。我使用的配置文件是这样的...

-dontobfuscate
-keep class android.support.v7.widget.** { *; }
-dontwarn android.support.v7.widget.**
-keep class android.support.v4.widget.Space { *; }
-dontwarn android.support.v4.widget.Space

我的 Android 选项:

关闭:使用共享运行时 开:启用 Proguard On:启用开发人员检测 链接:Sdk 和用户程序集[将其设置为 None 可以解决问题]

编译使用Android版本:8.1 最低安卓版本:7.0 目标Android版本:8.1

我的设置:

VS 社区 2017,版本 15.7.3 Xamarin 4.10.10.1 Xamarin Android SDK 8.3.3.2 Xamarin 表单 3.3.0.912540 Xamarin 支持库 v27.0.2.1

最佳答案

正如您所知,链接“无”有效,请尝试链接“仅限 Sdk 程序集” 如果这不起作用,那么您可以进入构建文件夹,复制所有程序集的所有名称减去扩展名,并将它们添加到“跳过链接程序集”字段

然后设置链接到“Sdk 和用户程序集”并重试。 这将花费很长时间,然后从列表中删除每个文件,直到找到导致问题的文件。

对我来说,这要容易得多,因为链接“仅限 Sdk 程序集”有效,因此我可以消除此处找到的所有 Sdk 程序集:

https://learn.microsoft.com/en-us/xamarin/cross-platform/internals/available-assemblies

用户列表要小得多,因此消除过程要快得多......

Fwiw,使用反射的库通常是一个问题,因为它们在编译之前无法轻松识别为已使用并被标记为删除。 就我而言,它是 Json.Net、RestSharp 等......

我发布的应用程序大小仅为原本大小的三分之一...

关于xamarin.forms - 如何解决 Xamarin Android 链接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52972017/

相关文章:

xaml - Xamarin Forms Flex Layout 大小调整问题

debugging - Xamarin 跳过了一个可等待的方法

android - 在为 Android Activity 创建 View 时显示进度对话框

c# - 将函数名称作为操作传递时的混淆行为

Xamarin.Forms 按钮 : Flash Color on Press

c# - Xamarin 表单 Hybridweb 查看 mailto 链接不起作用

xaml - 静态资源到标记扩展

asynchronous - 在 Xamarin Forms 中下载带有进度条的文件

xamarin.android - Xamarin 中的类库 (.NET Core) 与 PCL

android - 如何从 Xamarin Android 应用程序调用 MVC 网络 Controller