IOS App自动化编译

做了一段时间Ionic工程IOS版本的开发,发现最头疼的是IOS编译发布过程。

现实很残酷

一个team共用一台MAC机器,而且机器很慢,打开Xcode有时都用很长时间,我恨不得钻进去帮帮它。

而我们要在MAC上做的编译和发布过程:

下载代码->shell中编译代码->打开xcode进行打包为ipa->上传到蒲公英上进行发布。

(如果你一开始做项目就想到自动化,那恭喜你,为你的生命不知节约了多少时间。)

扯点题外话

一般人都是懒惰的,不愿意去动脑子,遇到问题时才会想着怎么去做,而且通常的解决方法是可以让自己变得更懒惰,哈哈,如果你不是这样的人,那恭喜你,你不是一般人。

正因为人有这样的特性,所以才有了这么多便利的发明,所以是不是懒惰是有必要的,只是你的脑子要够勤快。

突然想起刚开始工作时,有一个师兄我觉得超厉害,那时候电脑超慢,我记得我们是用sourceInsight看代码,尽管慢还是在坚持(属于又懒又不爱动脑子那伙)。

那个师兄就一样了,潜心研究vim,各种特性,天天用vim来看代码,各种跳转,查函数等,手不停地在键盘上跳来跳去,当时觉得好牛啊,在他的熏陶下,我只是学了一点皮毛,几年不用,那点皮毛现在尽然还记得。

但是另一个坐在我旁边的同事就一样了,电脑慢,天天不是骂人就是摔鼠标,有一次尽然把鼠标摔得五马分尸了,那场面鲜血淋淋的,惨不忍睹。而且摔鼠标声音太大导致我那段时间天天做噩梦。

所以,如果现实环境太残酷,不妨动动脑子,看看是否可以通过努力让它改善一些,让自己在这样的环境下依然可以活的不错,也许就是因为环境总是不如人意,人才会进步。


希望有一天我也可以画出这样的意境

下面是Ionic工程,在MAC上app的自动化编译、打包以及上传到蒲公英的过程。

源码编译ipa

最初建立工程的做法是:

第一步add ios platform:

$ ionic cordova platform add ios

第二步:ionic的源码编译

$ ionic cordova build ios

第三步:xcode证书的配置

打开Xcode,选择好相应的team进行编译。

其中,如果是直接测试手机,那么可以直接直连手机打包并安装。

如果是release版本,要在xcode上各种下一步才能导出ipa。

因为MAC机器实在不给力,所以做上面的动作往往会花一些时间,即使前面两步写成脚本还是不够,因为打开Xcode就很慢,接着做后面几步就很慢。

而且发现第二步和第三步做了一些重复的事情。

自动化编译ipa

首先写一个脚本,可以一次性完成最好。

脚本完成主要是两大事情:

第一:源码编译

$ionic cordova platform remove ios  //删除原来的platform

$ionic cordova platform add ios --no-resources

其中no-resources是ionic CLI 最新版需要对闪屏和icon重新生成,如果你的工程的闪屏和icon图是提前做好的,那就需要加上这个参数。

$ionic cordova build ios --debug --device  //debug版本

$ionic cordova build ios --release --device --prod //release版本

其中--device表示编译的是设备的版本,默认是simulator的版本;

--release表示发布的版本;

--prod表示需要压缩,当然还做了其他的动作,如console.log去掉。

第二:xcode证书等的配置

证书的配置可以全部放在一个build.json文件,此文件你可以放在工程的任意目录下,只是引用的时候注意路径即可。

引用的方法是在前面的build命令之后,加入--buildConfig ./build.json。

如:ionic cordova build ios --debug --device --buildConfig ./ios/build.json

具体内容如下(截图的,简书上代码直接放进去很乱,如果大家需要类似的参数,麻烦重新敲键盘吧。)

build.json的内容

关于这些参数如何去查看,可以通过下面的命令查找,关于build setting有一个链接地址,可以用你想用的参数进行设置。

$man xcodebuild

重点说一下:PRODUCT_BUNDLE_IDENTIFIER,一般不需要。但是由于我们app开发和上传到app store用的证书不一样,bundle id也要不一样,所以需要在编译的时候动态修改bundle id,所以就加了此参数。

关于bundle id多说一点,如果你的android和ios的bundle id不一样,可以在工程的config.xml做如下配置,当然下面的配置是cordova工程的。

android-packageName="com.example.android"

ios-CFBundleIdentifier="com.example.ios"

这样就可以直接运行你的脚本编译出相应的ipa了。

安装ipa到手机

使用ios-deploy进行安装。我常用的命令如下:

ios-deploy -b xxxx.ipa

需要说明的是:ios-deploy需要提前在MAC上进行安装,而且如果你的Xcode 是9以上(具体的版本我忘记了)需要下面的命令安装

sudo npm install -g --unsafe-perm=true --allow-root ios-deploy

上传到蒲公英

如果你的app不需要上传到蒲公英上,这节可以忽略。

脚本可以通过蒲公英的开发者API进行上传,不需要通过蒲公英的UI界面进行上传。

更多参数的设置可参考蒲公英API的说明文档,使用的是API 2.0

https://www.pgyer.com/doc/view/api#paramInfo

执行下面命令之前你需要在蒲公英要注册账号,注册之后可以查看API_key。

curl -F"file=@./myapp.ipa"-F"_api_key=xxxx" https://www.pgyer.com/apiv2/app/upload

如有描述错误,还请及时指出。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351

推荐阅读更多精彩内容