现在自己工程配置好所有的证书 等等 运行没问题后 CD 到项目跟目录
1.生成archive包,此处的”ScalperMerchant”是项目的名字
“-workspace”: 如果项目中没有使用到CocoaPods,则该命令可以不用。
“-scheme”: 和工程名字一样,
“-archivePath”: 后面跟的是编译后生成的archive包的路径。
xcodebuild -workspace ScalperMerchant.xcworkspace -scheme ScalperMerchant -archivePath build/ScalperMerchant.xcarchive archive
2.命令执行成功后会显示”* ARCHIVE SUCCEEDED *“,在工程下面生成了一个build文件夹,iCan xcarchive包已经生成
xcodebuild -exportArchive -archivePath build/ScalperMerchant.xcarchive -exportPath build -exportOptionsPlist ExportOptions.plist
导出ipa 包
ExportOptions.plist文件可以自己在Xcode-Product-archive 打出来后 export出来 后 会获取到plist文件
第二种命令
进入build路径clean一下你的工程
xcodebuild clean -workspace ${TARGET_NAME}.xcworkspace -scheme ${TARGET_NAME} -configuration ${BUILD_TYPE}
archive导出.xcarchive文件
xcodebuild archive -workspace ${TARGET_NAME}.xcworkspace -scheme ${TARGET_NAME} -archivePath {ARCHIVEPATH}
导出ipa包
xcodebuild -exportArchive -archivePath "${ARCHIVEPATH}/${TARGET_NAME}.xcarchive" -exportPath ${EXPORTPATH} -exportOptionsPlist ${EXPORTOPTIONSPLIST}‘
解释:
${TARGET_NAME}
项目对应targets的名字${BUILD_TYPE}
打包类型 Debug,Release 等${archivePath} .xcarchive
文件导出目录${EXPORTPATH}
导出.ipa包的目录${EXPORTOPTIONSPLIST}
exportOptionsPlist文件所在目录,可判断development, ad-hoc等
实例
xcodebuild clean -workspace ScalperMerchant.xcworkspace -scheme ScalperMerchant -configuration Debug
xcodebuild archive -workspace ScalperMerchant.xcworkspace -scheme ScalperMerchant -archivePath build/ScalperMerchant.xcarchive archive
xcodebuild -exportArchive -archivePath build/ScalperMerchant.xcarchive -exportPath build -exportOptionsPlist ExportOptions.plist
如果要打 release 的 包 改变
xcodebuild clean -workspace ScalperMerchant.xcworkspace -scheme ScalperMerchant -configuration Release
然后在ExportOptions.plist 修改 method 为 app-store
method 包含四种: app-store, ad-hoc, enterprise, development
provisioningProfiles 修改为 上线配置文件
signingCertificate 修改为上线证书
第一个报错
error: exportArchive: "XXX.app" requires a provisioning profile.Error Domain=IDEProvisioningErrorDomain Code=9 ""XXX.app" requires a provisioning profile." UserInfo={NSLocalizedDescription="Cicada.app" requires a provisioning profile., NSLocalizedRecoverySuggestion=Add a profile to the "provisioningProfiles" dictionary in your Export Options property list.}
原因分析:取不到plist 中的provisioningProfiles的信息
解决方案:在Export Options plist文件里添加以下内容 provisioningProfiles 字典 key->APP对应bundleID value->{iOS Provisioning Profiles}
<key>provisioningProfiles</key>
<dict>
<key>com.lianjia.name</key>
<string>{iOS Provisioning Profiles Name}</string>
</dict>
第二个报错
Provisioning Profile。因为xcodebuild命令如果没有指定具体参数,就会采用项目中的默认配置。配置好项目中的
BundleIdentifier 和 Provisioning Profile 文件,保证项目正常运行后,再次使用命令,就能得到正确的提示。
第三个报错
解决方案:修改method的value为对应的 值,即可
第四个报错
Error Domain=NSCocoaErrorDomain Code=3840 "No value." UserInfo={NSDebugDescription=No value., NSFilePath=/var/folders/_r/3_bstv751wvd5312csbl2hp00000gn/T/ipatool-json-filepath-h8AXks}
Xcode-Product-archive 打出来后 export出来时
以后遇到了再写