我正在寻找减少App Store应用程序大小的方法。我正在使用Xamarin Forms和PCL。我在应用的AppStore
构建输出(../obj/iPhone/AppStore/mtouch-cache
)中看到的其中一项内容是System.Xml.dll.armv7.o
和System.Xml.dll.arm64.o
总计约12mb。在mscorlib
之后,这是构建输出的最大组件。见截图:
我的应用程序对Xml没有任何作用,所以我想尽可能删除这个依赖项引用。我尝试从我的项目中删除对System.Xml
的所有引用,但这似乎没有改变任何东西。我能以某种方式删除吗?为什么我的构建输出中有System.Xml
?
我的项目源可以在GitHub上找到:https://github.com/bitwarden/mobile
答案 0 :(得分:2)
为什么System.Xml在我的构建输出中?
托管链接程序(除非禁用)将从您的应用程序中删除任何不需要的程序集。如果你仍然看到System.Xml.dll
,则意味着:
链接器设置为不要链接,设备的默认设置为链接SDK ;
其他一些程序集(例如第三方)正在使用System.Xml
,但无法从您的应用程序中删除它。
我能以某种方式删除吗?
是。您可以使用程序集浏览器确实查看第三方程序集的引用。一旦确定,您可以:
从项目中删除依赖项,并将其替换为不依赖于System.Xml
的内容。这可能非常容易或非常困难;或
将链接器设置为全部链接以查看它是否可以消除第三方的XML引用。请注意,您可能需要在您的(和其他第三方代码)上添加[Preserve]
以涵盖反射(链接器无法使用静态分析检测到)等情况;
除了有关Xamarin网站的文档,您还可以观看我在Advanced iOS Build mechanics发表的 Evolve 2013 对话的视频。它涵盖了大多数设置的优缺点。