自动功能打包展示:
打包演示.png平时自用打包脚本,支持自动上传蒲公英、App Store
这里具体参考的是
1、详解Shell脚本实现iOS自动化编译打包提交
2、iOS自动化打包脚本(shell)
打包准备工作(1个自动打包脚本文件、1个plist文件)
Github地址:https://github.com/90candy/AutoPackage
使用方法:点击下载脚本相关文件
1、将AutoPackage.sh
脚本和autoplist文件夹
拖入项目根目录
后
2、配置打开编辑AutoPackage.sh
中的配置参数(若只打包,则只需配置pro_full_name
即可)
3、再将AutoPackage.sh
脚本文件拖入终端
回车即可执行自动打包脚本
4、执行后按需求选择打包版本(企业版、正式版、测试版、开发版)
5、如果执行脚本时出现如下错误是因为文件权限不足,只需对其授权777即可
-bash: /Users/candy/Desktop/AutoPackage.sh: Permission denied
执行如下授权命令即可(这里的/Users/candy/Desktop/AutoPackage.sh
路径参考上面的)
chmod -R 777 /Users/candy/Desktop/AutoPackage.sh
打包脚本核心内容展示
# 开始打包操作
# 开始时间(用于计算打包脚本执行时间)
begin_time=$(date +%s)
# 获取系统时间
date_string=`date +"%Y-%m-%d_%H-%M-%S"`
# 获取脚本当前所在目录(即上级目录绝对路径)
root_dir=$(cd "$(dirname "$0")"; pwd)/
# 切换到当前脚本的工作目录
cd ${root_dir}
# 获取当前目录名称(父文件夹名字)
d_filename=${PWD##*/} # 打印当前所在目录(basename `pwd`) 或 echo ${d_filename}
# 时间转换函数(秒转分钟)
timeTransformation()
{
if [ $1 -le 0 ]; then
echo "============ 😭请检查项目是否能正常手动打包并导出ipa文件 ======="
exit
fi
if [ $1 -gt 59 ]; then
t_min=$[$1 / 60]
t_second=$[$1 % 60]
echo "============ 本次$2用时:${t_min}分${t_second}秒 ======="
else
echo "============ 本次$2用时:$1秒 ======="
fi
}
echo "============ ${d_filename} 打包开始 ======="
# 默认Release版
pro_environ=Release
# 如果没有使用cocoapods 反之if会处理
pro_clean=project
if [ $pro_suffix == xcworkspace ]; then
pro_clean=workspace
fi
# Clean操作
xcodebuild clean -${pro_clean} ${pro_name}.${pro_suffix} -scheme ${pro_name} -configuration ${pro_environ}
judgementLastIsSuccsess $? "Clean"
# 创建存放 archive和IPA 的文件夹
cd ../
ipa_dir=${d_filename}_${date_string}
mkdir ${ipa_dir}
cd ./${d_filename}
# Archive
xcodebuild archive -${pro_clean} ${pro_name}.${pro_suffix} -scheme ${pro_name} -archivePath ../${ipa_dir}/${pro_name}.xcarchive
judgementLastIsSuccsess $? "Archive"
cd ../
# 导出IPA包
xcodebuild -exportArchive -archivePath ./${ipa_dir}/${pro_name}.xcarchive -exportOptionsPlist ./${d_filename}/autoplist/${pro_plist}.plist -exportPath ./${ipa_dir}
judgementLastIsSuccsess $? "导出IPA包"
# 切换到ipa目录去删除${pro_name}.xcarchive包
cd ./${ipa_dir}
rm -r ${pro_name}.xcarchive
# ipa文件路径(用于上传)
ipa_path="./${pro_name}.ipa"
echo "============ ${d_filename} 打包完成 ======="
# 打包结束时间
end_time=$(date +%s)
# 计算打包时间(秒:s)
cost_time=$[$end_time - $begin_time]
#调用时间转换函数
timeTransformation $cost_time "打包"
########################## 上传蒲公英 #################################
uploadPGY()
{
# 判断配置是否为空,空则代表不上传
if [ -z "$api_key" ] || [ -z "$ukey" ]; then
echo "============ 请先配置蒲公英的 api_key & ukey ======="
return
fi
# 上传开始时间
upload_start_time=$(date +%s)
# 开始上传
echo "============ 正在上传 ${d_filename} 到 蒲公英 ======="
curl -F "file=@${ipa_path}" -F "uKey=${ukey}" -F "_api_key=${api_key}" https://qiniu-storage.pgyer.com/apiv1/app/upload
judgementLastIsSuccsess $? "上传蒲公英"
echo "============ 上传结束 ======="
# 上传结束时间
upload_end_time=$(date +%s)
# 计算上传时间(秒:s)
upload_time=$[$upload_end_time - $upload_start_time]
#调用时间转换函数
timeTransformation $upload_time "上传蒲公英"
}
########################## 上传苹果商店 #################################
uploadAppStore()
{
# 判断配置是否为空,空则代表不上传
if [ -z "$apple_id" ] || [ -z "$apple_pwd" ]; then
echo "============ 请先配置苹果商店的 apple_id & apple_pwd ======="
return
fi
# 上传开始时间
upload_start_time=$(date +%s)
# 开始上传
echo "============ 准备上传 ${d_filename} 到 AppStore ======="
altoolPath="/Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool"
# validate(验证)
echo "============ ${d_filename} 正在验证IPA包 ======="
"$altoolPath" --validate-app -f "$ipa_path" -u "$apple_id" -p "$apple_pwd" -t ios --output-format xml
judgementLastIsSuccsess $? "验证IPA包"
# 上传
echo "============ ${d_filename} 验证结束,正在上传中 ======="
"$altoolPath" --upload-app -f "$ipa_path" -u "$apple_id" -p "$apple_pwd" -t ios --output-format xml
judgementLastIsSuccsess $? "上传App Store"
echo "============ ${d_filename} AppStore - 上传结束 ======="
# 上传结束时间
upload_end_time=$(date +%s)
# 计算上传时间(秒:s)
upload_time=$[$upload_end_time - $upload_start_time]
#调用时间转换函数
timeTransformation $upload_time "上传App Store"
}
if [ $packaging -eq 2 ]; then
uploadAppStore
else
uploadPGY
exit
fi
网友评论