pod repo
如果已添加過pod repo 可以跳過
-
從0開始
在git服務端創(chuàng)建一個新的空倉庫就好
從已經(jīng)創(chuàng)建好的倉庫拉取
添加pod repo
pod repo add XXX自定義名字 XXX上面的倉庫地址
可以通過下面兩種方式查看是否添加成功
//方式1 到文件夾中查看
cd ~/.cocoapods/repos
//方式2
pod repo list
新建pod
- 從0開始
pod lib create XXX自定義名字
? 按照流程配置即可
- 從已經(jīng)創(chuàng)建好的遠程倉庫拉取
在創(chuàng)建了Example工程的情況下,我們都是在Pods->Development Pods下添加我們的代碼,且可以方便的在Example中調(diào)試使用。
修改pod
-
添加代碼文件
- 選擇要添加的文件
-
Add to targets 這里要選擇當前的私有pod
添加代碼 - 添加成功后,如下圖

-
添加資源文件
資源文件的添加要主要:
-
添加圖片這樣的資源文件可以先添加到.xcassets文件中,這樣在私有pod打包之后,iOS會根據(jù)機型選擇合適的圖片進行應用瘦身,打包成Bundle的資源文件讀取方式要用下面的方式,不然讀取不到。
NSBundle *bundle = [NSBundle bundleWithPath:[[NSBundle bundleForClass:[self class]] pathForResource:@"XXXBundle" ofType:@"bundle"]]; NSURL *url = [bundle URLForResource:soundTypeName withExtension:nil];有一點需要注意:
XXXBundle是我們在下面第三步中podspec文件中填寫的。
[NSBundle bundleForClass:[self class]],當在類中寫這個代碼是沒有問題的,但當是在category中讀取時,[self class]只會獲取添加category的類,這樣就無法讀到正確的bundle。解決辦法:
在當前庫中建立一個新的空類,然后
[NSBundle bundleForClass:[Empty class]],這樣便可以定位到當前庫中。 添加非圖片資源時可以先打成Bundle,也可以跟添加代碼一樣添加。
-
-
修改podspec文件
podspec示例如下
Pod::Spec.new do |s| s.name = 'XXXUI' s.version = '0.0.1' s.summary = '這是一個什么組件' s.description = <<-DESC 比summary更詳細的描述 DESC s.homepage = 'git主頁' s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'myname' => 'myemail@mail.com' } s.source = { :git => '代碼地址', :tag => "feature/V#{s.version.to_s}" } s.ios.deployment_target = '8.0' s.subspec 'ColorAndFont' do |ss| ss.source_files = 'XXXUI/ColorAndFont/*.{h,m}' ss.public_header_files = 'XXXUI/ColorAndFont/*.h' end s.subspec 'Button' do |ss| ss.source_files = 'XXXUI/Button/*.{h,m}' ss.public_header_files = 'XXXUI/Button/*.h' ss.dependency 'XXXUI/ColorAndFont' end s.resource_bundles = { 'XXXUIBundle' => ['XXXUI/Assets/*.png'] } # s.public_header_files = '' # s.frameworks = 'UIKit', # s.dependency 'AFNetworking', '~> 2.3' end主要注意點:
-
name私有pod的名字 -
version版本號 -
homepage項目主頁 -
author項目作者 -
source項目地址,注意后面的tag寫法,這里是讀取了feature分支下的對應版本 -
subspec添加下級目錄,會按照設置的二級目錄整理代碼和資源文件 -
resource_bundles資源文件,這樣操作會把指定目錄下的資源文件在編譯之后打包成一個獨立的Bundle,從而防止了跟主工程中資源文件命名沖突的可能性 -
frameworks當前pod需要的系統(tǒng)庫 -
dependency當前pod需要的第三方庫,當多個不同的私有pod使用同一個第三方庫的不同版本時會產(chǎn)生沖突,如果有沖突建議協(xié)商修改為統(tǒng)一的版本 - 同一個私有pod中,如果按照
subspec分成了子庫(文件夾),如果相互之間需要引用,需要添加dependency,如上面的ss.dependency 'XXXUI/ColorAndFont',就代表著Button字庫中需要依賴ColorAndFont字庫
-
-
修改README文件
這個文件的內(nèi)容,會展示在項目主頁,可以修改表示作者、使用注意事項等
README
驗證pod
-
Example工程添加
pod添加好之后,進入pod的Example文件中,執(zhí)行下面命令,會把pod安裝到當前Example工程中,這里我們可以測試私有pod是否可以正常編譯、使用
pod install -
本地驗證
進入到私有pod工程主目錄
目錄執(zhí)行命令,進行本地驗證
pod lib lint驗證過程中如果有過多的警告導致驗證不過,可以通過命令忽略警告
pod lib lint --allow-warnings -
遠程驗證
pod spec lint
推送pod
-
推送私有pod代碼
驗證通過的代碼可推送到遠端
-
推送podsepc到pod repo
pod repo push XXXrepo XXXUI
使用pod
-
在要使用私有pod的工程的Podfile中添加,引入私有pod repo的地址,同時為了正常使用cocoapods需要加入cocoapods地址
platform :ios, '8.0' source 'http://xxxx.git' source 'https://cdn.cocoapods.org/' use_frameworks! pod 'XXXUI', '~> 0.0.1' -
安裝pod
pod install
總結
可能會用到的其他命令
//查看pod repo
pod repo list
//查看pod是否可用
pod search XXXUI
//查看pod緩存
pod cache list
//清除緩存
pod cache clean XXXUI
//清除全部緩存
pod cache clean —all
//不更新repo 快速安裝、更新
pod install --no-repo-update
pod update --no-repo-update
//更新repo 安裝
pod install --repo-update
Podfle使用建議,建議使用pod ‘AFNetworking’, ‘~>0.1.2′
pod ‘AFNetworking’ //不顯式指定依賴庫版本,表示每次都獲取最新版本
pod ‘AFNetworking’, ‘2.0’ //只使用2.0版本
pod ‘AFNetworking’, ‘>2.0′ //使用高于2.0的版本
pod ‘AFNetworking’, ‘>=2.0′ //使用大于或等于2.0的版本
pod ‘AFNetworking’, ‘<2.0′ //使用小于2.0的版本
pod ‘AFNetworking’, ‘<=2.0′ //使用小于或等于2.0的版本
pod ‘AFNetworking’, ‘~>0.1.2′ //使用大于等于0.1.2但小于0.2的版本,相當于>=0.1.2并且<0.2.0
pod ‘AFNetworking’, ‘~>0.1′ //使用大于等于0.1但小于1.0的版本
pod ‘AFNetworking’, ‘~>0′ //高于0的版本,寫這個限制和什么都不寫是一個效果,都表示使用最新版本


