错误提示:
/Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool: No such file or directory
升级xcode11后,你会发现找不到Application loader这个工具了。
- xocde10以前可以参考我的这个文档上传ipa:https://www.jianshu.com/p/87a9160a9906
如何使用xcrun altool
(精简教程看不懂看详细教程图片多一点)
精简教程:
xcrun altool之前可以使用开发者账号和密码进行-登录-验证-上传。但听说不行了,现在需要用密钥的方式,用到的2个命令如下:
验证: xcrun altool --validate-app -f xxx.ipa -t ios --apiKey xxx --apiIssuer xxx --verbose
上传: xcrun altool --upload-app -f xxx.ipa -t ios --apiKey xxx --apiIssuer xxx --verbose
2个命令分别对应 验证IPA 和 上传IPA,都需要使用3个参数ipa路径、apiKey、apiIssuer
一:路径不用说了,可以使用xcodebuild打包或用OrganizerExport导出App store包。
二:apiKey和apiIssuer需要去开发者官网-用户和访问-密钥-去新增。
详细教程:
一.查询并记录issuser和apiKey(密钥 ID)
登录https://appstoreconnect.apple.com/ 然后选择【用户与访问】--->【密钥】
查询信息:issuser和apiKey(密钥 ID)
二.下载公钥保存在本地
摘自官方的一段话
[要注意到密钥只能下载一次,下载链接就会隐藏]
### 下载并存储私钥
生成API密钥后,您将有机会下载密钥的私有部分。私钥可一次下载。
1. 登录到[App Store Connect](https://appstoreconnect.apple.com/)。
2. 选择“用户和访问”,然后选择“ API密钥”选项卡。
3. 点击新API密钥旁边的“下载API密钥”链接。
仅当尚未下载私钥时,才会显示下载链接。Apple不保留私钥的副本。
将您的私钥存储在安全的地方。
点击下载即可
然后将下载好的xxxxxx.p8文件保存到需要放到一个固定目录下
'./private_keys'或者'~/private_keys' 或者'~/.private_keys' 或者'/.appstoreconnect/private_keys'都行,我这里选择/private_keys
创建目录: mkdir ~/private_keys
复制文件到此目录: cp /Users/lulu/Downloads/AuthKey_XXXXXX.p8 ~/private_keys
[执行命令时注意替换自己的文件路径和名称]
三.执行ipa上传命令
验证app:
xcrun altool --validate-app -f xxx/xxx/xxx.ipa -t ios --apiKey xxxxxxxx --apiIssuer xxxxxx --verbose
执行完提示No errors validating archive代表验证通过如下:
No errors validating archive at '/Users/lulu/workspace/appbuild/AutoPackage/app/ipa/123527_201911111458.ipa'
上传app:
xcrun altool --upload-app -f xxx/xxx/xxx.ipa -t ios --apiKey xxxxxxxx --apiIssuer xxxxxx --verbose
执行后又自动检查了一些数据然后显示了上传进度:
最后提示: 1 packages were uploaded successfully
判断检查成功和上传成功的条件
去掉--verbose参数执行命令时会分别有以下提示信息:
- No errors validating archive at '/Users/lulu/workspace/appbuild/AutoPackage/app/ipa/123501_201911111040.ipa'
- No errors uploading '/Users/lulu/workspace/appbuild/AutoPackage/app/ipa/123501_201911111040.ipa'
可以使用脚本来判断是否包含No errors validating archive和No errors uploading来判断脚本是否上传成功或者失败
图:
参考脚本
cnt0=`xcrun altool --validate-app -f "${root}/app/ipa/${applicationId}_${time}.ipa" -t ios --apiKey "${ApiKey}" --apiIssuer "${ApiIssuer}"`
echo $cnt0
cnt=`echo $cnt0 | grep “No errors validating archive” | wc -l`
if [ $cnt = 1 ] ; then
cnt0=`xcrun altool --upload-app -f "${root}/app/ipa/${applicationId}_${time}.ipa" -t ios --apiKey "${ApiKey}" --apiIssuer "${ApiIssuer}"`
echo $cnt0
cnt=`echo $cnt0 | grep “No errors uploading” | wc -l`
if [ $cnt = 1 ] ; then
echo "------------------------------$(date "+%Y-%m-%d %H:%M:%S"):上传IPA成功"
else
echo "------------------------------$(date "+%Y-%m-%d %H:%M:%S"):上传IPA失败"
error_exit
fi
else
echo "------------------------------$(date "+%Y-%m-%d %H:%M:%S"):上传IPA失败,验证api失败"
error_exit
fi
上传成功后去我的app上查看
官方App Store Connect API创建API密钥文档:
(https://developer.apple.com/documentation/appstoreconnectapi/creating_api_keys_for_app_store_connect_api)