快速上传编译后的xxx.app
局限:需要已经编译出xxx.app,架构限制(一般为
arm64),使用模拟器编译的xxx.app不可用,需要切换为Any iOS Device编译优势:根据已有xxx.app快速上传
这种方式需要两个脚本完成,需把两个脚本保存到项目目录的script文件夹下
由于文件生成在工程目录下避免提交到git需要在.gitignore忽略文件中加上
# 团队开发中每个人build后的路径都不一样
script/build_path.txt
# xxx项目名字
xxx_IPA/
执行步骤:
- 编译出xxx.app
- 获取编译时保存的xxx.app路径
- 新建Payload文件夹
- 复制xxx.app到Payload文件夹下
- 压缩Payload文件夹Payload.zip
- 修改后缀为Payload.ipa
- 根据具体平台上传包
脚本1: 主要负责在项目编译时获取 app 包路径(需要添加到项目的Build Phases中)
会在项目目录下的script文件加下保存build_path.txt文件
#!/bin/bash
text="$BUILD_DIR"
file_path="$(pwd)"
echo "$text" > "$file_path/build_path.txt"
echo "路劲保存成功"
脚本2:把app压缩为ipa包后上传到指定平台
#!/bin/bash
# 项目名字
target_name=“xxx”
# fir.im token
FIRTOKEN=xxx
# 钉钉机器人token
DINGTALKTOKEN=xxx
#编译时保存的路径文件
file_path="$(pwd)/build_path.txt"
build_path=$(cat "${file_path}")
# app 路径
build_app_path="${build_path}/Debug-iphoneos/${target_name}.app"
# 打包路径保存路径
sava_ipa_path="$(pwd)/${target_name}_IPA"
tmp_payload="${sava_ipa_path}/Payload"
ipa_file="${sava_ipa_path}/${target_name}.ipa"
read -p "设置修改的内容:" line
msg=$line
echo "$sava_ipa_path"
#清空文件夹
rm -rf "$tmp_payload/"
rm -rf "$ipa_file"
# 检查app文件
if [ ! -d "$build_app_path" ]; then
echo "项目未构建 上传包失败"
exit
fi
if [ ! -d "$tmp_payload" ]; then
mkdir -p "$tmp_payload"
echo "新建打包临时文件夹: $tmp_payload"
else
echo "文件夹已存在:$tmp_payload"
fi
#移动app到临时指定文件中
cp -R "$build_app_path" "${tmp_payload}/${target_name}.app"
cd "$sava_ipa_path"
echo "\n\n开始压缩ipa\n\n"
zip -r "Payload.ipa" "Payload"
echo "开始压缩后 $ipa_file"
if [ ! -d "$ipa_file" ]; then
echo "~~~~~~~~~~~~~~~~上传ipa到fir.im~~~~~~~~~~~~~~~~~~~"
fir p "Payload.ipa" --open=true -S -R --skip-update-icon -T $FIRTOKEN -D --dingtalk-access-token=$DINGTALKTOKEN --dingtalk-custom-message=“xxx 修改内容:$msg" -c=“xxx 修改内容:$msg"
else
echo "上传ipa到fir.im失败"
fi
上面为上传到fir.im 上传到蒲公英参考下面
# 上传蒲公英
echo "~~~~~~~~~~~~~~~~上传ipa到蒲公英~~~~~~~~~~~~~~~~~~~"
buildQRCodeURL=$(curl -F "file=@${IPAPATH}" -F "_api_key=${PgyerApiKey}" -F "buildUpdateDescription=${varBuildUpdateDescription}" https://www.pgyer.com/apiv2/app/upload | jq -r '.data.buildQRCodeURL')
echo "下载链接\n${buildQRCodeURL}"
curl 'https://oapi.dingtalk.com/robot/send?access_token=xxx' \
-H 'Content-Type: application/json' \
-d "{\"msgtype\":\"markdown\",\"markdown\":{\"title\":\"iOS 打包完成\",\"text\":\"\"},\"isAtAll\":false}}"
if [ -n "$buildQRCodeURL" ];
then
echo "\n~~~~~~~~~~~~~~~~上传蒲公英失败~~~~~~~~~~~~~~~~~~~"
else
echo "\n~~~~~~~~~~~~~~~~上传蒲公英成功~~~~~~~~~~~~~~~~~~~"
fi
添加捷径执行打包脚本
配置快捷指令打包
- 添加
获取变量修改为 如果没有输入请求文本 - 添加
运行Shell脚本在其中添加需要运行的脚本
快捷指令内部使用的shell是bash,如果你电脑默认shell是zsh,需要在~/.bash_profile文件中添加 source ~/.zshrc 在步骤2中第一行添加 source ~/.bash_profile 不然会遇到指令无法识别的情况
source ~/.bash_profile
cd /Users/macbook/xxx/
git reset --hard HEAD
git pull
pod install
sh archive_upload_ipa.sh
最终如下图: