目前我正在使用bash脚本来构建和归档我们的iOS应用程序。随着"Watch"的推出,我发现我的脚本不再能够像以前那样创建必要的.ipa文件。
构建将生成一个.app文件,我将使用XCRUN
调用PackageApplication
来创建.ipa。
是否有人能够通过命令行/脚本成功创建一个带有多个.app文件的.ipa文件?
使用Xcode 6.2
更新
现在使用Xcode 7 GM和OSX 10.10.4。
对于"测试"构建,我遇到了一段困难,因为开发人员总是更改配置文件,所以我制作了2个构建;一个通过命令行,另一个通过IDE(Xcode)。我将.ipa扩展名改为.zip,并比较了2。
IDE的良好构建生成了一个名为"归档的扩展权限.exent"的文件,该文件正确定义了所有签名标识。
我将这个文件复制到另一个目录,并使用它来注入所有其他后续构建。构建现在可以在手机上加载&注意测试。
下面是一个如何做到这一点的例子。有点黑客,但它是有效的。
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
我找到了一个解决方案,该解决方案正在处理具有watch、app和扩展名的项目的归档文件。
xcodebuild -exportArchive -archivePath AppName.xcarchive/ -exportPath AppName.ipa -exportFormat ipa -exportWithOriginalSigningIdentity
这个命令基本上使用相同的签名标识和配置文件来从原始xcarchive文件导出ipa。
我们有一些工作要生成包含iPhone应用程序和apple watch应用程序的.ipa。
在使用Xcodebuild生成.app之后,在bash脚本中,我们执行以下
A)
-
创建应用程序名为的目录
-
在应用程序目录内创建名为Payload 的子目录
-
将.app复制到Payload目录中
B)
-
在应用程序目录内部创建名为WatchKitSupport的子目录,作为Payload的同级目录。
-
将名为"WK"的二进制文件从Xcode中的iOS 8.2 SDK复制到新的WatchKitSupport目录中。此二进制文件可在以下位置找到:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/Libary/Application Support/WatchKit/
-
确保"WK"二进制文件没有以任何方式被触摸/重新签名。这对于设备上的验证非常重要。
-
压缩应用程序文件夹
-
将.zip重命名为.ipa
展开时,IPA应(至少)包含:xxx.ipa|________有效载荷/|________WatchKitSupport/|_____WK-
这对我们有用。