您的位置:首页 > 产品设计 > UI/UE

Xcode9 xcodebuild 命令行打包遇到的坑与解决方案

2017-10-12 14:59 363 查看
主要涉及的打包脚本命令

if [ $xcodeversion -lt
830 ]

then

#Xcode 8.3 以下打包时使用该脚本

xcodebuild -exportArchive -exportFormat ipa -archivePath ./${schemeName}.xcarchive -exportPath ./${schemeName}.ipa -exportProvisioningProfile
"${codesign}"  -configuration ${deployPattern}    
#"Debug"

else

#Xcode 8.3 以上使用打包时,使用该脚本

xcodebuild -exportArchive -archivePath ./${schemeName}.xcarchive -exportPath ./  -exportOptionsPlist ${optionsDevelopmentPlistPath}   -allowProvisioningUpdates

echo "==============================make ipa end `date "+%Y.%m.%d_%H.%M.%S"`=============================="

fi

在Xcode8.3 以前使用上面的打包脚本,Xcode8.3 以下使用下面的命令 

Xcode 8.3 以后脚本打包时,需要提供对应的plist说明文件 plist中主要包含内容如下



在Xcode9之前是不需要provisionProfiles
,在9之后需要加入 [b]provisionProfiles,才可以打包通过
[/b]
    method 包含四种: app-store,
ad-hoc, enterprise, development

 对应不同的打包环境 ,在不同的打包环境下使用不同的value

第一个问题:
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>


第二个问题
Error Domain=IDEProfileLocatorErrorDomain Code=4 "No "iOS App Development" profiles for team '*****' matching '1825adbe-226c-401e-940d-d3dcede386*' are installed." UserInfo={NSLocalizedDescription=No "iOS App Development" profiles for team '*****' matching '1825adbe-226c-401e-940d-d3dcede386a*' are installed., NSLocalizedRecoverySuggestion=Install a profile (by dragging and dropping it onto Xcode's dock item) or specify a different profile in your Export Options property list.}


原因分析: 打包时提供的mehtod 的方法value 不对,改为method 中的value 修改为打包证书相同的环境即可

解决方案:修改method的value为对应的  值,即可

所使用的打包命令:

进入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等
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: