*****************************注:之前网上参考各种文章,不是这里有问题就是那里报错,最后终于搞定,记录一下过程,让看到的少走点坑***************************
一.iOS组件化本地操作**非上传git版本**( 上传git版本看第二部分 第一部分必看)
新建工程SXShellTest(名字写你要创建的工程名字 这里我以SXShellTest为例讲解)作为壳工程
首先打开命令行工具
1、添加Podfile文件
cd到你刚创建的工程目录下 以SXShellTest为例 打开终端 输入 cd 把目标文件夹拖进来
回车后执行 pod init 这时候就生成了podfile文件
2、生成xcworkspace 执行 pod install 然后在此项目中创建一个文件夹 我这边以lib为列
3、在lib文件夹下创建组件工程 我这边以(WKWebTest--*是你自定义的一个工程名字,也就是你的其中一个组件或者业务模块*)为例 执行 pod lib create WKWebTest 执行后会出现填写信息页面 按下面内容填写
打开新建工程WKWebTest->WKWebTest->Classes,有个ReplaceMe的文件,意思就是要替换它,换成我们自己需要对外提供的类 这里我已经替换了 替换后删除ReplaceMe文件。
4、壳工程使用本地组件库(WKWebTest ),修改壳工程(SXShellTest)项目中的Podfile文件,增加 pod 'WKWebTest', :path => 'Lib/WKWebTest'
cd到壳工程SXShellTest目录下 执行pod install
二.iOS组件化创建私有库(上传git版本)**还是以上面创建的项目为列**
1、创建类似于CocoaPods的master ,所有的私有库组件都放在这个里面
2、在终端中创建一个本地私有库,在终端中输入: pod repo add 需要创建的库名字 这里我以xxxxxxs为列
然后和 github上刚才创建的关联 pod repo add xxxxxxs https://github.com/你自己的账号/xxxxxxs.git (这个https是刚才创建的git地址)
至此一个包含所有组件库的git创建好了
接下来是向这个git中添加组件 想要添加那必须要先创建一个组件
3、创建一个新的组件 --在git上创建一个new repository 写上将要用的组件名字 (这个组件以上面创建的本地组件为列)
2、***注:执行这步时候WKWebTest组件已经在本地创建好了(如何创建:参照第一部分 这里就不再重复写了)****
cd到组件工程WKWebTest目录下 执行下面操作
第一次关联git
git init 初始化git
git add .
git commit -m"init project" 提交初始化工程
git remote add origin https:你刚才创建的git地址 让这个工程和刚才在Github上创建的Repository关联
git push origin master -f 强制提交上去
git tag 0.1.0 (版本号 第一次上传)以后每次修改上传都要迭代版本 (这个版本号就是类似第三方库中AFNetworking控件的版本号)
git push --tags
刷新github 这时候已经看到把代码都传到git上了 在releases里面就能看到版本号为0.1.0
3、这部比较关键 就是要把WKWebTest 组件的***索引文件(什么是索引文件:.podspec文件)***添加到之前创建的那个xxxxxxs(这个就是包含所有组件)
还是cd到组件工程WKWebTest目录下
pod repo push <本地索引库> <索引文件名> --allow-warnings 把git上的组件.podspec下载到本地索引库中
例:pod repo push xxxxxxs WKWebTest.podspec --allow-warnings
************************************ffffffs是我创建的第二个组件库 ************************************
打开github就会看到已经上传到git 上了 也就是本地和github上同时已经有了
如果再创建第二个组件的话 和创建第一个的方法一样 上图中 ffffffs就是第二个组件 所有的组件的(.podspec文件)都放在xxxxxxs中
4、壳工程怎么使用这些组件 还以第一步创建的 壳工程SXShellTest为例
·在壳工程的podfile文件中 添加source:组件在git上的地址
·然后把本地路径改成从索引库中获取的方式pod 'WKWebTest','0.8.0' --->(0.8.0 是这个组件的版本)
·版本号根据你自己的需要获取本地索引库中已经有的版本 类似于master里面的AFNetworking有各种不同的版本 用哪个写哪个
cd到壳工程SXShellTest目录下 执行pod install 这样组件就到壳工程了
三.iOS组件 某个组件更新 还以WKWebTest这个组件为例
打开工程WKWebTest->WKWebTest->Classes, 只要组件中classes 添加了文件 或者文件中的代码修改了
1、然后再cd 到WKWebTest 目录下 (因为是修改或者添加文件所以git时候不像第一次上传那样了)
git add .
git commit -m '注释'
git push origin master -f
git tag -a '新版本号' -m '注释' // 注意这里 只要是修改了需要重新打一个版本号
git push --tags
然后打开WKWebTest文件夹 修改s.version 这个版本就是刚才你(git tag -a)的新版本号
最后:pod repo push xxxxxxs WKWebTest.podspec --allow-warnings (这时候就把修改过内容的版本 传到了xxxxxxs中)打开~/.cocoapods/repos 文件夹 就会看到xxxxxxs文件夹中的WKWebTest组件库里面的版本多了一个
2、壳工程中如何使用修改过的组件 ?
修改壳工程的podfile文件中的组件版本号
cd到壳工程SXShellTest目录下 执行pod install 这样组件中修改的内容 就更新到了壳工程中了
四.总结
实施起来比较繁琐,步骤比较多也是容易出错的关键 其实想明白的话操作也挺容易
组件化固然不错 但是比较适合中大型项目 还是要根据自己的项目实施
本文时间仓促,也参考了别人的文章(看的比较多链接也没留存,望见谅)可能有些地方叙述不到位和不合理或理解错误,望各位指正,共同进步!!!!!!!!!!!!!!!!!!!