iOS 自动化打包生成二维码提交测试或上线

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_30932479/article/details/79976024

首先了解到可以使用Shell脚本来实现自动化。

脚本语言是像剧本一样教计算机办某件事的语言。

所以我们得把想让机器做的事写在脚本上,

Shell Script,Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高,它使用了Linux/Unix下的命令。换一种说法也就是,shell script是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与指令写在里面,然后用正规表示法,管道命令以及数据流重导向等功能,以达到我们所想要的处理目的。

学习Shell点这里 点击打开链接 

其次,确定让机器做什么,下面来进行分析脚本文件里的内容:

#首先创建ipa生成后的文件夹
creatIPAFile() {
    if [ ! -d ./IPADir ];  # -d 检测文件是否是目录,如果是,则返回true
    then
        mkdir -p IPADir;  # mkdir -p 命令作用:创建不存在的目录
    fi
}


#defin 定义变量,配置各种参数
setUpData() {

    fir_Token="1234534634"  #fir.im Token

    project_path=$(cd `dirname $0`; pwd) #工程绝对路径   接收参数

    project_name="TDService" #工程名

    scheme_name=$project_name #scheme名

    development_mode=Debug #打包模式 Debug/Release

    build_path=${project_path}/build #build文件夹路径

    exportOptionsPlistPath=${project_path}/exportTest.plist #plist文件所在路径

    exportIpaPath=${project_path}/IPADir/${development_mode} #导出.ipa文件所在路径

}

#交互处理
handleData() {

    echo "请输入你想导出版本的代号 ? [ 1:app-store 2:dev] "
    read number  # 传入参数,选择 1 或 2
    while([[ $number != 1 ]] && [[ $number != 2 ]]) # [[ ]]逻辑运算
    do
    echo "请填写1或2"
    echo "请输入你想导出版本的代号 ? [ 1:app-store 2:dev] "
    read number
    done

    if [ $number == 1 ];then
    development_mode=Release
    exportOptionsPlistPath=${project_path}/exportAppstore.plist
    else
    development_mode=Debug
    exportOptionsPlistPath=${project_path}/exportTest.plist
    fi

}

#xcodebuild命令 打包
buildtarget() {
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 \  # -allowProvisioningUpdates 允许自动更新描述文件(看情况添加)

-configuration ${development_mode} \
-exportPath ${exportIpaPath} \
-exportOptionsPlist ${exportOptionsPlistPath} \
-quiet || exit

if [ -e $exportIpaPath/$scheme_name.ipa ]; then
echo '///----------'
echo '/// ipa包已导出'
echo '///----------'
open $exportIpaPath  # 打包后打开ipa所在文件夹
else
echo '///-------------'
echo '/// ipa包导出失败 '
echo '///-------------'
fi
echo '///------------'
echo '/// 打包ipa完成  '
echo '///-----------='
echo ''

echo '///-------------'
echo '/// 开始发布ipa包 '
echo '///-------------'

}

#上传处理
uploadSetting() {
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 -t ios --output-format xml
"$altoolPath" --upload-app -f ${exportIpaPath}/${scheme_name}.ipa -u  XXX -p XXX -t ios --output-format xml
else

#上传到Fir 将XXX替换成自己的Fir平台的token
fir login -T $fir_Token
fir publish $exportIpaPath/$scheme_name.ipa

fi
exit 0
}


#以上是函数,下面是函数调用 按顺序调用
#创建ipa生成后的文件夹
creatIPAFile

#defin 定义变量,配置各种参数
setUpData

#交互处理
handleData

#xcodebuild命令 打包
buildtarget

#上传处理
uploadSetting

其中用到了xcodebuild命令,用起来也很方便,参看点击打开链接

终端输入命令:touch shell.sh 

创建一个脚本文件写入上面的代码,拉入项目目录里。

然后创建两个plist文件,用来配合脚本文件的参数配置:






创建好之后也拖入项目目录里。

最后,在终端配置第三方平台的上传,以fir.im为例,在官网上注册并拿到Token:

终端输入命令:gem install fir-cil

如果出现失败,请参看我的上一篇文章。

至此相关配置已经结束,开始运行:



接下来交给机器了,执行成功了下面会显示。

阅读更多
换一批

没有更多推荐了,返回首页