Xamarin.ios iOS存档大小差异:命令行与Xamarin Studio

Xamarin.ios iOS存档大小差异:命令行与Xamarin Studio,xamarin.ios,xamarin,mdtool,Xamarin.ios,Xamarin,Mdtool,如何让mdtool构建一个与Xamarin Studio的菜单选项(构建>归档)一样小的iOS归档 我有一个从脚本构建档案的项目,它比Xamarin Studio通过菜单命令手动生成的要大得多 台阶 对于Xamarin Studio,我只是将其设置为AppStore | iPhone并点击Build>Archive菜单项 对于命令行,这里是RAKE脚本对mdtool的命令行调用: …/mdtool-v archive\“--configuration:AppStore | iPhone\”-p:

如何让mdtool构建一个与Xamarin Studio的菜单选项(构建>归档)一样小的iOS归档

我有一个从脚本构建档案的项目,它比Xamarin Studio通过菜单命令手动生成的要大得多

台阶 对于Xamarin Studio,我只是将其设置为AppStore | iPhone并点击Build>Archive菜单项

对于命令行,这里是RAKE脚本对mdtool的命令行调用:

…/mdtool-v archive\“--configuration:AppStore | iPhone\”-p:SomeProject.iOS SomeSolution.sln

他们使用的“AppStore | iPhone”构建配置在iOS构建项目设置下设置为“仅链接SDK程序集”

当命令行存档运行时,它肯定会在控制台输出的
MTouch任务
部分打印
LinkMode:SdkOnly

结果档案 在给我带来麻烦的项目中,命令行和Xamarin Studio生成的xcarchive文件分别为102MB和66MB(差异:36MB),Xcode估计应用商店大小分别为69MB和35MB

在xcarchive文件中,它变得更加混乱。有两个文件存在差异,这两个文件相差约60MB(与上述差异不匹配):

  • dSYM文件:17kb对29.2MB(怪异)
  • [在.app文件中]应用程序可执行文件:30.1MB与65.7MB(我预期的差异)

请注意,
mdtool
大多已被弃用(仍用于经典的、非统一的应用程序),因为Xamarin.iOS将使用
msbuild
作为其构建系统

dSYM文件:17kb对29.2MB(怪异)

前者是错误的。注意:最近修复了一个bug,为了获得正确的.dSYM,您可能需要重建而不仅仅是构建

这是符号目录大小。这不是作为应用程序的一部分发送(给客户)的内容。但是,存档很重要,因为它将用于表示应用程序的任何崩溃报告(来自客户)

30.1MB与65.7MB

If看起来第一种情况是瘦(例如仅ARMv7)二进制文件,而后者是胖(例如ARMv7+ARM64)应用程序。对于新的应用程序,苹果将只接受AppStore上的fat应用程序(即32位和64位)

Xcode估计


这些估计可能是非常错误的,因为文件上存在压缩。更为复杂的是,苹果的DRM将加密应用程序的可执行部分,而加密的数据压缩得不好(或者是一种非常糟糕的加密;-)。

我没有发现其他地方说mdtool不适合iOS版本。诚然,所有的样品都是很久以前的,但它仍然在市场上。如果我真的需要切换,那是Mac上的xbuild吗(
/Library/Frameworks/Mono.framework/Versions/Current/lib/Mono/xbuild/12.0/bin/xbuild.exe
和/或
/usr/bin/xbuild
)?xbuild或msbuild将采用什么参数来触发iOS归档?“不推荐”一词并不正确,它更像是“不必要的”,基本上,mdtool是MD/XS构建系统的命令行接口。对于使用xbuild/msbuild引擎的项目,mdtool实际上是xbuild的包装器,因此不需要,因为您可以直接使用xbuild。但是,对于使用旧的内部生成引擎的项目,如iOS Classic项目,mdtool仍然是必需的。@mhutch您能为我指出使用Xcode存档的示例xbuild调用的正确方向吗?还是应该在xbuild AppStore构建之后直接使用某个Xcode命令行工具?