我终于设法通过 xcodebuild 导出 ipa 文件。由于 xctool 是基于 xcodebuild 构建的,因此这个答案可能会有所帮助。
首先,当您创建扩展时,扩展的目标将嵌入到您的主应用程序的方案中。
因此,没有必要使用两种方案。
然后,在您的项目设置页面中,创建一个新配置,例如AdHoc
. 然后你可以Provisioning Profile
在你的两个目标的构建设置中设置一个新的。
(项目设置)
(一个目标的构建设置)
然后为您的目标设置正确的配置文件(并且您最好将其设置code sign identity
为自动,以便 Xcode 可以确定要使用哪个代码签名标识)。
下一步,您可以使用 xcodebuild 和您刚刚在上面创建的新配置来归档您的应用程序:
xcodebuild -project Extension\ Demo.xcodeproj -scheme Extension\ Demo -sdk iphoneos -archivePath ./Build/extension-demo.xcarchive -configuration AdHoc archive
在此步骤中,协同设计将通过您指定的配置文件分别对您的两个目标进行签名。
最后,将.xcarchive
文件导出到ipa
,再次使用 xcodebuild;
xcodebuild -exportArchive -archivePath ./Build/extension-demo.xcarchive -exportPath ./Build/extension-demo.ipa -exportWithOriginalSigningIdentity
请注意-exportWithOriginalSigningIdentity
已设置,因此 xcodebuild 不会重新签署您的 ipa,并且 xcarchive 文件中的代码签名被保留。