我有一个项目,其中包含针对不同构建环境的不同目标。我正在使用xcodebuild
在Jenkins上获取IPA文件。我想定义一个exportOptionsPlist文件,并为不同的目标分配不同的变量。例如,对于method
,Dev目标应具有development
,而Prod目标应具有app-store
。为此,我在“构建设置”中定义了User-Defined
设置。
P.S:每个目标只有Debug和Release选项,每个目标都有IPA_EXPORT_METHOD。
我的问题是,尝试获取IPA时出现以下错误(从ExportOptionsPlist文件读取IPA_EXPORT_METHOD ):
错误域= IDEFoundationErrorDomain代码= 1“密钥'方法'的exportOptionsPlist错误:预期{应用商店,临时,企业,开发,验证}之一,但找到了$ {IPA_EXPORT_METHOD}” UserInfo = {NSLocalizedDescription =关键“方法”的exportOptionsPlist错误:预期为{app-store,ad-hoc,Enterprise,Development,validation}之一,但找到了$ {IPA_EXPORT_METHOD}}
如何获取存档:
$ xcodebuild -workspace CLI.xcworkspace -scheme CLI -sdk iphoneos -configuration AppStoreDistribution archive -archivePath $PWD/build/CLI.xcarchive
如何获取IPA:
$ xcodebuild -exportArchive -archivePath $PWD/build/CLI.xcarchive -exportOptionsPlist exportOptions.plist -exportPath $PWD/build
导出选项列表:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>compileBitcode</key>
<false/>
<key>destination</key>
<string>export</string>
<key>method</key>
<string>${IPA_EXPORT_METHOD}</string>
<key>provisioningProfiles</key>
<dict>
<key>com.iamdeveloper.myproject.dev</key>
<string>My Provision File</string>
</dict>
<key>signingCertificate</key>
<string>iPhone Developer</string>
<key>signingStyle</key>
<string>manual</string>
<key>stripSwiftSymbols</key>
<true/>
<key>teamID</key>
<string>XXXXXXXXX</string>
<key>thinning</key>
<string><thin-for-all-variants></string>
</dict>
</plist>
编辑:我可以为不同的目标定义不同的exportOptionsPlists。这解决了我的问题,但我想用一个plist文件来实现。