1.在Gitblit上创建一个自己的远程私有索引库,用来存放私有框架

的详细描述信息.podspec文件 

用Gitblit创建cocoapods远程私有库

2. 创建本地的私有索引库文件夹,并与远程私有索引库进行关联

2.1 $ pod repo(查看本地已存在的索引库)
2.2 添加本地私有索引库并与远程私有库
$ pod repo add HZTechLoopViewSpec http://git.hz.com:10010/r/HZTechLoopViewSpec.git
2.3 再次查看本地已存在的索引库 $ pod repo
用Gitblit创建cocoapods远程私有库

3 在Gitblit创建一个用来存放项目基础组件的仓库HZTechLoopView 

用Gitblit创建cocoapods远程私有库

4 快速创建模板工程(模板来自github)

4.1 快速创建模板测试工程 在/Users/yq/Desktop/CocoaPodRemoteLib路径下

    cd /Users/yq/Desktop/CocoaPodRemoteLib

    $ pod lib create HZTechLoopView (快速创建) 

用Gitblit创建cocoapods远程私有库


4.2 填写以上信息后Xcode会自动打开测试工程,在测试模板工程文件夹下,我们可以看到如下:

用Gitblit创建cocoapods远程私有库


4.3 用Category去替换Replace.m文件,在回到Example路径下,重新执行pod install操作

用Gitblit创建cocoapods远程私有库

    $ cd /Users/yq/Desktop/CocoaPodRemoteLib/HZTechLoopView/Example 

    $ pod install

用Gitblit创建cocoapods远程私有库

此时打开模板测试工程,我们可以看到Pods > Development Pods > HZTechLoopView > HZTechLoopView > Classes 

用Gitblit创建cocoapods远程私有库


5 编辑工程里的HZTechLoopView.podspec文件

用Gitblit创建cocoapods远程私有库

$ pod lib lint --allow-warnings

此时 MyProjectBase passed validation. 则说明验证通过

 用Gitblit创建cocoapods远程私有库

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

用Gitblit创建cocoapods远程私有库

表示提交成功,此时远程私有库到此就已结束

注意:提交后,依然会验证 podspec文件,验证通过后 会自动上传到在远程spec索引库,不信的话你可以看看在第1步创建的Spec远程私有索引库,是不是多了一个HZTechLoopView/ 0.1.0文件!

8 主工程利用Pods使用我们自己的私有框架

用Gitblit创建cocoapods远程私有库


9 添加及修改基础组件内容

用Gitblit创建cocoapods远程私有库

在本地的基础组件的Classes路径下 又新增了两个文件夹(Base,Tool)

$ cd /Users/yq/Desktop/CocoaPodRemoteLib/HZTechLoopView 

编辑HZTechLoopView 模版工程的HZTechLoopView.podspec文件 

用Gitblit创建cocoapods远程私有库

    $ 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文件

用Gitblit创建cocoapods远程私有库

$ pod install

用Gitblit创建cocoapods远程私有库


10 在基础组件HZTechLoopView内部生成子库

问题描述:当我们执行完第9步后,我们发现主工程的Pods中并没有按文件夹(Base,Tool)进行不同类的划分,同时当我们仅仅想引入一个Category库时,连同Base,Tool也引入进项目中,这就太恶心了!

修改MyProjectBase.podspec文件 

用Gitblit创建cocoapods远程私有库

    $ 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文件 

用Gitblit创建cocoapods远程私有库

    $ pod install

    快打开主工程看一看吧!


补充:

用Gitblit创建cocoapods远程私有库用Gitblit创建cocoapods远程私有库

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]










相关文章: