Jenkins配合FastLane完成打包
我们将两者组合起来.
首先说一下,ios打包用的xcbuild命令,所以必须是macos环境,这个不用多解释.
所以….Jenkins所在宿主机得是mac系统的(如果有大神知道别的方式,麻烦指点一下),因为没有多余的mac机子,我就搭在了我自己的机子上.
接下来我们说说怎么搞
启动Jenkins
首先,启动终端,输入
1 | Jenkins |
背景: 不想每次测试都喊我打包,很累的,所以开始寻找,有你的世界在哪里
多话不说,墙,换成国内镜像源
1 | $ gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/ |
1 | sudo gem install fastlane -NV |
耐心等待,等装完
gitee似乎不让下载了。可以考虑放到别的带https的地方,比如腾讯云的对象存储桶,github等等,反正有https就行,方法不变。
不要再问android怎么搞了。。。直接apk往仓库一丢,网页给个链接,点一下不就完事了,比iOS省事多了
我写博客一般都会写背景,因为我觉得光写某个技术点没有意义,技术最终都是为业务服务,因此我喜欢交代自己的使用场景,基于什么原因,我做过哪些常识,为什么最终这么做,这么做能解决我的什么问题….
我们是一个小业务部,而且是传统行业转型互联网,业务部内还处于”史前洪荒”的状况,各种现在流行的东西都没有使用,移动端更是如此,开发迭代出的app都是靠微信/内部邮件转发来转发去,iOS更难受,由于ipa包不能像Android一样,随下随装,”必须”依赖电脑用iTools或类似的工具去安装ipa包,很是繁琐.
说到这里肯定就有人提到:”为啥不用蒲公英(fir)等内测分发平台?”
说实话我第一反应也是盯上了这些,但是要实名信息注册啊QAQ,企业要传营业执照,个人要传身份证信息,作为一个较为保守且不想这么兴师动众的人,我选择了放弃使用这些平台.那么没办法了,只能自己写了.那么接下来,我会告诉你,他们是怎么把ipa包,转成一个二维码让你能够下载的(都是猜的).当然,有企业账号自己做企业分发,也可以用我这个方式
声明,我不是干安卓开发或者后台开发的,我以下安装的这些版本的java会不会对后台或者安卓项目产生影响我一概不知,我只是为了安装Jenkins而加入一个java8而已,不习惯的同学可以自行去Orcale的官网下载java8
使用brew安装Jenkins的时候,如果你没有安装java8肯定会报错要求你安装java1.8版本(我试过装java11不行),所以不要挣扎了,装java8吧
这时候你肯定想用brew安装java,你会发现只有java6和java11,java8的安装包被删了
你肯定搜到过下面两个命令:
1 | brew tap caskroom/versions |
放弃吧.不行的
这里我推荐另外一个安装工具:SDKMAN
上次分享我们讲到我们使用npm或者yarn进行管理
我们建议使用yarn进行管理,原因上节课也说过了,有下面几点
1 | 1.Yarn是由Facebook、Google、Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具 ,我们写的RN是Facebook开源的,我们当然要用匹配的东西 |
1 | #xxxx代表库名 |
附赠一个yarn的中文社区文档
三方库名称 | 描述 | |
---|---|---|
react-navigation | 是RN上较为优秀的路由管理库,几乎可以说是项目必备的路由管理框架 | |
moment | 一个前端应该非常熟悉的时间库,用于前端的时间解析之类的 | |
ESLint | 一个前端应该非常熟悉格式规范库,用于规范代码编写 | |
mobx | 一个状态管理库,用于应用内部状态的统一管理 |
我们使用的是3.x版本,需要做如下操作
1 | yarn add react-navigation |
如图,我们发现有很多warn,报的是一些依赖没满足,一般我们说程序员不看warn,肯定就直接运行了.
但是作为过来人,告诉你肯定会报错,缺少这个warn当中的一个库react-native-gesture-handler所以也别走弯路,把这些库都给加上
1 | #这是一个手势库 |
全都装完以后,link一下项目
1 | react-native link |
这里注意了,在0.59中已经提到,不建议这样做,后续会移除这个命令,必须带上包名link才行
突然很想学swift…不怕死的我在完全没用过的情况下决定通过重构公司的古老项目来完成这段学习之旅….
model转json或者json转model是很常见的需求….所以这就是为什么我要用ObjectMapper了…(其实是我把# SwiftyJSON
的star数错了..我可能会趁用的还不多改成SwiftyJSON,毕竟ObjectMapper实在查不到什么资料不是吗…)
1 | import UIKit |
如图,基本已经写得很清楚了emm
有些时候,有的值是int或者bool,你会发现死活转换不出来…这时候就要自己写转换规则了
1 |
|
就这样,就能转换了.
多话8说,我就记录一个聊天记录,有空了一一证实一下
##问:NSKeyedArchiver存的是什么?二进制吗?
###答:嗯
##问:NSKeyedArchiver存在哪?沙盒还是内存
###答:沙盒
##问:NSFileManager和NSKeyedArchiver 是什么关系
###答:NSFileManager是操作文件的,和NSkeyedArchiver没太大关系
##问:所以使用NSFileManager操作文件并不一定会走归档解档对吗
###答:是的,就好比你是人,你需要吃饭,但是你和饭是不同的
##问:NSKeyedArchiver归档的文件路径可指定吗?
###答:可以的,方法都提供了路径
##问:NSUserDefaults这个呢,存在内存?
###答:NSUserDefaults也是沙盒
##问:那它和NSFileManager区别在哪
###答:NSFileManager就是操作文件的,和他么有任何关系.如果你说NSKeyedArchiver和它有什么差别,一个序列化了,一个没序列化
没了