iOS通过捷径秒传测试包

383 阅读2分钟

快速上传编译后的xxx.app

局限:需要已经编译出xxx.app,架构限制(一般为arm64),使用模拟器编译的xxx.app不可用,需要切换为Any iOS Device编译

优势:根据已有xxx.app快速上传

这种方式需要两个脚本完成,需把两个脚本保存到项目目录的script文件夹下

由于文件生成在工程目录下避免提交到git需要在.gitignore忽略文件中加上

# 团队开发中每个人build后的路径都不一样
script/build_path.txt
# xxx项目名字
xxx_IPA/
执行步骤:
  1. 编译出xxx.app
  2. 获取编译时保存的xxx.app路径
  3. 新建Payload文件夹
  4. 复制xxx.app到Payload文件夹下
  5. 压缩Payload文件夹Payload.zip
  6. 修改后缀为Payload.ipa
  7. 根据具体平台上传包

脚本1: 主要负责在项目编译时获取 app 包路径(需要添加到项目的Build Phases中

会在项目目录下的script文件加下保存build_path.txt文件       

#!/bin/bash
text="$BUILD_DIR"
file_path="$(pwd)"

echo "$text" > "$file_path/build_path.txt"

echo "路劲保存成功"

IMG_3.png

脚本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\":\"![downloadurl](${buildQRCodeURL})\"},\"isAtAll\":false}}"
 
  if [ -n "$buildQRCodeURL" ];
    then
    echo "\n~~~~~~~~~~~~~~~~上传蒲公英失败~~~~~~~~~~~~~~~~~~~"
  else
    echo "\n~~~~~~~~~~~~~~~~上传蒲公英成功~~~~~~~~~~~~~~~~~~~"
  fi

添加捷径执行打包脚本

配置快捷指令打包

  1. 添加获取变量修改为 如果没有输入请求 文本
  2. 添加运行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

最终如下图: IMG_6.png