fir提供了很不错的自动化打包脚本,传送门如下

不过实战的时候,会遇到一些坑,这里整理一下经验

最简单的打包命令如下:

firbuild_ipa

这样会自动打包ipa,不过会输出到一个临时目录,如

Results at '/var/folders/ky/syfrlzpn2bb8fmn5pr51tstm0000gp/T/d20160306-64805-akfs4h/1457249301.ipa'

对于一个CI平台来说,这样的存放路径毫无意义,所以一般会这样写

firbuild_ipa-o ./

这样就会把ipa拷贝到当前目录,命名规则是bundledisplayname+bundleversion+build号,还是挺不错的命名方式。

接下来我们考虑一下,如果是使用了Pod的项目,需要怎么处理:

podinstall; fir build_ipa -w workspace路径 -Crelease-S scheme名字

以上命令很容易理解,先把pod需要的东西配置好,然后用自动生成的workspace来打包。

遗留一个问题,如果是一个全新的项目,第一次pod install以后是不会自动生成scheme的,必须要用xcode显式打开一下,目前还没解决这个问题

到这里还是可以满足需求的,不过我们还要考虑更通用的CI场景。对于CI所在的服务器来说,应该是预先不知道开发者账号密码的(业务解耦)。这样的话,要求新开CI任务的时候,业务方上传provision文件和p12文件即可。

所以如果在这种场景下,以上的命令会报错

CodeSignerror:Nomatching provisioning profiles found:Noprovisioning profiles with a valid signing

fir的团队显然考虑到了这种场景,提供了一个额外的参数:

-f, [--profile=PROFILE]# Set the export provisioning profile

然而,如果你直接使用的话,xcode7的环境下应该会报如下错误:

xcodebuild:error: The flag -exportArchiveisrequiredwhenspecifying -exportProvisioningProfile.xcodebuild:error: The flag -archivePathisrequiredwhenspecifying -exportArchive.

xcodebuild的帮助文档是查不到这个参数的,我隐隐觉得不妙了。不过还是根据上述提示加上了-exportArchive和-archivePath,这下fir不干了,直接跳到了帮助界面,表示不认识这两个参数。

好吧,幸好fir的脚本是开源的,如此小bug是不是修改一下build_ipa这个函数就好了?然而为了保险,我还是先转换成命令行运行一下,然后就收到了如此的错误:

xcodebuild:error: The flag -scheme cannot be specified alongwith-exportArchive.

╮╯_╰╭搞毛,原来想用exportArchive就不能指定scheme,但是想要用workspace编译又要指定scheme,死循环了咋办?!

好的,为了理清思路,我们还是先搞清楚,exportArchive,exportProvisioningProfile之类的参数应该怎么用,然后就会找到这篇文章

简单来说这个外国人的意思是这样的,先用archive命令把做一次归档,然后再用exportArchive的方式给二进制文件指定provision文件签名。

思路是简单的,可惜现实还是残酷的,上面已经提到了,如果本地没有签名文件的话,xcodebuild的最后一步,会提示签名失败。又死循环了?!

这个时候google起到了关键的作用,万能的SO上面,有水友已经解决了这个问题

黑科技宏定义:CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO,让你解决打包签名的困扰。

所以,如果想用fir打一个无签名的包,可以如下指定

firbuild_ipa-w workspace路径 -C release -Sscheme名字CODE_SIGN_IDENTITY=""CODE_SIGNING_REQUIRED=NO

如此就会输出一个无签名的ipa文件,解压发现Payload目录下,并没有_CodeSignature目录。

接下来的思路就很明确了,我们再补上重签名流程即可,推荐这篇文章的教程,有附上可用的脚本

最后再补一下,如果想要做到更完美,可以自行解析provision文件里面的TeamName和TeamIdentifier,然后再丢给resign.sh处理,这样resign.sh也不需要业务方提供了。

