CocoaPods私有库
在开发pod之前,请先阅读《git-flow+arc流程》
生成
1)查看本地是否有公司的Pods私有仓库:
pod repo
如果终端打印有HoriSpecs,而且URL指定的是*ssh://git@192.168.51.75/source/HoriSpecs.git*,跳过第二步:
HoriSpecs
- Type: git (master)
- URL: ssh://git@192.168.51.75/source/HoriSpecs.git
- Path: /Users/chenjiangchuan/.cocoapods/repos/HoriSpecs
2)如果有HoriSpecs,但是URL不是75服务器地址,先执行(如果没有HoriSpecs,直接执行“添加私有仓库地址”):
pod repo remove HoriSpecs
添加私有仓库地址:
pod repo add HoriSpecs ssh://git@192.168.51.75/source/HoriSpecs.git
3)创建Pod项目:
pod lib create HoriTestModule
稍等会出现:
What language do you want to use?? [ Swift / ObjC ]
>
注意!现在不要有任何操作,此时在当前目录下会有创建一个与项目名同名的文件夹,用Finder打开,进入./HoriTestModule/templates/ios/Example,打开Podfile文件,在文件的开头添加内网的specs地址:
source 'ssh://git@192.168.51.75/source/Specs.git' #内网官方仓库镜像地址
use_frameworks!
target '${POD_NAME}_Example' do
pod '${POD_NAME}', :path => '../'
target '${POD_NAME}_Tests' do
inherit! :search_paths
${INCLUDED_PODS}
end
end
现在可以设置:
What language do you want to use?? [ Swift / ObjC ]
> ObjC
Would you like to include a demo application with your library? [ Yes / No ]
> Yes
Which testing frameworks will you use? [ Specta / Kiwi / None ]
> None
Would you like to do view based testing? [ Yes / No ]
> No
What is your class prefix?
> Hori
4)添加.gitignore(用来忽略不需要管理的文件)和podshell(私有库操作脚本)文件:
把.gitignore添加到./HoriTestModule/Example/
把.arcconfig添加到./HoriTestModule/
把podshell放在./HoriTestModule/

5)使用SourceTree打开HoriTestModule,点击“文件状态”全部勾选,再在底部填写提交的描述,最后点击提交:

6)设置pod库对应的服务器git地址:
git remote add origin ssh://git@192.168.51.75/source/HoriTestModule.git
7)初始化git-flow,在SourceTree菜单栏的中“仓库” -> “git-flow” -> “初始化仓库”。
8) 初始化远程仓库:
git push origin master
git push origin develop
内部结构
- Finder目录

- XCode目录

- Finder目录中的Example和XCode目录中的Example for HoriTestModule对应;
- Finder目录中的HoriTestModule和XCode目录中的Development Pods->HoriTestModule对应。
在pod开发中,涉及到主要的两个目录和文件:
Assets:存放资源;
Classes:存放源码,把代码都放在这个文件夹中;
podspecs:对pod库进行描述的文件;
Example:对pod库进行测试的项目。
1)开发新功能
打开SourceTree,菜单栏->仓库->git-flow->创建新的功能:

2)开发完成后,需要修改.podspec文件,下面列举必须的几个配置:
Pod::Spec.new do |s|
s.name = 'HoriTestModule'
s.version = '0.1.0' #每次更新模块版本后,这里也要修改成对应的版本号
s.summary = 'A short description of HoriFindModule.' #这里需要修改
s.homepage = 'https://github.com/jiangchuanc@gmail.com/HoriTestModule'
s.source = { :git => 'https://github.com/jiangchuanc@gmail.com/HoriTestModule.git', :tag => s.version.to_s }
s.ios.deployment_target = '8.0'
s.source_files = 'HoriTestModule/Classes/*'
s.public_header_files = 'HoriTestModule/Classes/*.h'
end
- s.name:库的名字;
- s.version:当前库的版本,这里要注意,pod库的版本是和git中的tag一一对应的;
- s.summary:库的描述;
- s.homepage:库的网址;
- s.source:库的git地址,注意,这里必须是http地址,不能是ssh;
- s.ios.deployment_target:支持的最低版本;
- s.source_files:指定源代码;
- s.public_header_files:指定对外公开的头文件。
3)测试pod库,这里主要使用到Example里面的工程了,但是我们开发的pod库并没有关联到Example工程中,这里需要执行podshell脚本:
./podshell
如果提示:zsh: permission denied: ./podshell.sh,给podshell赋权限:
chmod 775 podshell.sh
再次执行./podshell,终端提示:
请输入需要的操作命令(update/lint/push):update
现在在Example工程中就可以使用pod库了。
当我们在开发过程中需要对pod库进行测试,则需要按照此步骤执行一遍!
4)pod库开发测试完后,我们需要发布版本,但是在发布版本之前,我们还需要在本地验证pod库是否能编译通过:
// 执行podshell脚本
./podshell
// 输入lint
请输入需要的操作命令(update/lint/push):lint
如果成功如下所示:
** BUILD SUCCEEDED **
Testing with xcodebuild.
-> HoriTestModule (0.1.0)
- WARN | url: The URL (https://github.com/jiangchuanc@gmail.com/HoriTestModule) is not reachable.
HoriTestModule passed validation.
但这里有条警告:The URL is not reachable,因为我们在podsepcs中的s.source和s.homepage没有修改成真实地址,我们在192.168.51.75创建一个git仓库,然后修改podsepcs:
s.homepage = 'http://192.168.51.75/source/HoriTestModule/'
s.source = { :git => 'http://192.168.51.75/source/HoriTestModule.git', :tag => s.version.to_s }
再执行podshell,输入lint。
如果homepage和source都填对的话,最终结果是:
** BUILD SUCCEEDED **
Testing with xcodebuild.
-> HoriTestModule (0.1.0)
HoriTestModule passed validation.
5)完成新功能的开发,在SourceTree中cmmit修改的代码:
然后菜单栏->仓库->git-flow->完成新功能:

6)准备发布版本前,需要进行:
arc diff
arc land
7)经过代码审核没有问题后,就可以发布realease版本,打开SourceTree菜单栏->仓库->git-flow->建立新的发布版本:

8)修改完一些和版本号有关的东西后,点击菜单->仓库->git-flow->完成发布版本:

9)推送master和tag到远程服务器:
git push origin master
git push --tags
10)把pod推送到私有仓库HoriSpecs中:
./podshell.sh
请输入需要的操作命令(update/lint/push):push
如果没有中途没有fail提示说明推送成功。
11)测试,新建一个项目后执行:
pod init
再修改Podfile文件,这里要注意,需要在Podfile文件的最前面添加:
source 'ssh://git@192.168.51.75/source/Specs.git' #内网官方仓库镜像地址
source 'ssh://git@192.168.51.75/source/HoriSpecs.git' #自己的仓库地址
接着添加:
# Pods for 你项目的名称
pod 'HoriTestModule'
最后执行:
pod install