【ios开发技术】IOS项目工程自动打包并发布(用脚本实现打包)

IOS工程自动打包并发布脚本实现 文章首发地址:http://webfrogs.me/2013/02/18/ios-automation/ 作者:webfrogs 转载请注明出处。 前言 IOS的开发过程中,当需要给测试人员发布测试包的时候,直接使用xcode来做的效率是非常低下的。尤其是当有一点小改动需要重新出包时,那简直是个折磨的人的工作。通过一番研究后,遂决定写一系列脚本,以代替人工完 阅读详情


前言


IOS的开发过程中,当需要给测试人员发布测试包的时候,直接使用xcode来做的效率是非常低下的。尤其是当有一点小改动需要重新出包时,那简直是个折磨的人的工作。通过一番研究后,遂决定写一系列脚本,以代替人工完成打包和发布的过程。

目前脚本已经完成,基本可以满足我目前的需求。现将其开源,托管在github上,项目地址:点击这里

思路


借助xcode所附带的“Command Line Tools”,可以通过命令行来完成IOS工程的编译和打包工作。脚本正是基于此完成的。

本套脚本分为三个部分:负责编译工程并打包的脚本ipa-build,负责生成itms-services协议文件的脚本ipa-publish,以及负责将ipa-publish脚本生成文件上传到服务器的脚本upload。

其中,由于我自己的情况是服务器端的同事给我了内部测试服务器的sftp的上传权限,所以这个upload脚本主要实现了使用sftp来上传的功能。具体可以实际情况来做修改。

关于itms-services协议的一些内容,可以参考我之前的文章:《shell脚本实现ipa一键安装(itms-services协议)》

注意:默认安装完的xcode并没有自带“Command Line Tools”,需要在xcode中选择后下载才能使用

实现


打开工程后,会发现本套脚本中包含好几个shell文件。下面对其功能做说明:

ipa-build:  编译xcode工程并生成ipa文件
ipa-publish: 生成符合itms-services协议的文件,并发布到服务器。
sendEmail:  stmp发送email的脚本。(别人写的)
sftpDownloadFile: 通过sftp协议下载文件
sftpUploadFile: 通过sftp协议上传文件
updateLocalIndexHtml:   对索引文件进行处理(二进制文件,非shell脚本)
uploadItemsServicesFiles:   将itms-services协议文件上传到服务器

实际使用的脚本,只有"ipa-build"和"ipa-publish"这两个。其他文件会被ipa-publish这个脚本调用的依赖文件。其中出 了"updateLocalIndexHtml"是我用objc写的一个用来进行文本处理的编译后的二进制文件,其余均为shell脚本。

shell脚本实现,大家可以打开脚本来看一下,里面的注释算是很详细了。不需要太多说明。

其中值得一提的就是我在写sftp协议上传功能的时候,碰到了一个问题就是使用脚本来自动输入密码,也就是交互式脚本的编写。最后选择了expect来完成,因为我发现mac系统里自带了这个expect命令。

使用


在编写脚本时,我已经考虑到,要尽量使这个脚本使用起来简单方便。如果只需要打包,那么只使用ipa-build脚本即可。如果需要用itms- services协议来发布,则再运行ipa-publish脚本即可。在ipa-publish脚本中调用了upload脚本,所以upload脚本不 需要单独使用。

ipa-build脚本使用方法:

ipa-build脚本绝对路径 参数1 参数2

其中,参数1是IOS工程的根路径,是必输项。参数2可以不输入,是可选的,含义是编译时的工程configuration类型,有4种类型可选:Debug, AdHoc,Release, Distribution。默认是Release。

ipa-build脚本运行后,会在IOS工程根路径下生成名为“build”的文件夹,在这个文件夹中又有一个名为“ipa-build”的文件夹,打包所生成的最新ipa包就在其中。

ipa-publish脚本使用方法:

ipa-publish脚本绝对路径 参数1 参数2

参数1是IOS工程的根路径,是必输项。参数2是可选的,含义是当上传文件成功后是否发送email通知,y为发送,n为不发送,默认的值是不发送。

