众所周知 当一个app项目足够大时 每个功能点细分出来 可以分成多个子app 例如美团 则是由 美团外卖 猫眼电影 ··· 等等组成 。为了更好的管理应用工程 iOS项目 一般采用的pod组件化解决方案 比较著名的有蘑菇街组件化之路
本文只讲解一下 pod组件化执行步骤
组件化大体思路
框架说明
继续集成:一个主工程(壳工程),包含所有的内容(整个项目),用于发包或打包测试。
基础组件: 不依赖其他任何组件,独立完成功能。主要有:与业务无法的功能(如string或data的加密,category的封装)对第三方库的封装(如AFNetworking,SDWebImage的封装)
业务公用组件:依赖基础组件或UIKit等系统组件,创建业务共同使用的功能(如分享,支付,网络访问)
中间组件:连接业务公用组件和业务组件,及业务组件之间的互相调用。(如Mediator的组件)
业务组件:单独的业务功能,不依赖其他业务组件。
组件化流程
1.在git库中创建自己的代码库和pod文件依赖库 记得添加LICENSE文件 我这里用了开源中国 码云 git库
2. 把代码库git clone到本地 这里借用了SourceTree工具
执行pod repo addJZBLib_iOShttps://git.oschina.net/jzbwlkj/JZBLib_podspecs.git
3 创建一个demo 用来演示组件的用法 创建完挪到chone到本地的代码库中
4 把自己写的组件git库的最外层 必须保证运行无误
5 创建pod所对应的podspec文件 终端cd到本地git代码库pod spec create JZBLib_iOS 创建完成后 用xcode查看(把文件拖到Xcode 即可)
6 把里边的内容都删了 复制一套模版即可 里边内容不明白啥意思的自行百度
s.name= 'JZBLib_iOS'
s.version = '0.0.1'
s.summary = 'ios
基础库
'
s.description = <<-DESC
TODO: Add long description of the pod here.
DESC
s.homepage = '
https://git.oschina.net/jzbwlkj/JZBLib_iOS'
# s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'xs' =>'[email protected]' }
s.source = { :git => 'https://git.oschina.net/jzbwlkj/JZBLib_iOS.git', :tag => s.version.to_s }
# s.social_media_url = 'https://twitter.com/'
s.ios.deployment_target = '8.0'
s.source_files = 'JZBLib_iOS/*'
s.source_files = 'JZBLib_iOS/**/*'
s.dependency 'Mantle', '~> 2.1.0'
s.dependency 'YYCache', '~> 1.0.4'
s.dependency 'YYCategories', '~> 1.0.4'
s.dependency 'FLKAutoLayout', '~> 1.0.0'
s.dependency 'pop', '~> 1.0'
s.dependency 'SVProgressHUD', '~> 2.0.3'
s.dependency 'AFNetworking', '~> 3.1.0'
end
7 在git仓库中创建版本0.01版本 跟podspec文件对应 把代码上传到git代码库
8 cd到本地代码库pod lib lint --allow-warnings查看版本库检查是否存在
9 pod spec lint --use-libraries继续监测spec合法性
10 pod repo push JZBLib_podspecsJZBLib_iOS.podspec把space文件传到自己创建的space仓库
11 pod searchJZBLib_iOS
参考网址
1http://www.jianshu.com/p/d6a592d6fced
2http://codecloud.net/10058.html
3http://www.jianshu.com/p/0a4fbb94ef9f