1.在Gitblit上创建一个自己的远程私有索引库,用来存放私有框架
的详细描述信息.podspec文件
2. 创建本地的私有索引库文件夹,并与远程私有索引库进行关联
2.1 $ pod repo(查看本地已存在的索引库)3 在Gitblit创建一个用来存放项目基础组件的仓库HZTechLoopView
4 快速创建模板工程(模板来自github)
4.1 快速创建模板测试工程 在/Users/yq/Desktop/CocoaPodRemoteLib路径下
$ cd /Users/yq/Desktop/CocoaPodRemoteLib
$ pod lib create HZTechLoopView (快速创建)
4.2 填写以上信息后Xcode会自动打开测试工程,在测试模板工程文件夹下,我们可以看到如下:
4.3 用Category去替换Replace.m文件,在回到Example路径下,重新执行pod install操作
$ cd /Users/yq/Desktop/CocoaPodRemoteLib/HZTechLoopView/Example
$ pod install
此时打开模板测试工程,我们可以看到Pods > Development Pods > HZTechLoopView > HZTechLoopView > Classes
5 编辑工程里的HZTechLoopView.podspec文件
$ pod lib lint --allow-warnings
此时 MyProjectBase passed validation. 则说明验证通过
6 将上面的模板工程,提交到第3步创建的远程代码仓库
$ git status
$ git add .
$ git commit -m 'first commit'
$ git remote add origin http://git.hz.com:10010/r/HZTechLoopView.git(将本地库与远程代码仓库进行关联)
$ git push origin master (提交到远程仓库)
$ git tag '0.1.0' (要与HZTechLoopView.podspec文件中的tag值保持一致)
$ git push --tags(将tag提交到远程)
$ pod spec lint --allow-warnings(验证远程是否正确)
HZTechLoopView.podspec passed validation.
表明验证通过
7 将podspec文件提交到本地的私有索引库
$ pod repo push HZTechLoopViewSpec HZTechLoopView.podspec
表示提交成功,此时远程私有库到此就已结束
注意:提交后,依然会验证 podspec文件,验证通过后 会自动上传到在远程spec索引库,不信的话你可以看看在第1步创建的Spec远程私有索引库,是不是多了一个HZTechLoopView/ 0.1.0文件!
8 主工程利用Pods使用我们自己的私有框架
9 添加及修改基础组件内容
在本地的基础组件的Classes路径下 又新增了两个文件夹(Base,Tool)
$ cd /Users/yq/Desktop/CocoaPodRemoteLib/HZTechLoopView
编辑HZTechLoopView 模版工程的HZTechLoopView.podspec文件
$ git status
$ git add .
$ git commit -m'新增Base,Tool文件内容'
$ git push origin master (提交到远程)
$ git tag '0.2.0'
$ git push --tags
$ pod repo push HZTechLoopViewSpec HZTechLoopView.podspec
修改主工程的podfile文件
$ pod install
10 在基础组件HZTechLoopView内部生成子库
问题描述:当我们执行完第9步后,我们发现主工程的Pods中并没有按文件夹(Base,Tool)进行不同类的划分,同时当我们仅仅想引入一个Category库时,连同Base,Tool也引入进项目中,这就太恶心了!
修改MyProjectBase.podspec文件
$ git status
$ git add .
$ git commit -m'新增Base,Tool文件内容'
$ git push origin master (提交到远程)
$ git tag '0.3.0'
$ git push --tags
$ pod repo push HZTechLoopViewSpec HZTechLoopView.podspec
修改Podfile文件
$ pod install
快打开主工程看一看吧!
补充:
Cocoapods的Bundle在spec里的配置请参考如下文章:https://www.jianshu.com/p/73e4262136fc
关于依赖第三方库的配置:
比如依赖了SDWebImage
s.dependency 'SDWebImage', '~> 4.0'
需要注意的是,在import的时候要这么写:
#if __has_include(<SDWebImage/SDImageCache.h>)
#import <SDWebImage/SDImageCache.h>
#else
#import "SDImageCache.h"
#endif
否则会报错:
- ERROR | [iOS] xcodebuild: /Users/yq/Library/Developer/Xcode/DerivedData/App-cuktnhspylxaetgomnxxyxckdjih/Build/Products/Release-iphonesimulator/HZTechImageBrowse/HZTechImageBrowse.framework/Headers/ImageBrowseViewController.h:10:9: error: include of non-modular header inside framework module 'HZTechImageBrowse.ImageBrowseViewController': '/Users/yq/Library/Developer/Xcode/DerivedData/App-cuktnhspylxaetgomnxxyxckdjih/Build/Products/Release-iphonesimulator/SDWebImage/SDWebImage.framework/Headers/SDImageCache.h' [-Werror,-Wnon-modular-include-in-framework-module]