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

8人阅读 评论(0) 收藏 举报
分类:

首先了解到可以使用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

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

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



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

查看评论

CMM2级实施技术问题分析

CMM2级实施技术问题分析于小葆(本文转载自软件工程专家网www.21cmm.com)  对大多数国内软件企业来说,CMM的实施还处于起步阶段,准备实施CMM2级的企业占绝大多数,因此,分析CMM2级...
  • gigix
  • gigix
  • 2002-03-08 09:19:00
  • 1322

iOS ipa打包测试文件生成二维码

将ipa文件生成二维码有两种方式: 第一种方式: 点击打开链接 第二种方式: 点击打开链接 小结: 以上两种方式生成二维码有条件限制: 1.打包用的账号为个人开发者账号,则只能允许配置文件...
  • shiios
  • shiios
  • 2016-03-24 13:35:11
  • 4610

App打包上线和打包测试版

一、打包上传新版本 1.屏蔽Config里的测试版本。 2.修改工程里的发布文件。 3.修改产品里的版本号和build号。 4.通过product里的Archive打包。 5.通过Applicatio...
  • ycz19930423
  • ycz19930423
  • 2016-03-24 10:48:48
  • 1331

iOS 自动打包工具 + 分发测试

前言一直以来打包对我来说都非常痛苦!尤其是当项目上线前需要给测试提供测试包的时候!每打一次包浪费不少时间!在之前公司接触过自动打包,没有做深入地研究,前段时间研究了一下。终于做出了一个较为满意的自动打...
  • user_begin
  • user_begin
  • 2017-01-06 10:57:15
  • 1635

iOS 打包程序生成 .ipa文件, 生成可内部测试的二维码(使用x-code7.0)

首先将模拟器调整为iOS Device然后点击上方Product中的Archive然后程序会运行一次, 如果没有错误的话会进入下面的界面, 然后选中新生成的项目, 点击右边的Export之后会出现如下...
  • Sunny_love92
  • Sunny_love92
  • 2015-10-20 15:39:13
  • 2348

搭建iOS自动化打包平台(利用Jenkins持续集成iOS项目)

最近处于项目测试阶段,频繁的打包耽误了团队很多时间,所以抽出时间来搭建自动化打包平台,实现对iOS和Android项目的打包。而且为了方便团队内部的测试包分发,希望在打包完成后能生成一个二维码,体验用...
  • u013602835
  • u013602835
  • 2017-01-20 18:00:56
  • 15172

2017iOS开发最新的打包测试步骤(亲测)

最近也是忙着修改项目,今天把最近遇到的问题和知识给大家分享一下。有时候我们需要将我们的项目发给测试组进行bug测试,这时候我们就需要把自己的项目打包,生成一个二维码或者链接的形式,给测试组,接下来就是...
  • hbblzjy
  • hbblzjy
  • 2017-02-28 16:11:34
  • 10248

IOS APP上线流程,第一次上线和提交更新版本,超详细,详细的不能再详细了

不管第一次还是第二次APP上线都需要三样东西:开发者证书,appID,描述文件  他们分别长成这个样子:   开发者证书:      appID:appID主要是链接应用程序的一个唯一东西,比如迭代版...
  • ai_pple
  • ai_pple
  • 2016-03-22 09:37:12
  • 5739

详解Shell脚本实现iOS自动化编译打包提交

http://www.tuicool.com/articles/JR3eIrA 时间 2016-07-12 02:14:05 zackzheng 原文 http://zackzheng.inf...
  • lucifer_app3
  • lucifer_app3
  • 2017-02-07 16:42:11
  • 664

iOS开发之打包测试包

今天因为涉及打包测试包,所以记录下。。。。 目的:   主要是为了方便测试程序功能以及查看程序占有的内存。 步骤: 前提条件:有苹果的开发者帐号 1、从钥匙串请求证书-->存储到磁盘-->继续 ...
  • lin1109221208
  • lin1109221208
  • 2016-07-19 11:28:38
  • 466
    个人资料
    持之以恒
    等级:
    访问量: 2万+
    积分: 781
    排名: 6万+
    最新评论