【问题标题】:Can you create Mac .app distribution from the command-line instead of from within Xcode?你可以从命令行而不是从 Xcode 中创建 Mac .app 分发吗?
【发布时间】:2023-03-07 19:57:01
【问题描述】:

是否可以在不使用 Xcode Organizer 的情况下从 .xcarchive 包转到 .app 包?我想创建一个自动构建并获取我可以分发的最终 .app 文件。将 xcodebuild 与存档目标一起使用非常适合获取 .xcarchive 文件,但不适用于最终应用。

对于 iOS SDK,有一个可以与 xcrun 一起使用的 PackageApplication 工具,但在 OS X SDK 中似乎不存在。

我也想这样做,因此我希望可以从分发过程中获得更多诊断信息,现在由于臭名昭著的 100021 操作系统错误代码对我来说失败了。

【问题讨论】:

    标签: xcode macos build


    【解决方案1】:

    您查看过 .xcarchive 包的内部吗?它只是一个文件夹。您的 .app 目标应位于 Products 子文件夹中。

    在 Finder 中,右键单击存档并单击显示包内容。在终端中,使用cd

    【讨论】:

    • 当然 - 这是我目前的解决方法。如果我尚未签署应用程序,Organizer 中的分发操作是否会执行除复制之外的其他操作?
    • 我不确定 Distribute 是做什么的,但我知道您可以将应用程序签名作为构建过程本身的一部分。
    • 我将此标记为未回答,因为如果我确实需要验证并向应用商店提交申请,此解决方案将不起作用。
    • 输出的还是.app文件吗?
    • 我现在可以通过验证 Mac App Store 来让它失败,而不仅仅是分发。所以里面发生了一些组织者不喜欢的事情。建立档案或其他任何东西,然后将 .app 拉出只是对非分布式/签名应用程序的有效锻炼。
    【解决方案2】:

    xcodebuild 命令中尝试-exportArchive 标志:

    xcodebuild -exportArchive -exportFormat app -archivePath <path to .xcarchive> -exportPath "My App.app" -exportSigningIdentity "Developer ID Application: My Software Company"
    

    此命令存在于 Xcode 5.0.1 中。有关可选参数的更多详细信息,请参见手册页。此示例导出一个 Developer ID 签名的应用程序。

    【讨论】:

      【解决方案3】:

      这是我对这个问题的发现:

      • 如前所述,xcodebuild 的归档构建操作非常适合获取 .xcarchive,但似乎没有从命令行执行验证或分发命令的实际方法。我希望这最终证明是错误的。

      • 我能够通过删除嵌入框架目录中的嵌入符号链接来欺骗验证工具。这可行,但在与 Apple 支持人员讨论后发现这是在欺骗工具,实际上并没有产生有效的结果。

      • Apple 支持人员表示,如果嵌入式框架中的 .plist 文件之一无效,他们会看到此错误代码。事实证明,在我的示例中,我有 3 个嵌入式框架,其中 1 个有一个空的 .plist 文件,可能是我手工构建的项目。修复该问题后,构建将继续愉快地进行。

      【讨论】:

      • 伟大的研究。感谢您发布它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-29
      • 1970-01-01
      • 2011-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      相关资源
      最近更新 更多