iOS 测试 xcodebuild 命令行打包遇到的坑与解决方案 2017

第一个问题

** 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文件里添加以下内容

provisioningProfiles
    
        com.lianjia.name
        {iOS Provisioning Profiles Name}
    

解释:com.lianjia.name -> APP对应bundleID
{iOS Provisioning Profiles} -> iOS Provisioning Profiles 对应的Name

 

iOS 测试 xcodebuild 命令行打包遇到的坑与解决方案 2017_第1张图片

第三个问题
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每次更新后都会变的问题

所使用的打包命令:

  1. 进入build路径clean一下你的工程
    xcodebuild clean -workspace ${TARGET_NAME}.xcworkspace -scheme ${TARGET_NAME} -configuration ${BUILD_TYPE}

  2. archive导出.xcarchive文件
    xcodebuild archive -workspace ${TARGET_NAME}.xcworkspace -scheme ${TARGET_NAME} -archivePath {ARCHIVEPATH}

  3. 导出ipa包
    xcodebuild -exportArchive -archivePath "${ARCHIVEPATH}/${TARGET_NAME}.xcarchive" -exportPath ${EXPORTPATH} -exportOptionsPlist ${EXPORTOPTIONSPLIST}

解释:

  1. ${TARGET_NAME} 项目对应targets的名字
  2. ${BUILD_TYPE} 打包类型 Debug,Release 等
  3. ${archivePath} .xcarchive文件导出目录
  4. ${EXPORTPATH} 导出.ipa包的目录
  5. ${EXPORTOPTIONSPLIST} exportOptionsPlist文件所在目录,可判断development, ad-hoc等

你可能感兴趣的:(XCode)