减少AppStore应用程序大小:删除System.Xml?

时间:2016-08-01 04:37:19

标签: xamarin xamarin.ios

我正在寻找减少App Store应用程序大小的方法。我正在使用Xamarin Forms和PCL。我在应用的AppStore构建输出(../obj/iPhone/AppStore/mtouch-cache)中看到的其中一项内容是System.Xml.dll.armv7.oSystem.Xml.dll.arm64.o总计约12mb。在mscorlib之后,这是构建输出的最大组件。见截图:

ls -laS *.o

我的应用程序对Xml没有任何作用,所以我想尽可能删除这个依赖项引用。我尝试从我的项目中删除对System.Xml的所有引用,但这似乎没有改变任何东西。我能以某种方式删除吗?为什么我的构建输出中有System.Xml

我的项目源可以在GitHub上找到:https://github.com/bitwarden/mobile

1 个答案:

答案 0 :(得分:2)

  

为什么System.Xml在我的构建输出中?

托管链接程序(除非禁用)将从您的应用程序中删除任何不需要的程序集。如果你仍然看到System.Xml.dll,则意味着:

  • 链接器设置为不要链接,设备的默认设置为链接SDK ;

  • 其他一些程序集(例如第三方)正在使用System.Xml,但无法从您的应用程序中删除它。

  

我能以某种方式删除吗?

是。您可以使用程序集浏览器确实查看第三方程序集的引用。一旦确定,您可以:

  • 从项目中删除依赖项,并将其替换为不依赖于System.Xml的内容。这可能非常容易或非常困难;或

  • 将链接器设置为全部链接以查看它是否可以消除第三方的XML引用。请注意,您可能需要在您的(和其他第三方代码)上添加[Preserve]以涵盖反射(链接器无法使用静态分析检测到)等情况;

除了有关Xamarin网站的文档,您还可以观看我在Advanced iOS Build mechanics发表的 Evolve 2013 对话的视频。它涵盖了大多数设置的优缺点。