1.compile and package xcode project or workspace

You can do this by using "ipa-build" shell script.

This ipa-build script is created to compile the xcode project and package the project to an ipa file.

Usage:

building xcode project

ipa-build <project directory> [-c <project configuration>] [-o <ipa output directory>] [-t <target name>] [-n]

building xcode workspace

ipa-build  <workspace directory> -w -s <schemeName> [-c <project configuration>] [-n]

Options:

-c NAME     the configuration of project used to compile.Default is Release
-o PATH     output path for ipa file(must be a directory)
-t NAME     the target which should be compiled
-w          build xcode workspace   
-s NAME     the schemal to be used for compiling
-n          clean the project before compling

Example:

build project

If you have an iOS project in the path ~/iphone, and the ipa-build script is put in the path ~/xcode-shell.You want to build this project with 'Release' configuration.Just using script like this:

cd ~/iphone
~/xcode-shell/ipa-build .

If you want to assign specific configuration or target, you can add relevant options to the command.

build workspace

If ~/iphone is a xcode workspace and the scheme used for compile named 'test'.The ipa-build script is put in the path ~/xcode-shell.Using script like this:

cd ~/iphone
~/xcode-shell/ipa-build . -w -s test

You can also assign a specific configuration by using -c option.

Note:If script executed successfully,an ipa file is created in the path: <project path>/build/ipa-build.

2.compile project used CocoaPods

CocoaPods is an Objective-C library manager.If you use it in your iOS project.You can also use 'ipa-build' script to build by assign workspace and scheme, or you can use the 'cocoapods-build' to build it more easily.

Usage:

cocoapods-build <cococapods project path> [<build configuration>]

Example:

cd ~/iphone
~/xcode-shell/cocoapods-build . Debug

3.publish project

ipa-publish

Configure

You must configure the script before using at the first time. Open it in any text editor and input you own configurations. Such as ftp address, app download url, email sender and email receiver. After that you can run this script to publish app to your own server. Note that installing app from your own server should respect the protocol named "itms-services". To learn more about "itms-services" you can click blog Wireless AdHoc Distribution(English) or blog ios实现itms-services协议企业内发布或者越狱发布(中文).

Usage:

ipa-publish <project root path> [y <should send notification email>]

Examples:

~/xcode-shell/ipa-publish . y   #publish and send email
~/xcode-shell/ipa-publish .     #just publish

ipa-publish-fir

This script is similar to "ipa-publish". Both of them are using to publish app to somewhere. But this script will publish app to fir.im. So it is more easier to use, as you don't need a special server and FTP. You can use it without any configration, unless you want to send email to notify somebody.

Configure

If you want to send email to notify somebody. Open the script, and changed the value of "email_reciver". This field may contain one or more than one emails.

Usage:

ipa-publish-fir [-d directory>] [-e] [-l number] [-m message]

Options:

-d path     the root directory of project
-e          send email after publishing
-l number   limit of git log, which will be used as change log.
-m message  used as chang log

Examples:

~/xcode-shell/ipa-publish-fir -d . -el20 -m "haha"  #Publish and send email. The change log on fir and in email will be "haha"+<last 20 logs of git>
~/xcode-shell/ipa-publish-fir -d .              #just publish

4.add @2x suffix to image files

When programming for retina device of iOS,the image file you used should add the suffix of @2x. Using the script "add2x" can help you do this automaticly.

add2x: add suffix of @2x to all the image files(just png and jpg file) .This script work in the current directory.

Usage:
1. go to the directory which contains images should be added suffix.
2. execute the add2x script.

note: There is a bug of this script.If your image file name contains blank spaces, script can not work correctly.

ipa-publish脚本运行后,会在“build”文件夹中生成一个以工程的targetname为名字的文件夹。其中,存放了itms-services协议所需的所有文件。脚本会将里面内容全部上传到服务器中。

注意事项


1、运行脚本需要绝对路径,不能使用相对路径。

2、脚本下载后,若要使用,有些脚本需要一些改动。

