【问题标题】:iOS Archive size difference: command line vs. Xamarin StudioiOS 存档大小差异:命令行与 Xamarin Studio
【发布时间】:2015-03-13 22:17:05
【问题描述】:

如何让 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 Task 部分打印LinkMode: SdkOnly

生成的档案

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

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

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

【问题讨论】:

    标签: xamarin.ios xamarin mdtool


    【解决方案1】:

    请注意,mdtool 大部分已被弃用(仍用于经典应用,而非统一应用),因为 Xamarin.iOS 已转而使用 msbuild 作为其构建系统。

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

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

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

    30.1MB 与 65.7MB

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

    Xcode 估计

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

    【讨论】:

    • 我没有找到其他地方说 mdtool 对于 iOS 版本已弃用。当然,所有样本都来自很久以前,但它仍然在continuous integration docs in the Xamarin Guides 中。如果我确实需要切换,那是 Mac 上的 xbuild(/Library/Frameworks/Mono.framework/Versions/Current/lib/mono/xbuild/12.0/bin/xbuild.exe 和/或/usr/bin/xbuild)吗? xbuild 或 msbuild 需要什么参数来触发 iOS 归档?
    • “deprecated”这个词不太合适,更像是“不必要的”
    • 基本上,mdtool 是 MD/XS 构建系统的命令行界面。对于使用 xbuild/msbuild 引擎的项目,mdtool 实际上是 xbuild 的包装器,因此没有必要,因为您可以直接使用 xbuild。但是,对于使用旧的内部构建引擎的项目,例如 iOS Classic 项目,mdtool 仍然是必需的。
    • @mhutch 你能指出一个使用 Xcode 归档的示例 xbuild 调用的正确方向吗?还是应该在 xbuild AppStore 构建之后直接使用一些 Xcode 命令行工具?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    • 2016-04-27
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多