一、实现
1.在项目根目录下创建个文件夹,然后在里面添加两个文件夹,如下图所示:
2.exportAppstore.plist中配置如下:
左边为bundle id名,右边为provisioning profile的文件名
3.shell.sh中脚本内容如下:
#日期与时间
currentDate=`date +%Y-%m-%d,%T`
#工程绝对路径
project_path=$(cd.. $(dirname ${BASH_SOURCE[0]});pwd)
#工程名 将XXXX替换成自己的工程名
project_name=XXXX
#scheme名 将XXX替换成自己的sheme名
scheme_name=XXXX
#打包模式 Release
development_mode=Release
##########检查code signing identity是否正确
#将gringotts的更改为自己项目名
projFilePath=`find $project_path -name "XXXX(替换成自己的项目名).xcodeproj" -type d`
#echo projFilePath = $projFilePath
##########检查archive 的build configuration是否正确
projNameTmp=${projFilePath##*\/}
projName=${projNameTmp%.*}
echoprojName=$projName
#plist文件所在路径
profFolderPath=${projFilePath%/*}
cd"$profFolderPath"
exportOptionsPlistPath=$profFolderPath/appstoreArchive/exportAppstore.plist
#build文件夹路径
build_path="$HOME/Desktop/$project_name"_appstore_"$currentDate"
#导出.ipa文件所在路径
exportIpaPath="$HOME/Desktop/$project_name"_appstore_"$currentDate"
echo '///-----------'
echo '/// 正在清理工程'
echo '///-----------'
xcodebuild \
clean -configuration ${development_mode} -quiet ||exit
echo '///--------'
echo '/// 清理完成'
echo '///--------'
echo ''
echo '///-----------'
echo'/// 正在编译工程:'${development_mode}
echo '///-----------'
xcodebuild \
archive -workspace ${project_path}/${project_name}.xcworkspace \
-scheme ${scheme_name} \
-configuration ${development_mode} \
-archivePath ${build_path}/${project_name}.xcarchive -quiet ||exit
echo '///--------'
echo '/// 编译完成'
echo '///--------'
echo ''
echo '///----------'
echo '/// 开始ipa打包'
echo '///----------'
xcodebuild -exportArchive -archivePath ${build_path}/${project_name}.xcarchive \
-configuration ${development_mode} \
-exportPath ${exportIpaPath} \
-exportOptionsPlist ${exportOptionsPlistPath} \
-quiet ||exit
if[ -e $exportIpaPath/$scheme_name.ipa ];
then
echo '///----------'
echo '/// ipa包已导出'
echo '///----------'
open $exportIpaPath
else
echo '///-------------'
echo '/// ipa包导出失败 '
echo '///-------------'
fi
echo '///------------'
echo '/// 打包ipa完成 '
echo '///-----------='
echo ''
echo '///-------------'
echo '/// 开始验证ipa包 '
echo '///-------------'
#验证并上传到App Store
#因为xcode11中删掉了Application Loader,需要换一种方法
xcrun altool --validate-app -f ${exportIpaPath}/${scheme_name}.ipa -t ios --apiKey xxxx --apiIssuer xxxx --verbose
echo '///-------------'
echo '/// 开始发布ipa包 '
echo '///-------------'
xcrun altool --upload-app -f ${exportIpaPath}/${scheme_name}.ipa -t ios --apiKey xxxx --apiIssuer xxxx --verbose
echo "\n\n"
echo "已运行完毕>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
exit 0
4.获取apikey 和Issuer ID,操作如下:
apiKey 即密钥ID
apiIssuer 即 Issuer ID
最最重要的是,你需要将密钥ID下载下来,打开~/.appstoreconnect/private_keys,然后在这个下面新建一个文件夹private_keys,然后把下载下来的密钥ID文件放在这个文件下,否则执行上面的命令会报错
5.执行shell脚本即可