私有Pod的搭建-完美流程

用途:私有pod无论是抽取项目共有库还是项目组件化都很好用,可以达到模块解耦和依赖关系明确的目的。方便团队合作开发和项目管理。

准备工作:安装CocoaPods
https://www.jianshu.com/p/846b998d2717 内的第一点有安装教程
已安装CocoaPods的跳过。

废话不多说,开始我们完美搭建的旅程:(假设搭建:RELib)

第一部分:创建私有pod

在搭建之前我们先建个远程仓库,用于存放私有pod。
这个就是我的仓库地址了:https://github.com/Rare1020/RELib.git

1.在本地创建pod repo
使用cocoapods为我们提供的快捷方法。

$pod lib create RELib

这个命令会引导你做一些配置并最终生成一个pod工程。

2.填写一些简单的信息

//使用的平台
What platform do you want to use?? [ iOS / macOS ]
 > iOS
//使用的语言
What language do you want to use?? [ Swift / ObjC ]
 > ObjC 
//是否包装测试工程,指定YES用于测试
Would you like to include a demo application with your library? [ Yes / No ]
 > Yes
// 集成的测试模块,不需要指定None
Which testing frameworks will you use? [ Specta / Kiwi / None ]
 > None
// UI测试模块,不需要指定No
Would you like to do view based testing? [ Yes / No ]
 > No
//指定类前缀
What is your class prefix?
 > RE

3.导入文件
我放了两个当测试用


RELib的Classe文件目录.png

4.编辑 RELib.podspec 文件

声明: 所有文件的路径是基于XX.podspec下的。

一些需要修改的地方,都有中文备注

Pod::Spec.new do |s|
  s.name             = 'RELib'
 #pod版本号 每次更新私有pod把pod版本提升
  s.version          = '0.1.0'
  s.summary          = 'It’s a test lib.'

  s.description      = <<-DESC
TODO: Add long description of the pod here.
                       DESC

  s.homepage         = 'https://github.com/Rare1020/RELib'
  # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  s.author           = { 'Rare1020' => 'xxxxxxx@163.com' }
  #仓库地址
  s.source           = { :git => 'https://github.com/Rare1020/RELib.git', :tag => s.version.to_s }
  # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'

  s.ios.deployment_target = '8.0'
  #主目录
  #s.source_files = 'RELib/Classes/**/*'

  #资源文件
  # s.resource_bundles = {
  #   'RELib' => ['RELib/Assets/*.png']
  # }

  # s.public_header_files = 'Pod/Classes/**/*.h'

  #依赖的系统frameworks
  # s.frameworks = 'UIKit', 'MapKit'
  #依赖的系统静态库
  #s.libraries = 'z','c++' //z表示libz.tdb,后缀不需要,lib开头的省略lib

  #依赖的第三方frameworks
  #s.vendored_frameworks = 'RELib/Classes/**/*.framework'
  #依赖的第三方.a 静态库
  #s.vendored_libraries = 'RELib/Classes/**/*.a' 
  #依赖的bundle文件
  #s.resource = 'RELib/Classes/**/*.bundle'

  #依赖第三方pod
  s.dependency 'AFNetworking', '~> 3.2.1'
 #如果需要依赖另一个私有pod,需要再podfile文件写source
 #source 'https://github.com/CocoaPods/Specs.git' (cocoapods公有仓库地址) 和  source '私有pod仓库地址'
 # s.dependency 'REOtherLib', '0.1.0'

 #创建子目录
  s.subspec 'Test' do |ss|
      ss.source_files = 'RELib/Classes/Test/**/*.{c,h,hh,m,mm}'
      #可以继续创建子目录
      #ss.subspec '**' do |sss|
      #end
  end
  s.subspec 'Print' do |ss|
      ss.source_files = 'RELib/Classes/Print/**/*.{c,h,hh,m,mm}'
      #内部文件依赖(如果引用的Test文件夹内的文件)
      #ss.dependency 'RELib/Test'
  end


