使用多个目标创建.ipa

时间:2015-04-23 20:38:30

标签: ios bash watchkit archive xcode7

目前,我正在使用bash脚本来构建和存档我们的iOS应用程序。随着" Watch"的推出我发现我的脚本不再像以前那样创建必要的.ipa文件了。

构建将生成一个.app文件,我将使用XCRUN来调用PackageApplication以创建.ipa。现在,我希望将2个.app文件与1个.appex文件一起存档。

是否有人能够通过带有多个.app文件的命令行/脚本成功创建.ipa文件?

使用Xcode 6.2

更新

现在使用Xcode 7 GM和OSX 10.10.4。

对于" TEST"构建我很困难,开发人员总是更改配置文件,所以我做了2个构建;一个来自命令行,另一个来自IDE(Xcode)。我将.ipa扩展名更改为.zip并比较了2.

IDE的良好构建生成了一个名为" archived-expanded-entitmentments.xcent"它正确定义了所有签名身份。

我将此文件复制到另一个目录并使用它注入所有其他后续版本。现在可以在手机和手机上加载版本。注意测试。

以下是如何操作的示例。有点黑客但它有效。

security -v unlock-keychain -p "password" "keychainPath"

xcodebuild -configuration Test -scheme YourAppName -archivePath somePath/YourAppName.xcarchive archive

xcodebuild -exportArchive -exportFormat IPA -archivePath somePath/YourAppName.xcarchive -exportPath somePath/YourAppName.ipa

unzip -o somePath/YourAppName.ipa -d somePath

cp somePath/archived-expanded-entitlements.xcent somePath/Payload/YourAppName.app

zip -qr somePath/YourAppName.ipa Payload

2 个答案:

答案 0 :(得分:1)

我找到了一个解决方案,该解决方案正在处理项目的归档文件,该文件包含监视,应用和扩展。

xcodebuild -exportArchive -archivePath AppName.xcarchive/ -exportPath AppName.ipa -exportFormat ipa -exportWithOriginalSigningIdentity

此命令基本上使用相同的签名标识和配置文件从原始xcarchive文件中导出ipa。

答案 1 :(得分:-1)

我们有一些工作来生成包含iPhone应用程序和Apple Watch应用程序的.ipa。

使用Xcodebuild生成.app后,在bash脚本中我们执行以下操作

A)

  1. 使用应用程序名称创建目录

  2. 在应用程序目录内创建名为Payload的子目录

  3. 将.app复制到Payload目录

  4. B)

    1. 在应用程序目录内创建名为WatchKitSupport的子目录作为Payload的兄弟。

    2. 将名为“WK”的二进制文件从Xcode中的iOS 8.2 SDK复制到新的WatchKitSupport目录。这个二进制文件可以在以下位置找到:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/Library/Application Support / WatchKit /

    3. 确保未以任何方式触摸/重新签名“WK”二进制文件。这对于设备验证很重要。

    4. 压缩应用程序文件夹

    5. 将.zip重命名为.ipa

    6. 扩展时,IPA应包含(至少): xxx.ipa | ________有效载荷/ | ________ WatchKitSupport /                    | _____ WK

      这对我们有用。