iOS 组件化及二进制化的探索
组件化的优缺点

组件化的拆分

组件与组件之间如何进行通讯(路由)

从Cocopods拉取代码的过程

远程索引库里很多的.spec文件,该文件记录了很多内容,如用户名,框架名称,描述,框架的地址
Podfile文件是拉取框架源码的配置文件,pod install命令会根据Podfile中配置来拉取框架源码
Pod setup命令会把远程索引库拷贝到本地,在本地还有一个检索文件
执行
pod search命令过程,并不是直接从远程索引库查找,它是从本地的检索文件,该检索文件是以键值对的形式存在。在本地索引库中会找到对应的.spec文件 ,.spec文件中有框架源码的地址,直接从这个地址来下载了。
Pod repo命令可以查看本地的索引库列表
创建本地私有库

Pod lib create命令是创建lib库的模板

更正:创建demo的位置,应该选择YES
创建成功后的目录结构如下:

接下来,我们可以把拆分的代码放到如下这个目录下:

放入代码后的目录结构如下:

Xcode中的工程并不会显示新加入的文件,如下图所示:

我们只需要在命令行工具中 cd 到Pods 工程所在的文件夹,执行
pod install命令即可

命令执行完成后,我们添加到目录中的代码文件已经被加入到工程中,此时目录结构如下:

如果工程中的代码依赖了别的第三方库,我们还需要在.podspec文件中加入框架依赖

配置好
.podspec库后,回到Example目录, 在此目录下执行pod install来安装工程依赖的三方框架
在其他工程中使用本地私有库时,要注意本地私有库引入的位置

本地私有库上传到远程私有库
在码云gitee.com 上创建一个远程私有库

选择私有,并点击导入已有项目,点击创建

根据已有仓库的操作指引,在命令行工具中,cd到lib库所在在目录,执行如下命令


实际新加入的文件还没有提交,我们使用git status看下版本控制的状态(红色部分),然后使用 git add .将文件加入到版本控制中. 使用git commit -m 命令提交到本地, 再使用 git push origin master 提交到远程仓库。



私有库的podSpec配置


需要给当前的lib 库打个tag版本号, 并推送到远程

git tag 命令可以查看当前打的所有的tag, git tag + 版本号 可添加新的tag 提交tag 使用 git push —tags

