无法通过命令行从Xcode导出企业版归档文件,求解决方案
解决Xcode 9.3命令行导出企业版归档失败的问题
我之前也碰到过Xcode界面导出正常,但命令行用xcodebuild导出就卡壳的情况,结合你用的Xcode 9.3版本,咱们从最常见的几个点排查:
1. 检查export_options.plist的配置是否正确
企业版导出对plist的参数有严格要求,这是最容易踩坑的地方。你可以对比下面的标准配置,看看自己的plist有没有遗漏或错误:
<?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> <!-- 必须设置为enterprise,对应企业版导出 --> <key>method</key> <string>enterprise</string> <!-- 替换成你的开发者团队ID,在Apple开发者后台可以找到 --> <key>teamID</key> <string>YOUR_TEAM_ID</string> <!-- Xcode 9.3中如果不需要Bitcode,建议设为false避免编译错误 --> <key>compileBitcode</key> <false/> <!-- 如果需要导出符号文件,设为true,否则false --> <key>includeSymbols</key> <true/> </dict> </plist>
2. 优化命令行参数格式
你的命令里部分参数加了引号(比如"-exportArchive"),虽然不影响,但更规范的写法是只给包含空格的路径加引号,同时可以加上-verbose参数打印详细日志,方便定位错误:
xcodebuild -exportArchive \ -archivePath "archive.xcarchive" \ -exportPath ./exported \ -exportOptionsPlist ./export_options.plist \ -verbose
3. 解决钥匙串权限问题
Xcode界面导出时会自动请求钥匙串权限,但命令行环境下不会,所以可能因为无法访问证书导致失败。执行导出命令前,可以先解锁登录钥匙串:
# 替换成你的钥匙串密码,CI环境下建议用环境变量存储密码,不要明文书写 security unlock-keychain -p "YOUR_KEYCHAIN_PASSWORD" ~/Library/Keychains/login.keychain-db
4. 确认命令行工具指向Xcode 9.3
有时候系统里可能安装了多个Xcode版本,命令行工具可能指向了其他版本。可以用下面的命令检查:
xcode-select -p
如果输出不是Xcode 9.3的路径(默认安装路径为/Applications/Xcode.app/Contents/Developer),可以用下面的命令切换:
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
5. 根据详细日志定位问题
如果上面的步骤都试过还是失败,重点看-verbose输出的错误信息:
- 如果提示证书找不到,检查plist里的teamID是否正确,或者钥匙串里是否安装了对应的企业版证书和描述文件
- 如果提示Bitcode编译错误,把
compileBitcode设为false再尝试
内容的提问来源于stack exchange,提问作者deanWombourne
相关产品推荐
相关产品推荐

