搭建CocoaPods远程私有库
1.创建自己的远程私有索引库,用来存放私有框架的.podspec文件,并将其添加到本地索引
我用的仓库是码云(https://gitee.com),用自己的账号新建一个私有仓库,我命名为PrivatePodRepo;
将PrivatePodRepo添加到本地索引.
执行命令查看本地索引库:
pod repo list
然后执行将PrivatePodRepo添加到本地索引命令:
pod repo add PrivatePodRepo https://gitee.com/alan12138/PrivatePodRepo.git
执行完成再次查看本地索引库:
pod repo list
可以看到已经添加成功.
2.再创建一个远程私有库用来存放私有组件,命名为PrivateComponents
3.用pod命令创建Xcode工程,也就是组件代码工程
切换到组件代码想要存放的本地目录,执行以下创建命令:
pod lib create ComponentsA
用这条命令直接生成模板在模板中编辑不容易出错,如果自己用Xcode创建新项目,用
pod spec create A_Section https://gitee.com/xxxxxxx/A_Section.git
这条命令去创建.podspec文件,再去编辑的话,很容易遇到一些奇奇怪怪的错误,比如死活报错找不到source_files,而花费时间解决这些奇怪的麻烦并不明智.
可以看到这条命令clone下一个模板工程,然后需要填写一些个人信息和选项,之后便创建成功,并自动为你打开这个模板工程,之后便可以在这个工程里写组件代码了.
4.编辑组件代码工程
可以查看模板工程的目录结构,主工程在Example目录里,通过查看Podfile文件
可以看到主工程引用了本地仓库ComponentsA文件夹,其中Classes所在文件夹,是模板用来存放引用本地组件的位置
如果不需要引用本地组件,直接删除ReplaceMe.m文件,不去操作这个目录即可.
编写一个简单的分类文件用于测试.
//NSObject+AT.h @interface NSObject (AT) + (void)printName:(NSString *)name; @end // NSObject+AT.m #import "NSObject+AT.h" @implementation NSObject (AT) + (void)printName:(NSString *)name { NSLog(@"------- %@ -------",name); } @end
查看项目目录,发现并没有刷新代码文件:
需要执行
pod install
或者直接右键delete,执行完再次打开项目文件可以发现修改已经生效,在ATViewController使用一下这个分类方法.
#import "NSObject+AT.h" @interface ATViewController () @end @implementation ATViewController - (void)viewDidLoad { [super viewDidLoad]; [NSObject printName:@"夏帆帆"]; }
运行项目可以看到打印执行.
5.编辑并验证ComponentsA.podspec文件
我这里经过一些修改,push了两次,所以版本号是0.2.0,只要保证每次push的版本号和这里一致就可以
其中组件引用路径就是以后这个组件被主项目引用的代码文件的路径,
到Podfile文件中补上AFNetworking依赖库,(这里是为了演示组件库有其他依赖的情况)
执行
pod install
执行完毕打开项目,引用一下
运行项目,成功运行,引用成功.
接下来验证ComponentsA.podspec文件是否有问题,
pod lib lint --allow-warnings
执行结果,验证通过
一切处理完毕之后便可以将本地代码提交到之前新建的远程组件仓库了.
有闲心的可以试一下用命令把本地文件和远程仓库关联然后提交,我试了一下报乱七八糟的错,干脆我直接把远程仓库clone下来,把项目拖进去,我觉得这样比花时间去研究那些命令错误直接多了,而且简单方便,不会出错.
然后执行
git status git add . git commit -m "init" git push
本地组件代码提交到远程仓库.
然后需要为代码打tag,并且需要和.podspec文件中的版本号保持一致,并提交
git tag 0.2.0 git push --tags
远程验证.podspec文件
pod spec lint --allow-warnings
验证通过.
6.将ComponentsA.podspec文件提交到之前添加的本地私有索引库PrivatePodRepo
pod repo push PrivatePodRepo ComponentsA.podspec --verbose --allow-warnings
执行完毕如果成功可以在PrivatePodRepo仓库看到提交的索引文件.因为执行这条命令验证.podspec文件通过后会自动上传到在远程索引库.
7.使用组件
新创建一个工程使用试一下.
执行
pod init
之后就有了Podfile文件,打开Podfile文件,source '远程索引库'
(这里我还用了清华的镜像,速度比github要快很多)因为ComponentsA依赖了AFN,所以它会自动去安装AFN,如果不source 'CocoaPods库'的话可能会报错找不到AFN
执行
pod install
可以看到安装成功,在代码里试用一下:
再次运行项目文件,可以看到执行效果,至此整个流程完毕.