我的Xamarin Forms Android应用在Debug中运行良好。但是在Release中,当部署到模拟器或设备时,应用程序在显示启动画面后“停止”。调试日志显示这些错误,表明它找不到类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 file“/ data / app / zeemerix.NflCalcXF-1 / base.apk“],nativeLibraryDirectories = [/ data / app / zeemerix.NflCalcXF-1 / lib / arm,/ data / app / zememerix.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选项:
关:使用共享运行时On:启用Proguard On:启用开发人员检测链接:Sdk和用户程序集[将其设置为无解决问题]
使用Android版本编译:8.1 Min Android版本:7.0目标Android版本:8.1
我的设置:
VS Community 2017,版本15.7.3 Xamarin 4.10.10.1 Xamarin XML格式3.3.0.912540 Xamarin支持库v27.0.2.1
如你所知,链接'无'有效,请尝试然后链接'仅限Sdk Assembiles'如果这不起作用,那么你可以进入你的构建文件夹,复制所有assempblies减去扩展名的所有名称,并将它们添加到“跳过链接程序集” “菲尔德
然后设置链接到“Sdk和用户装配”并再试一次。它将需要永远,但然后从列表中删除这些文件中的每一个,直到找到导致问题的文件。
对我来说,只要Link'Sdk Assemblies Only'工作就可以了,所以我可以消除这里发现的所有Sdk assmeblies:
https://docs.microsoft.com/en-us/xamarin/cross-platform/internals/available-assemblies
用户列表要小得多,因此消除过程要快得多......
Fwiw,使用反射的库通常是一个问题,因为它们很容易在编译之前被识别为使用并被标记为删除。就我而言,它是Json.Net,RestSharp等......
我发布的应用程序大小仅为原本的三分之一......