第一个问题
** INTERNAL ERROR: Uncaught exception **
Uncaught Exception: -[__NSCFString objectForKeyedSubscript:]: unrecognized selector sent to instance 0x7fd4c8e38fd0
原因分析:Export Options plist 文件里的格式不对,导致参数无法识别
解决方案:修改 Export Options plist 文件里的格式
第二个问题:
error: exportArchive: "Cicada.app" requires a provisioning profile.
Error Domain=IDEProvisioningErrorDomain Code=9 ""Cicada.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.}
原因分析:取不到 provisioningProfiles 的信息
解决方案:在 Export Options plist 文件里添加以下内容
<key>provisioningProfiles</key>
<dict>
<key>com.lianjia.name</key>
<string>{iOS Provisioning Profiles Name}</string>
</dict>
解释:com.lianjia.name -> APP 对应 bundleID
{iOS Provisioning Profiles} -> iOS Provisioning Profiles 对应的 Name
第三个问题
NSLocalizedDescription=Provisioning profile "General" doesn't include signing certificate "iPhone Developer: ******".}
原因分析:Provisioning Profiles 文件未更新
解决方案: 资源库---->MobileDevice---->Provisioning Profiles,将里面的齿轮文件全部删除,然后到 Xcode 下的 Preferences 下 Account 重新下载新的齿轮文件以及证书即可
第四个问题
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.}
原因分析:因为解决上一个问题的时候删除了 Provisioning Profiles 文件,起初设置的 profile 的 UUID,导致设置的对应的 Profiles UUID 找不到了
解决方案:修改 Export Options plist 文件里的 provisioningProfiles,改为 profile name 即可,可避免 UUID 每次更新后都会变的问题
所使用的打包命令:
进入 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 等