4

如何让 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 程序集”。

当命令行归档运行时,它肯定会打印LinkMode: SdkOnlyMTouch Task控制台输出的一部分中。

结果档案

在给我带来麻烦的项目中,生成的 xcarchive 文件对于命令行为 102MB,对于 Xamarin Studio 为 66MB(差异:36MB),Xcode 估计 App Store 大小分别为 69MB 和 35MB。

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

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

1 回答 1

2

请注意,由于 Xamarin.iOS 转而用作其构建系统,mdtool因此大部分已弃用(仍用于经典应用程序,而不是统一应用程序) 。msbuild

dSYM 文件:17kb 与 29.2MB(奇怪)

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

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

30.1MB 与 65.7MB

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

Xcode 估计

由于文件被压缩,估计可能非常错误。它更加复杂,因为 Apple 的 DRM 将加密应用程序的可执行部分 - 并且加密的数据不能很好地压缩(或者它是一种非常糟糕的加密 ;-)。

于 2015-03-14T00:06:08.500 回答