2014-09-24 51 views
3

如果你去项目属性/ Android的选项我正在开发使用Xamarin和Visual Studio 2013的Android应用程序/链接有三个选项:NoneSdk Assemblies OnlySdk and User Assemblies何时链接“Sdk Assemblies Only”?

我的问题是:你什么时候选择选项Sdk Assemblies Only选项?你不是总希望将用户程序集包含在发布版本中吗?

更新Linking实际上是用来指的是在Xamarin docsUnlinking。当文本用该条件进行预处理时,这一切都是有意义的。

回答

4

如果您希望未使用的Xamarin.Android程序集链接到您的项目以在构建APK时将其删除,那么您将使用Sdk Assemblies Only选项。这些程序集的完整列表可能是found here.

假设您已经将System.Net程序集添加到您的项目中,但实际上并没有在您的代码中使用它,并忘记将其删除。指定链接器选项Sdk Assemblies Only将导致构建链从最终APK剥离程序集,从而减少应用程序的总体大小。

您可以通过查看提取最终APK作为一个zip文件和检查组件目录验证此行为:

enter image description here

在上面的图片,你会看到System.Net.dllSystem.Xml.dll是在Don't Link生成的APK中,而它们已从构建于Sdk Assemblies Only的APK中移除。这些都是项目引用,但从未在源代码中使用过,Xamarin通过静态分析来检测,然后将它们从APK中排除。

+0

据我了解的三个选项,未使用的Xamarin.Android程序集将永远不会被链接到APK中。或者我错了? – 2014-09-25 08:40:45

+0

该选项适用于将核心Xamarin.Android程序集添加到项目中但未在源代码中明确使用的情况。当“Do not Link”未启用时,Xamarin默认不包含每个核心程序集。 – matthewrdev 2014-09-25 22:38:50

+0

所以,当你选择链接:无,APK实际上将包含所有程序集?我认为“无”意味着“不要将任何东西放入APK中”。 – 2014-09-27 11:49:24

0

Xamarin.Android应用,以减少application.The默认值的大小,使用连接SdkOnly

  • None:没有链接将尝试。
  • SdkOnly:链接将仅在基类库上执行,而不是在用户的程序集上执行。
  • Full:链接将在基类库和用户 程序集上执行。 For more details refer here.. 注意:如果你正面临的问题与链接,如

“GetAdditionalResourcesFromAssemblies”任务意外失败。 System.IO.FileNotFoundException:。也许它不适用于Android个人资料的Mono中?

然后重新检查你的xamarin.Android项目设置,并设置下面的标签,

<AndroidUseLatestPlatformSdk>true</AndroidUseLatestPlatformSdk> 

希望这会有所帮助。