可以看到远程库上已经打上了一个0.1.0的tag标签,这时我们可以使用 pod spec lint 命令验证配置的正确性
创建远程索引库
同创建远程私有库
将远程索引库关联到本地
pod repo add RZSpec https://gitee.com/reyzhang/RZSpec.git
将RZTools.podSpec提交到这个索引库
pod repo push RZSpec RZTools.podspec --verbose --use-libraries --allow-warnings
使用pod package打包framework 实现组件的二进制化
文章详见: 使用pod package打包framework 实现组件的二进制化
iOS 组件化及二进制化的探索的更多相关文章
- iOS组件化思路 <转>
随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助CocoaPods版本管理工具对原有应用工程进行拆分.但是仅仅完成代码拆分还不足以解决业务之间的代码耦合,为了更好 ...
- iOS组件化思路-大神博客研读和思考
一.大神博客研读 随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助CocoaPods版本管理工具对原有应用工程进行拆分.但是仅仅完成代码拆分还不足以解决业务之间的 ...
- iOS 组件化的几篇文章
随着工程的成长,开发人员的增多,合理的模块划分及低耦合的重要性显得愈发重要.最近在思考这方面的问题,也读了不少通过组件化解耦的文章,这里记录一下. 前 5 篇文章有些关联,建议阅读顺序,1.3.2.4 ...
- 使用CocoaPods创建自己的私有库-iOS组件化第一步
目前iOS组件化常用的解决方案是Pod+路由+持续集成,通常架构设计完成后第一步就是将原来工程里的模块按照架构图分解为一个个独立的pod工程(组件),今天我们就来看看如何创建一个Pod私有库. 新建: ...
- iOS 组件化
iOS 组件化介绍 随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助CocoaPods版本管理工具对原有应用工程进行拆分.但是仅仅完成代码拆分还不足以解决业务之间 ...
- iOS 组件化路由框架 WisdomRouterKit 的应用
[前言] 大家好,写作是为了和读者沟通交流,欢迎各位开发者一起了解 WisdomRouterKit SDK 的功能. 关于 iOS 组件化路由方案框架: WisdomRouterKit 的功能介绍,之 ...
- iOS组件化实现方案
作者原文iOS组件化 - 路由架构从0到1实战 合伙呀 1.CTMediator作为路由中间件 2.基础UI组件以pod形式引入,并且能够独立运行调试 3.基础工具组件以pod形式引入,并且能够独立 ...
- Android组件化和插件化开发
http://www.cnblogs.com/android-blogs/p/5703355.html 什么是组件化和插件化? 组件化开发就是将一个app分成多个模块,每个模块都是一个组件(Modul ...
- Cocoa包管理器之Carthage详解及CocoaPods中心化+Carthage的二进制化
上篇博客详细的聊了CocoaPods的相关内容,今天我们就来介绍另一个Cocoa的包管理器Carthage.在上家公司用Swift开发工程时,用的就是Carthage.Carthage诞生于14年11 ...
随机推荐
- Java常用类-包装类
包装类 Java中的基本类型功能简单,不具备对象的特性,为了使基本类型具备对象的特性,所以出现了包装类,就可以像操作对象一样操作基本类型数据;包装类不是为了取代基本数据类型,而是在数据类型需要使用 ...
- 微信0day复现
由于微信采用的是google内核,前些日子google爆出0day远程代码执行漏洞,但是需要关闭沙箱,而微信采用的是老版本google内核,默认关闭沙箱,因此只要微信用户点击恶意连接,可直接获取该PC ...
- Elasticsearch面试题
Elasticsearch面试题 1.Elasticsearch是如何实现master选举的? 1.对所有可以成为master的节点根据nodeId排序,每次选举每个节点都把自己所知道节点排一次序,然 ...
- NC18979 毒瘤xor
NC18979 毒瘤xor 题目 题目描述 小a有 \(N\) 个数 \(a_1, a_2, ..., a_N\) ,给出 \(q\) 个询问,每次询问给出区间 \([L, R]\) ,现在请你找到一 ...
- 密码学系列之:在线证书状态协议OCSP详解
目录 简介 PKI中的CRL CRL的缺点 CRL的状态 OCSP的工作流程 OCSP的优点 OCSP协议的细节 OCSP请求 OCSP响应 OCSP stapling 总结 简介 我们在进行网页访问 ...
- 当在命令行输入"pip install xxx"
当输入"pip install xxx"时发生了什么 不知道你在下载一些包的时候有没有什么疑惑,输入了"pip install xxx" ,系统是如何找到对应的 ...
- Fiddler开启调试模式
分别键入以下命令 prefs set fiddler.debug.extensions.showerrors True prefs set fiddler.debug.extensions.verbo ...
- Pytorch Tensor 维度的扩充和压缩
维度扩展 x.unsqueeze(n) 在 n 号位置添加一个维度 例子: import torch x = torch.rand(3,2) x1 = x.unsqueeze(0) # 在第一维的位置 ...
- Java对接拼多多开放平台API(加密上云等全流程)
前言 本文为[小小赫下士 blog]原创,搬运请保留本段,或请在醒目位置设置原文地址和原作者. 作者:小小赫下士 原文地址:Java对接拼多多开放平台API(加密上云等全流程) 本文章为企业ERP(I ...
- Blazor快速实现扫雷(MineSweeper)
如何快速的实现一个扫雷呢,最好的办法不是从头写,而是移植一个已经写好的! Blazor出来时间也不短了,作为一个.net开发者就用它来作吧.Blazor给我的感觉像是Angular和React的结合体 ...