【问题标题】:How to generate .ipa file from command line with watchkit app如何使用 watchkit 应用程序从命令行生成 .ipa 文件
【发布时间】:2015-07-03 18:21:47
【问题描述】:

我有一个使用 xcodebuild 进行发布构建的 jenkins 实例。然后我有一个脚本(在 Jenkins 上)使用 xcrun 创建 .ipa 文件。到目前为止,这对我们来说效果很好。现在我们有了一个 watchkit 应用程序,从这个过程创建的 .ipa 文件与您执行归档构建并从 Xcode 导出时创建的文件不同。

从 Xcode 导出的 .ipa 有一个“Payload”文件夹、一个“Symbols”文件夹(可能是可选的)和一个“WatchKitSupport”文件夹。从 xcrun 生成的 ipa 没有“符号”或“WatchKitSupport”文件夹。在此处查看有关结构的更多信息:https://stackoverflow.com/a/29400301/327386

我在 SO 上看到了这篇文章:https://stackoverflow.com/a/19856005/327386,其中包含存档和导出 .ipa 构建的命令(类似于 Xcode 过程),但即使这样也没有创建有问题的新文件夹。

有谁知道是否有一种方法可以使用命令行工具创建一个与 Xcode 创建的文件等效的 .ipa 文件?我没有找到任何官方文档

【问题讨论】:

  • 我向 Apple 提交了一个错误,因为命令行工具不会生成与 Xcode 相同的 ipa 文件,并且他们将该错误标记为重复。原来的还开着
  • 能否请您链接到原始错误?
  • 我同意你的观点,我在这里看到了相同的结果。我什至试过xcodebuild -exportArchive -exportFormat ipa -archivePath App.xcarchive -exportPath App -exportWithOriginalSigningIdentity
  • 你的 xcrun 脚本是什么样的?我遇到了与您类似的问题,只是为了将科尔多瓦构建到 iOS 应用程序的 .ipa 中,所以这可能不起作用,但也许可以试试这个:xcrun -sdk iphoneos PackageApplication -v Abczyx.app -o /Users/myname/Desktop 您在 .app 文件目录中的位置并将其输出到您的/Users/myname/Desktop 位置。
  • @RPM 你有原版的雷达ID吗?

标签: ios xcode command-line jenkins build


【解决方案1】:

确切的问题

xcodebuild -exportArchive 无法使用 Watch Extension 生成有效的 IPA,这是 Apple 的错误 (http://openradar.appspot.com/20898925)。

官方(Xcode 7)解决方案

Apple 在 Xcode 7 中使用 xcodebuild -exportArchive 命令的 -exportOptionsPlist 标志解决了这个问题。您可以在in this article找到更多详细信息。

非官方(Xcode 6)解决方案

有解决该问题的方法。如果情况紧急,您可以和他们一起玩,但我找不到适合所有人的解决方法(基于论坛讨论)。

  1. 添加 WatchKitSupport 和 Symbols 文件夹。更多详情 herehere。它不适合我。
  2. 退出整个应用程序。更多详情here。它很hacky,但比前面提到的解决方案工作得更好。

【讨论】:

  • 有趣 - 我将在 Xcode 7 中查看此选项
【解决方案2】:

我也遇到了同样的问题。命令行工具 exportArchive 在将存档导出到 ipa 时错过了所需的 Watchkit 支持文件夹。我试着用下面的 shell 脚本弄明白了。

https://gist.github.com/phatblat/6eb8895e2202f796960e

您可以从您的 Jenkins 构建脚本中调用上述 shellscript,如下所示。

<exec executable="/bin/bash" failonerror="true">
            <arg value="${root.dir}/buildscripts/package-ida.sh" />
            <arg value="${build.dir}/APP_NAME.xcarchive" />
            <arg value="${build.dir}/APP_NAME.ipa" />
        </exec>

现在您将能够在 ipa 有效负载中看到 WatchKit 支持文件夹,并且您的 appstore 应用验证也将使用生成的 Jenkins 构建成功。

【讨论】:

    猜你喜欢
    • 2016-03-30
    • 2012-01-10
    • 2019-05-04
    • 2012-01-21
    • 2020-02-06
    • 1970-01-01
    • 2014-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多