cocoaPods私有库的更新

快速版

更新私有模块

这里与完整流程中的更新模块项目完全一样

手动创建私有模块版本

等私有模块代码搞定后
1.前往文件夹~/.cocoapods
2.到文件夹.cocoapods/repos/28-capitalism/UMSAgent/下,手动创建一个文件夹,版本就是将要更新的版本
3.将私有模块中的配置文件拷贝到新建的文件目录下

更新操作

在主应用中修改Podfile中的版本号之后,执行命令pod install即可

完整版

##一、怎么将一个git库配置成cocoaPods管理的库

生成如下这样一个文件(也可以是json文件格式的)

1.png
1.png

具体配置如下:

Pod::Spec.new do |s|
s.name = "UMSAgent"
s.version = "0.0.1"
s.summary = "爱基金统计库"
s.description = "爱基金用来统计埋点等"
s.homepage = "http://10.0.9.77/ios/IphoneIJiJin_UMSAgent"
s.license = { :type => "MIT", :file => "FILE_LICENSE" }
s.author = { "IJiJin" => "IJiJin@myhexin.com" }
s.platform = :ios, "5.0"
s.source = { :git => "git@10.0.9.77:ios/IphoneIJiJin_UMSAgent.git", :tag => "#{s.version}" }
s.source_files = "UMSAgent/Classes/**/*.{h,m}"
s.public_header_files = "UMSAgent/Classes/UMSAgent/UMSAgent.h"
#s.exclude_files = "UMSAgent/Classes/JSON/*.{h,m}"
#s.subspec "Common" do |common|
#common.source_files = "UMSAgent/Classes/Common/*.{h,m}"
#end
s.subspec "Json" do |sna|
sna.requires_arc = false
sna.source_files = "UMSAgent/Classes/JSON/*.{h,m}"
sna.private_header_files = "UMSAgent/Classes/JSON/*.h"
end
# s.subspec "Object" do |obj|
# obj.source_files = "UMSAgent/Classes/Object/*.{h,m}"
# end
# s.subspec "UMSDao" do |dao|
# dao.source_files = "UMSAgent/Classes/UMSDao/*.{h,m}"
# end
#s.frameworks = "SystemConfiguration","CoreTelephony","CommonCrypto"
#s.library = ""
#s.dependency "JSONKit"
s.requires_arc = true
end

至此你已经将IphoneIJiJin_UMSAgent配置成了一个由cocoaPods管理的库

##二、主项目里面怎么配置私有和公有仓库

找到项目中的如下文件(此文件是pod项目管理最重要的文件)

2.png
2.png

具体配置如下:

#私有仓库和公有仓库的配置文件的地址
source 'git@10.0.9.77:ios/Capitalism.git'
source 'git@10.0.9.77:ios/Communism.git'
#支持平台版本
platform:ios, 7.0
#抽象的tager,此名字随便起的,并没有太大的意义,代表的是某个project
abstract_target 'IphoneIJiJin1' do
#公用的模块
    pod 'UMSAgent' ,'0.0.3'
    pod 'Aspects'
    target 'IphoneIJiJin' do
        #IphoneIJiJin私有模块(只有IphoneIJiJin里面需要用到的模块)
        pod 'Masonry'
    end
    target 'IphoneIJiJinSDK' do
        #IphoneIJiJinSDK私有模块(只有IphoneIJiJinSDK里面需要用到的模块)
        pod 'Masonry'
    end
end

三、实际操作

1.更新主项目

执行pod install命令会把在当前项目中更新pod配置,会去服务器上克隆私有仓库(Capitalism)和公有仓库(Communism).
然后根据仓库里面的配置去更新对应的第三方库.

2.更新模块项目

1.当我们对模块化的代码做了一些修改提交后,需要打一个tag

3.png
3.png

2.更新一下spec文件

4.png
4.png


s.version = “0.0.1”
修改为
s.version = “0.0.2”

3.使用命令更新
进入~/.cocoapods/文件路径,找到私有仓库物理路径

5.png
5.png

使用如下命令更新远程及本地仓库

pod repo push /Users/zhangxiang/.cocoapods/repos/9-capitalism /Users/zhangxiang/Desktop/常用项目/IphoneIJiJin_UMSAgent/UMSAgent.podspec

但是会报如下警告导致执行命令不通过

- WARN | [iOS] xcodebuild: UMSAgent/UMSAgent/Classes/UMSAgent/UMSAgent.m:855:50: warning: values of type 'NSUInteger' should not be used as format arguments; add an explicit cast to 'unsigned long' instead [-Wformat]
- WARN | [iOS] xcodebuild: UMSAgent/UMSAgent/Classes/UMSAgent/UMSAgent.m:906:47: warning: values of type 'NSUInteger' should not be used as format arguments; add an explicit cast to 'unsigned long' instead [-Wformat]
- WARN | [iOS] xcodebuild: UMSAgent/UMSAgent/Classes/UMSAgent/UMSAgent.m:996:48: warning: values of type 'NSUInteger' should not be used as format arguments; add an explicit cast to 'unsigned long' instead [-Wformat]
- WARN | [iOS] xcodebuild: UMSAgent/UMSAgent/Classes/UMSAgent/UMSAgent.m:1027:47: warning: values of type 'NSUInteger' should not be used as format arguments; add an explicit cast to 'unsigned long' instead [-Wformat]
- WARN | [iOS] xcodebuild: UMSAgent/UMSAgent/Classes/UMSAgent/UMSAgent.m:1096:48: warning: values of type 'NSUInteger' should not be used as format arguments; add an explicit cast to 'unsigned long' instead [-Wformat]
- WARN | [iOS] xcodebuild: UMSAgent/UMSAgent/Classes/UMSAgent/UMSAgent.m:1226:48: warning: values of type 'NSUInteger' should not be used as format arguments; add an explicit cast to 'unsigned long' instead [-Wformat]

执行下面的命令(屏蔽警告)

pod repo push /Users/zhangxiang/.cocoapods/repos/9-capitalism /Users/zhangxiang/Desktop/常用项目/IphoneIJiJin_UMSAgent/UMSAgent.podspec --allow-warnings

就会出现如下图所示内容

6.png
6.png

表示执行成功,之所以还有报错是因为我们仓库中没有LICENSE文件,但是此文件又被配置在spec中,所以找不到会报警告.

7.png
7.png
8.png
8.png

四、注意事项

1.pod的版本管理完全依据于设定的tag,这个tag一旦配置完成即使远程tag标记的代码更改了也是没用的,pod安装的时候还是取的第一次配置好的tag[此条针对一个tag来说的].
2.一般来说最好不要在pod管理的私有仓库上改动一点,更新配置然后在合到主项目中,这样不仅耗费时间,还导致小模块的版本出现混乱.最好的办法就是直接在pod工程中进行修改代码,基本测试通过后再更新到小模块代码中,这样就会维持版本的连贯性.