自动化打包流程和手动打包一模一样,只是用脚本解放双手而已。后面会有demo和脚本文件。
示例
准备工作
1.准备一个打包的配置文件(配置文件:包含了证书等信息)
2.上传蒲公英的key
3苹果开发中帐号和密码,如开启了双重验证需要app specific 密码
2.在Demo中复制如下两个plist和脚本,并做修改
脚本中把XXX修改为自己项目信息即可
#使用方法
if[ ! -d ./IPADir ];
then
mkdir -p IPADir;
fi
#工程绝对路径
project_path=$(cd`dirname $0`; pwd)
#工程名 将XXX替换成自己的工程名
project_name=XXX
#scheme名 将XXX替换成自己的sheme名
scheme_name=XXX
#打包模式 Debug/Release
development_mode=Release
#build文件夹路径
build_path=${project_path}/build
#plist文件所在路径
exportOptionsPlistPath=${project_path}/exportAppstore.plist
#导出.ipa文件所在路径
exportIpaPath=${project_path}/IPADir/${development_mode}
echo "请输入你想法发布的方式 ? [ 1:app-store 2:ad-hoc] "
##
readnumber
while([[ $number !=1]] && [[ $number !=2]])
do
echo"笨蛋,只能输入 1 or 2"
echo"请输入你想法发布的方式 ? [ 1:app-store 2:ad-hoc] "
readnumber
done
if[ $number ==1];
then
development_mode=Release
exportOptionsPlistPath=${project_path}/exportAppstore.plist
## 证书名字
else
development_mode=Debug
exportOptionsPlistPath=${project_path}/exportTest.plist
fi
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
# 删除build包
if[[ -d build ]];then
rm -rf build -r
fi
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 '///-------------'
if[ $number ==1];
then
#验证并上传到App Store
# 将-u 后面的XXX替换成自己的AppleID的账号,-p后面的XXX替换成自己的密码
altoolPath="/Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool"
"$altoolPath"--validate-app -f ${exportIpaPath}/${scheme_name}.ipa -u XXX [-p XXX]
"$altoolPath"--upload-app -f ${exportIpaPath}/${scheme_name}.ipa -u XXX -p XXX
else
echo"请输入你要发布的平台 ? [ 1:fir 2:蒲公英] "
##
readplatform
while([[ $platform !=1]] && [[ $platform !=2]])
do
echo"笨蛋,只能输入 1 or 2"
echo"请输入你要发布的平台 ? [ 1:fir 2:蒲公英] "
readplatform
done
if[ $platform ==1];
then
#上传到Fir
# 将XXX替换成自己的Fir平台的token
fir login -T d58c5754d2aff40b4d883ddfefa0d079
fir publish $exportIpaPath/$scheme_name.ipa
else
echo"开始上传到蒲公英"
#上传到蒲公英
#蒲公英aipKey
MY_PGY_API_K=XXX
#蒲公英uKey
MY_PGY_UK=XXX
curl -F"file=@${exportIpaPath}/${scheme_name}.ipa" -F "uKey=${MY_PGY_UK}" -F "_api_key=${MY_PGY_API_K}" https://qiniu-storage.pgyer.com/apiv1/app/upload
fi
fi
echo "\n\n"
echo "已运行完毕>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
exit 0
3.使用(此脚本适用于cocopods工程,没有用到的话pod init一下即可(必须))
在项目路径下执行./shell.sh 即可
上传蒲公英和Fir 需要准备如下
上传蒲公英需要准备:key
上传Fir需要安装插件
打开fir.im官网 查看fir命令行说明即可
操作过程过中出现错误及解决方法
1. xcodebuild:error Unknow build action xx.xcworkspace
我这里的错误是有个文件夹Swift Test 中间出现了空格,删除空格即可
2. 发布到app store时,输入密码后报app specific password 错误(这是因为帐号开启了双重验证,比如:短信验证)
解决如下 去苹果官网https://appleid.apple.com 找到账户设置,安全 生成密码,复制,发布时填写这个密码即可
发布至app store 如下
到此即发布成功了,有空了分享下fastLane自动化打包