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

Xamarin.forms 如何解决Xamarin Android链接问题,xamarin.forms,xamarin.android,Xamarin.forms,Xamarin.android,我的Xamarin Forms Android应用程序在调试中运行良好。但在版本中,当部署到模拟器或设备时,应用程序在显示初始屏幕后“停止”。调试日志显示这些错误,表明它找不到FitWindowsLinearLayout类 10-23 22:24:59.270 14008 14008 E AndroidRuntime:由以下原因引起: android.view.InflateException:二进制XML文件行#14:二进制XML 文件行#14:膨胀类时出错 android.support.v

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

10-23 22:24:59.270 14008 14008 E AndroidRuntime:由以下原因引起: android.view.InflateException:二进制XML文件行#14:二进制XML 文件行#14:膨胀类时出错 android.support.v7.widget.FitWindowsLinearLayout

10-23 22:24:59.270 14008 14008 E AndroidRuntime:由以下原因引起: android.view.InflateException:二进制XML文件行#14:错误 膨胀类android.support.v7.widget.FitWindowsLinearLayout

10-23 22:24:59.270 14008 14008 E AndroidRuntime:由以下原因引起: java.lang.ClassNotFoundException:未找到类 路径上的“android.support.v7.widget.FitWindowsLinearLayout”: DexPathList[[zip文件 “/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、, /供应商/库]]

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

我尝试使用Proguard配置文件,但当我这样做时,主页显示为一个空白屏幕,调试日志显示它找不到Help_ObClick(),它是主页代码中的事件处理程序。我使用的个人资料是

-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和用户程序集[将其设置为无可解决问题]

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

我的设置:

VS Community 2017,版本15.7.3 沙马林4.10.10.1 Xamarin Android SDK 8.3.3.2 Xamarin表格3.3.0.912540 Xamarin支持库v27.0.2.1

如果要链接SDK和用户程序集,则必须跳过链接.net标准和使用的任何项目,如我的项目中的customControls。
有许多其他方法可以做到这一点,但这更容易。

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

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

对我来说,链接“仅Sdk程序集”起作用更容易,因此我可以删除此处找到的所有Sdk程序集:

https://docs.microsoft.com/en-us/xamarin/cross-platform/internals/available-assemblies
用户列表要小得多,因此消除过程要快得多

Fwiw,使用反射的库通常是一个问题,因为它们在编译之前很难被识别为已使用,并被标记为删除。 在我的例子中,它是Json.Net、RestSharp等等


我发布的应用程序大小仅为其他应用程序大小的三分之一…

尝试将链接设置为“仅Sdk程序集”。关闭Proguard有时会产生问题,并向我发送带有android属性的项目截图。当您仅使用
Sdk程序集
时,您是否遇到过同样的问题?@YorkShen MSFT是,我尝试只链接SDK程序集,但它给出了相同的错误。请注意,调试日志表明问题出在android.support.v7.widget.FitWindowsLinearLayout。。。我们知道驻留在哪个组件中吗?@KeroFawzy当我关闭Proguard时,主页面显示为一个空白屏幕(在初始屏幕显示之后),调试日志显示它找不到Help_ObClick(),它是主页代码中的一个事件处理程序。(在没有Proguard的调试中运行正常。)当我关闭Proguard时,主页显示为一个空白屏幕,调试日志显示它找不到Help_OnClick(),它是主页代码中的事件处理程序。(在没有Proguard的调试中运行良好。)