我正在使用Xamarin和Visual Studio 2013开发Android应用。如果您转到项目属性/ Android选项/链接,则有三个选项:None
,{{ 1}}和Sdk Assemblies Only
。
我的问题是:您何时会选择Sdk and User Assemblies
选项?您是否总是希望在发布版本中包含用户程序集?
更新 Sdk Assemblies Only
一词实际上用于表示Xamarin docs中的Linking
。在使用该条件对文本进行预处理时,这一切都是有意义的。
答案 0 :(得分:4)
如果您希望在构建APK时删除已链接到项目的未使用的Xamarin.Android程序集,则可以使用Sdk Assemblies Only
选项。这些程序集的完整列表可以是found here.
假设您已将System.Net程序集添加到项目中,但实际上并未在代码中使用它而忘记删除它。指定链接器选项Sdk Assemblies Only
将导致构建链从最终的APK中剥离程序集,从而减少应用程序的整体大小。
您可以通过查看将最终APK解压缩为zip文件并检查程序集目录来验证此行为:
在上图中,您会看到System.Net.dll
和System.Xml.dll
位于Don't Link
生成的APK中,而它们已从使用{{1}构建的APK中删除}。这些是项目参考,但从未在源代码中使用,Xamarin通过静态分析检测到这一点,然后将其从APK中排除。
答案 1 :(得分:0)
Xamarin.Android
个应用程序使用链接器来减少应用程序的大小。默认值为SdkOnly
None
:不会尝试关联。SdkOnly
:链接将是
仅在基类库上执行,而不是在用户程序集上执行。Full
:将对基类库和用户执行链接
组件。
For more details refer here..
注意:如果您遇到链接问题,例如" GetAdditionalResourcesFromAssemblies"任务意外失败。 System.IO.FileNotFoundException :.也许它在Mono for Android配置文件中不存在?
然后重新检查您的xamarin.Android项目设置并设置以下标记
<AndroidUseLatestPlatformSdk>true</AndroidUseLatestPlatformSdk>
希望它会有所帮助。