其中ipa-build脚本无须更改。可以直接使用。ipa-publish脚本需要配置一些信息后方能正常使用。

用文本打开ipa-publish脚本后,在shell开始的地方,有一段需要配置的地方,如下:

#须配置内容  start

#sftp参数设置
sftp_server=192.168.xx.xx
sftp_username=xx
sftp_password=xx
sftp_workpath="/usr/share/xx/xx/xx"

#发布应用的url地址
pulish_url="http://xx.com/xx"

#以下是邮箱的相关设置
#收件人
email_reciver=xx@xx.com
#发送者邮箱
email_sender=xx@xx.com
#邮箱用户名
email_username=xx
#邮箱密码
email_password=xx
#smtp服务器地址
email_smtphost=smtp.exmail.qq.com


#可配置内容  end

根据实际情况配置即可。

原文地址:http://webfrogs.me/2013/02/18/ios-automation/

 【关于我们】

才淇(微信公众号:caiqicehua),专注于国内各大互联网公司社会招聘内推。每天更新最新互联网名企(包括但不限于今日头条、网易游戏、BAT、网易互联网、小米、京东、乐视、携程等名企)内推信息,有技术岗、有产品岗、有运营岗、有设计岗、有交互岗、有销售岗,更有其他N多相关岗位!更多内推信息请扫描以下二维码关注查阅。

 

iOS利用(Shell脚本)自动打包项目工程生成ipa iOS利用脚本打包项目工程 阅读详情

相关推荐

iOS shell 脚本 ipa-build 自动打包

【转】自动打包说明 1.下载脚本文件 打包的前提条件: a.xcode 必须附带“Command Line Tools”  若没有,则可通过以下链接进行安装: command line tools安装 2.打开下载下来的脚本文件: 3.打包之前准备: a.确保工程打包类型及打包证书已配置准确 b.确保打包环境无误 4.开始打包 根据下述路径进行终端命令打包 ipa-b...

shiios的博客 590

ios 自动打包命令_iOS开发之使用fastlane工具实现自动化打包发布(示例代码)

1、Fastlane工具的简介:Fastlane是一套使用Ruby写的自动化工具集,旨在简化Android和iOS的部署过程,自动化你的工作流。它可以简化一些乏味、单调、重复的工作,像截图、代码签名以及发布App。可以使用 fastlane 上传到firim和蒲公英。2、Fastlane工具的功能分类:Beta内测相关Misc其他的东西3、Fastlane工具的安装:《1》检查Ruby版本,需要2...

weixin_42174098的博客 782

ipa-build:ipa-build node 它是一款iOS的打包工具. 轻松完成ipa打包

ipa-build ipa-build是针对iOS项目的打包工具,能够一键生成ipa的开发工具。 how to install 打开你的终端Terminal 输入npm -v查看是否安装npm 如果没有安装,请到进行安装 npm安装完成以后,终端运行npm install -g ipa-build 终端运行ipa-build -h确认安装成功 如果还有其他疑问,可以参照,希望可以帮助你更好得了解它 Command ipa-build ${PROJECT_DIR} -v -o ${IPA_OUTPUT_PATH} 参数(必填项): ${PROJECT_DIR}代表项目路径,只要指向项目主文件夹即可。 注意事项: PROJECT_DIR为必选项,否则无法定位打包项目工程文件。 目前IPA_OUTPUT_PATH仅能传入一个。 可选项: 可选项 参数用途 参数例子 默认参数 -v 打印日志 无需

iOS pod sdk开发到发布,记录

s.ios.vendored_frameworks = 'thridsdk.framework' 上传时设置,只暴露头文件,删除thridsdk/classes文件夹.我的目录:/Library/Ruby/Gems/2.6.0/gems/cocoapods-packager-1.5.0/lib/cocoapods-packager。s.source_files = 'thridsdk/Classes/**/* 为开发时设置,可以看到源文件。在podspec文件中设置 宏定义,将版本号设置到宏里。

ant1239的专栏 1703

iOS自动打包脚本

