iOS自动化打包到Appstore

一、实现

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脚本即可

你可能感兴趣的:(iOS自动化打包到Appstore)