matlab fir overflow,实战fir脚本打ipa包相关推荐

  1. iOS怎样导出IPA包

    1.首先你需要你个开发者账号添加进你的项目中去 2.选择Generic iOS Device 运行状态 3.选择Product -->Archive export->选择第二项(打包测试) ...

  2. Matlab数字滤波器设计实践—FIR

    Matlab数字滤波器设计实践-FIR 1低通滤波器设定 在理想情况下,低通滤波器使信号中低于指定截止频率 ωc 的所有频率分量保持不变,并拒绝高于 ωc 的所有分量.由于实现理想低通滤波器所需的脉冲 ...

  3. matlab滤波器设计工具箱带阻滤波器,用matlab信号处理工具箱进行fir滤波器设计的三种方法...

    用matlab信号处理工具箱进行fir滤波器设计的三种方法 摘 要 介绍了利用 MATLAB 信号处理工具箱进行 FIR 滤波器设计的三种方法:程序设计法. FDATool 设计法和 SPTool 设 ...

  4. FIR 高级应用 FIR Reload 的使用

    本文链接:https://blog.csdn.net/qq_46621272/article/details/125348908 FIR 高级应用 FIR Reload 的使用 文章目录 前言 1. ...

  5. matlab统计所有股票分析,MATLAB金融算法分析实战:基于机器学习的股票量化分析...

    MATLAB金融算法分析实战:基于机器学习的股票量化分析 作者:吴婷;余胜威 编著 出版日期:2017年07月 文件大小:32.24M 支持设备: ¥50.00在线试读 适用客户端: 言商书局 iPa ...

  6. 《MATLAB金融算法分析实战》之量化投资趋向指标1— python实现

    <MATLAB金融算法分析实战>之量化投资趋向指标1- python实现 这本书我个人比较喜欢,也学习到了很多东西,matlab上学的时候没好好学,最近发现python写一遍也很有意思,除 ...

  7. 第 09 章 基于特征匹配的英文印刷字符识别 MATLAB深度学习实战案例

    基于特征匹配的英文印刷字符识别 MATLAB深度学习实战 话不多讲,直接开撸代码 MainForm函数 function MainForm global bw; global bl; global b ...

  8. 通过CMD启动MATLAB的同时运行M脚本

    之前写过一个这个知识点的总结,当时有点疑惑,不知道为什么我测试的时候有时候可以有时候不行.今天终于发现了我之前一直忽略的一个细节,MATLAB中M脚本可以当做一个命令来使用,但是使用的时候是不带有后缀 ...

  9. 实战Perl脚本测试

    实战Perl脚本测试(转) 这是一篇关于perl脚本测试的总结性文章,其中提到了很多实用的模块,如果文中介绍的不够详细,请到cpan上搜索该模块并查阅其文档.  1基本语法检查 Perl语言的哲学是& ...

最新文章

  1. eclipse java调用c 代码吗_linux下通过eclipse开发用java调用c程序的方法
  2. 如何使用Jenkins持续集成C#网站项目
  3. 阿里程序员每天都沮丧想离职!天天去厕所哭!求助心理医生!其他阿里员工:我们也这样!阿里究竟怎么了?...
  4. 人工智能重构下的金融场景
  5. 23-爬虫之scrapy框架增量式实时监测数据爬取10
  6. WPF、Authorware和Flash
  7. Golang入门(4):并发
  8. postgreSQL源码分析综述
  9. python123程序设计实验答案_Python程序设计第二次实验报告
  10. php远程服务器配置,php远程服务器上的配置肿么弄??
  11. python matplotlib 方程的绘制
  12. Autojs4脚本大合集(薅羊毛专业版的脚本)
  13. 大型通用ERP生产管理系统源码
  14. 华为防火墙easy-ip配置
  15. 低通滤波器转带通滤波器公式由来_什么是低通滤波器
  16. 大数据测试理论与方法
  17. Jmeter 使用详解、性能压测分析与性能优化思路
  18. 联系人管理系统 Python GUI版
  19. 武汉科技大学计算机实验预约系统,实验室与设备管理处
  20. python读HDF数据

热门文章

  1. 潭州Java中级班(day_13)-异常概述
  2. 值得收藏的前端大牛博客
  3. ViewPager+Fragment实现支持左右滑动的Tab
  4. 【开源项目12】Retrofit – Java(Android) 的REST 接口封装类库
  5. [转]ASP.NET刷新页面的六种方法
  6. Linux下samba服务搭建
  7. django学习第一天
  8. 为什么响应式编程并非一时之势?
  9. jsp引用带参数的js文件,例如 script src=a.js?ctxpath=${base
  10. C#序列化与反序列化方式简单总结