Android 何时链接;仅Sdk程序集“;?
我正在使用Xamarin和Visual Studio 2013开发一个Android应用程序。如果转到项目属性/Android选项/Linking有三个选项:Android 何时链接;仅Sdk程序集“;?,android,linker,xamarin,Android,Linker,Xamarin,我正在使用Xamarin和Visual Studio 2013开发一个Android应用程序。如果转到项目属性/Android选项/Linking有三个选项:无,仅Sdk程序集,以及Sdk和用户程序集 我的问题是:您什么时候会选择选项Sdk Assemblies Only选项?您不总是希望在发布版本中包含用户程序集吗 更新链接一词实际上用于表示在中取消链接。当使用该条件对文本进行预处理时,这一切都是有意义的。当您希望在构建APK时删除未使用的Xamarin.Android程序集时,可以使用Sdk
无
,仅Sdk程序集
,以及Sdk和用户程序集
我的问题是:您什么时候会选择选项Sdk Assemblies Only
选项?您不总是希望在发布版本中包含用户程序集吗
更新链接一词实际上用于表示在中取消链接。当使用该条件对文本进行预处理时,这一切都是有意义的。当您希望在构建APK时删除未使用的Xamarin.Android程序集时,可以使用
Sdk程序集Only
选项。可以创建这些程序集的完整列表
假设您已将System.Net程序集添加到项目中,但尚未在代码中实际使用它,并且忘记将其删除。仅指定链接器选项Sdk Assemblies
将导致生成链从最终APK中删除程序集,从而减小应用程序的总体大小
您可以通过查看将最终APK提取为zip文件并检查Assembly目录来验证此行为:
在上图中,您将看到
System.Net.dll
和System.Xml.dll
位于Don Link
生成的APK中,而它们已从仅使用Sdk程序集构建的APK中删除。这些是项目引用,但从未在源代码中使用过,Xamarin通过静态分析检测到这一点,然后将其从APK中排除。Xamarin。Android
应用程序使用链接器来减小应用程序的大小。默认值为SdkOnly
None
:将不尝试链接
SdkOnly
:链接将
仅在基类库上执行,不在用户的程序集上执行
Full
:将对基类库和用户库执行链接
装配。
注意:如果您面临链接问题,例如
“GetAdditionalResourcesFromAssemblies”任务意外失败。
System.IO.FileNotFoundException:。也许它不存在于Mono for Android配置文件中
然后重新检查xamarin.Android项目设置并设置以下标记
<AndroidUseLatestPlatformSdk>true</AndroidUseLatestPlatformSdk>
true
希望这会有所帮助。据我所知,这三个选项中,未使用的Xamarin.Android程序集永远不会链接到APK。还是我错了?当您将核心Xamarin.Android程序集添加到项目中,但在源代码中没有明确使用时,该选项适用。当启用不链接
时,默认情况下,Xamarin不包括每个核心程序集。链接
==从APK中删除哪些程序集
。而Sdk程序集仅==删除未使用的Sdk程序集
?我现在已经阅读了官方文档,很明显,链接
这个词的含义是取消链接
。难怪我会感到困惑。Sdk程序集
将您的项目引用与Xamarin.Android核心程序集进行匹配,并通过静态分析确定哪些程序集永远不会被使用,然后将其从最终APK中删除。这是一个需要对Xamarins部分做进一步澄清的过程。我不得不分解他们的构建过程来解决这个问题。