end

5.执行pod install命令

pod install

这个时候例子里面的工程就能调用私有pod内的文件了

6.验证RELib.podspec文件的合法性

$pod lib lint //验证本地仓库

$pod spec lint //会结合远程仓来验证本地仓库

🛑后缀添加:(以下用pod lib lint 来举例)
能自由拼接后缀
打印详情

$pod lib lint --verbose

有警告时

$pod lib lint --allow-warnings

有依赖私有pod

$pod lib lint --sources='https://github.com/CocoaPods/Specs.git','私有pod仓库地址'

有依赖静态库

$pod lib lint --use-libraries

7.验证通过之后,把本地项目文件上传到远程仓库中
(1)将本地项目与远程仓库关联

$git remote add origin 远程仓库地址

(2)先pull远程仓库的文件
pull之前都是一些git一些相关操作,
git add .
git commit -m "first pod"

$git pull origin master //会有冲突,解决冲突

先push会报错误
先push报错.png

(3) 再push到远程仓库

$git push --set-upstream origin master

$git push origin master

到这里远程仓库就有我们本地的项目了

但是我们还需要把XX.podspec文件push上去,才能使用该pod。

8.打tag,push RELib.podspec文件之前先打tag

$git tag -m "first Pod" 0.1.0

git push --tags

9.push RELib.podspec文件。(需要后缀添加,请参考第5条的后缀添加)

$pod repo push RELib RELib.podspec

如果报未发现RELib的错误,说明cocoapods仓库(路径~/.cocoapods/repos) 还没有该私有Pod。
cocoapods仓库未发现RELib.png

解决方法:添加私有pod到cocoapods仓库

$ pod repo add RELib https://github.com/Rare1020/RELib.git

再执行pod repo push RELib RELib.podspec

看到这个说明就成功了✌️✌️
成功了.png

第二部分:使用私有pod

1.把RELib clone 在 ~/.cocoapods/repos 目录里。(如果上面执行过这一步。这一步跳过)

$pod repo add RELib https://github.com/Rare1020/RELib.git

2.编辑podfile文件

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

#cocoapod仓库地址
source 'https://github.com/CocoaPods/Specs.git'
#私有仓库地址
source 'https://github.com/Rare1020/RELib.git'

target 'REPodTest' do
  # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
  # use_frameworks!

  # Pods for REPodTest
    
    pod 'Masonry' 
    pod 'RELib','0.1.0' 

  target 'REPodTestTests' do
    inherit! :search_paths
    # Pods for testing
  end

end

3.编辑完成执行pod install

$pod install

如果报意外目录文件夹Classes 或 Assets
classes错误.png

解决方法:删除文件夹(进目录和命令行删除)

$rm -rf ~/.cocoapods/repos/rare1020/RELib/Classes

$rm -rf ~/.cocoapods/repos/rare1020/RELib/Assets

至于这个classes、Assets错误弄不明白怎么去根治他。每次更新之后都会出现这两个文件,需要手动去删除。望大神能帮忙解答下解决方法。

再执行pod install

下面这个画面大家应该熟悉的不能再熟悉了
成功.png

打开项目就可以看到这三个库了。

第三部分:更新私有pod

1.修改代码,修改.podspec文件的版本号;
2.执行pod insatll,更新本地代码;
3.验证.podspec文件的合法性;
4.上传代码到远程仓库。
5.更新本地Cocopods仓库内的私有库。

$pod repo update RELib

6.打对应版本号的tag。
7.push .podspec文件

$pod repo push RELib RELib.podspec

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,026评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,655评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,726评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,204评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,558评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,731评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,944评论 2 314
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,698评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,438评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,633评论 2 247
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,125评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,444评论 3 255
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,137评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,103评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,888评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,772评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,669评论 2 271

推荐阅读更多精彩内容