美文网首页
【iOS开发】shell脚本打包SDK,并整合

【iOS开发】shell脚本打包SDK,并整合

作者: 半缘魔君 | 来源:发表于2024-01-23 17:32 被阅读0次

最近有需求需要我们打包很多framework(大概10多个,另外还有5个bundle),一直手动打包费时费力,还有可能会出错, 想到可以使用shell脚本来打包.

本文知识点:

变量定义,查看变量内容

path="/Users/xxx/Library/Developer/Xcode/DerivedData"
echo "打包开始: $path"

删除文件夹

rm -rf "$path"

杀掉进程

#杀掉 Xcode
pkill Xcode

读取函数入参

packaging(){
#工程名称(Project的名字) 
#$1 表示第一个参数CaptureSDK
ProjectName=$1
#scheme名字 -
#$2 表示第二个参数CaptureSDKScheme
Scheme=$2
}
packaging "CaptureSDK" "CaptureSDKScheme"

查找文件

#其中“**”是通配符, 下边代码代表“CaptureSDK-”开头的文件
find $path -name "CaptureSDK-*"

#-maxdepth 1 代表查找深度1也就是在path目录下找文件,不在下一级目录查找
find $path -name "CaptureSDK-*" -maxdepth 1

for循环遍历

typeArray="all
all_framework
all_bundle
phone
gimbal
galois
camera
phone_bundle
gimbal_bundle
galois_bundle
camera_bundle"


for i in ${typeArray[@]}
do
    echo '$i'
done

if 语句

#if [ condition ];then,condition所有两边和中括号之前必须有空格
c=1
    if [ $c == 0 ];then
        echo "不支持的参数"
        return
    fi

等待用户输入

read -p "请输入:" CURRENTTYPE
echo "输入了: $CURRENTTYPE"

获取系统时间 年月日时分秒

nowDate=$(date "+%Y-%m-%d %H:%M:%S")
echo "nowData:$nowDate"

监听control+c中止

#control+c 中止后当前函数返回
trap return INT

文件复制

cp $sourecepath $toPath

文件夹复制

cp -r $sourecepath $toPath

播放音频文件

brew 安装 SoX

#终端命令
brew install SoX

#播放,在脚本里写, 播放当前目录下success.mp3
play success.mp3

以上为脚本内使用到的知识点,想深入学习的自己查资料吧

目标

  • 打包framework

方法

使用xcodebuild build

xcodebuild build \
-workspace "$XXX.xcworkspace" \
-scheme "$XXX" \
-configuration "$XXX"

好,大功告成! 别急这是只是1%....

优化

  1. xcode有的时候缓存会出现奇怪的问题,所以我们要clean一下
xcodebuild clean \
-workspace "$XXX.xcworkspace" \
-scheme "$XXX" \
-configuration "$XXX"
  1. framework工程使用cocopods依赖了第三方SDK,要pod update
pod update
  1. 打包完毕之后,需要把framework挪动到一个文件夹,方便分发
cp $sourecepath $toPath
  1. 打包完毕播放提示音
play success.mp3
  1. 打包参数,打包部分framework
allType="
all:                    all framework and bundle;
all_framework:          all framework;
all_bundle:             all bundle;
"
typeArray="all
all_framework
all_bundle"

read -p "请输入打包文件,可选值有: $allType" CURRENTTYPE

#echo "输入了: $CURRENTTYPE"

c=0

for j in ${CURRENTTYPE[@]}

do

    for i in ${typeArray[@]}
    do
        if [ $i == $j ]; then
        c=1
        break
        fi
    done
    if [ $c == 0 ];then
        echo "不支持的参数 $j"
        return
    fi
done
  1. 输出时间
nowDate=$(date "+%Y-%m-%d %H:%M:%S")
echo "nowData:$nowDate"
  1. 打包过程中control+C中断之后停止
trap return INT

相关文章

网友评论

      本文标题:【iOS开发】shell脚本打包SDK,并整合

      本文链接:https://www.haomeiwen.com/subject/rniljdtx.html