命令行进入项目根目录直接执行 sh build.sh即可在桌面生成ipa安装包 #注意:使用本脚本上传到fir.im需要满足以下环境:一. ruby版本>1.9.3 (查看当前ruby版本 ruby -v) 二. ruby安装完毕,安装fir.im命令行插件 (gem install fir-cli)

iOS中使用Fastlane实现自动化打包和发布

Fastlane是一套使用Ruby写的自动化工具集,用于iOS和Android的自动化打包、发布等工作,可以节省大量的时间。下面给大家介绍ios fastlane 自动化打包和发布的安装方法,需要的朋友参考下吧

iOS_APP打包上架流程

OS系列版本更新上架流程 1 上传至apple developer 1.1 上传准备工作 更新上架和发布上架不同,在原始版本首次上架的时候就将描述文件和证书之类的文档下载好了,所以无需再安装此类文件。 在测试人员确认可以上架以后,首先需要在 Build Settings/Code Signing中将之前真机调试用的developer调试证书换成distribution发布证书,然

zhangyulin311的博客 1927

解决Android UVCCamera stopPreview 报错 崩溃 闪退 问题

在使用libuvccamera库的UVCCamera时,经常在调用stopPreview关闭预览的时候,app直接崩溃闪退了,经过综合各种修改源码的方案,已解决这个问题,以下请参考: 首先找到android_usbfs.c,linux_usbfs.c两个原文件,在两个文件中都可以找到这段代码,按如下示例修改: 修改前: for (i = 0; i < num_urbs; i++) { if (urb == tpriv->iso_urbs[i]) { urb_idx = i + 1;

hanye2020的博客 3576

iOS一键搞定自动打包并发布到AppStore和Fir

日常编译打包工作主要是以下两个目的: 提交测试版本ipa给测试人员 配置好测试描述文件,然后Product -> Archive编译打包,选择Organizer,导出ad hoc 的 ipa 包。再上传到Fir等第三方平台上,然后通知测试同事进行测试。整个流程下来需要人工监守操作比较耗费时间。 提交ipa包到App Store已供审核

每天进步一点点 1万+

3U 与 SV630A 伺服实现 CANLINK 通讯

SD410这组参数特别重要,这个32位特别重要,是防止数值乱码的关键。

weixin_42714122的博客 2698

制作Ubuntu22.04启动盘

现在越来越多程序代码都需要运行在linux环境下,运行这些代码的前提是安装一个稳定的linux操作系统。本文选择Ubuntu 22.04去制作系统启动盘。本文主要对ubuntu22.04的启动盘制作过程进行了详细的说明,希望能帮助到有需要的朋友。

lyx_ok的博客 1万+

iOS自动打包并发布脚本

欢迎到我的 个人博客 http://liumh.com 浏览此文 本文最终实现的是使用脚本打 Ad-hoc 包,并发布测试,当然稍微修改一下脚本参数就可以打其他类型的 ipa 包了。另外该脚本还实现了将生成的 ipa 包上传至蒲公英进行测试分发。文中内容包括: xcodebuild 简介 使用xcodebuild和xcrun打包签名 将打包过程脚本化

CaryaLiu的专栏 2418

训练集、验证集、测试集!YOLO系列标签数量统计!

【代码】训练集、验证集、测试集!YOLO系列标签数量统计!

qq_26281057的博客 651

ios 自动打包命令_IOS工程自动打包并发布脚本实现

作者:webfrogs转载请注明出处。前言IOS的开发过程中,当需要给测试人员发布测试包的时候,直接使用xcode来做的效率是非常低下的。尤其是当有一点小改动需要重新出包时,那简直是个折磨的人的工作。通过一番研究后,遂决定写一系列脚本,以代替人工完成打包和发布的过程。目前脚本已经完成,基本可以满足我目前的需求。现将其开源,托管在github上,项目地址:点击这里思路借助xcode所附带的“Comm...

weixin_33694136的博客 225

锂电池SOC估计 | 基于LSTM长短期记忆神经网络的锂电池SOC估计(附matlab完整代码)

锂电池SOC估计 | 基于LSTM长短期记忆神经网络的锂电池SOC估计(附matlab完整代码)

前程算法屋的博客 1025

【win10】win 10 电脑喇叭音频显示红叉的处理方法

目录 一、报错情况 二、“音频服务未运行”解决方法 三、“未插入扬声器或耳机”解决方法 一、报错情况 (1)当电脑的扬声器喇叭图标上带有红X符号,提示“音频服务未运行”时: (2)小喇叭上面有红叉,显示“未插入扬声器或耳机”时: 二、“音频服务未运行”解决方法 (1)开始菜单搜索“服务”: (2)没有启动的点击“启动”,已启动的点击“重新启动”: (3)继续,右...

顾三殇 —— 博客空间(软件测试) 17万+

iOS 脚本自动化打包

目前,在打包的时候,可能会用到测试环境、生产环境、或者企业版打包,总是使用archive打包导出比较麻烦,所以,就鼓捣自动化打包。 打包测试环境,并上传到蒲公英 packaging(){ #ProjectName Scheme Configuration Workspace不能留空格 #***********配置项目 #工程名称(Project的名字) ProjectName=GomeSho...

ioszhanghui的博客 6465

addr2line解析不出来行号的解决方式(汇编解析高阶版)

摘要:本文针对AEC crash问题中addr2line无法解析行号的情况,通过llvm-addr2line和反汇编分析,定位到CamX::AECBEStats17::AdjustROIParams函数中的乘法溢出问题。关键发现包括: 常规addr2line只能解析到函数名但无具体行号 llvm-addr2line解析出多个可能溢出点(行196/204/211/218/270/271) 反汇编显示6个条件分支跳转到溢出处理函数 源码分析确认这些位置均存在乘法运算 最终通过汇编级调试工具成功定位UBsan报告

168

Jenkins 实现 iOS 项目自动打包

Python实战社群Java实战社群长按识别下方二维码,按需求添加扫码关注添加客服进Python社群▲扫码关注添加客服进Java社群▲转自:掘金 Perry_6https://jueji...

iOS_开发 1472

SAP采购申请审批策略配置简介

SAP采购申请审批策略配置简介 1、CT04创建特征

我小时候很黑的博客 8162

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【IOS】IOS工程自动打包并发布脚本实现

网上看到一个build ios工程并打包的脚本,写的很不错,学习了下,并添加部分注释,方便理解 http://blog.youkuaiyun.com/ccf0703/article/details/8588667 *************************************************************************************************

存档 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

iOS工程自动打包并发布通过脚本实现

作者:webfrogs 转载请注明出处。 前言 IOS的开发过程中,当需要给测试人员发布测试包的时候,直接使用xcode来做的效率是非常低下的。尤其是当有一点小改动需要重新出包时,那简直是个折磨的人的工作。通过一番研究后,遂决定写一系列脚本,以代替人工完成打包和发布的过程。 目前脚本已经完成,基本可以满足我目前的需求。现将其开源,托管在githu

zhonggaorong的专栏 2157

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

iOS自动签名打包(xcodebuild)

iOS自动打包主要用xcodebuild命令, 在终端输入xcodebuild --help可以查看xcodebuild的参数。 xcodebuild具体语法: 无workspace的工程 xcodebuild [-project name.xcodeproj] [[-target targetname] … | -alltargets] [-configuration configurat...

plpldog的博客 5232

编写shell命令实现IOS的自动打包

1.shell编程基础知识 1.1如何创建shell程序 首先,推荐大家一个mac系统的文本编辑软件Sublime Text,可以提高我们编写shell指令的效率。 Mac环境下,如何创建shell脚本?下面,我们以 桌面上创建一个名为 hello 的shell脚本 为例子 ,讲解创建shell的基本步骤: 1.打开终端,输入命令,进入桌面目录 cd /Users/huberysun/D

静水流深 4873
上一篇: Android Studio Gradle实践之多渠道自动化打包(Android快速多渠道打包)
下一篇: 【Android移动开发技术】AndroidStudio常用快捷键(Mac)(自定义快捷键)
caiqicehua
博客等级 码龄10年 153粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值