CocoaPods私有库搭建

CocoaPods 安装入门就不多说了可以看这个 https://www.jianshu.com/p/ab6411a05bc2

直切主题,开始搭建私有 spec repo (私有库master)

  • 首先在Github,GitLab,码云等创建仓库 这里就以github为例 名称为WFPodSpecs 仓库地址为https://github.com/iHZW/WFPodSpecs.git
    终端执行 pod repo add (私有配置仓库名称) (私有配置仓库git地址)
    pod repo add WFPodSpecs https://github.com/iHZW/WFPodSpecs.git
    
    执行上面命令之后,~/.cocoapods/repos目录下,就能看到WFPodSpecs这个仓库了
    cd ~/.cocoapods/repos
    
    特别提醒下各位, 一定要先把对新创建的WFPodSpecs仓库随便提交点东西,因为此时没有master分支,提交之后就有master分支, 如果不这样做的话,你会发现到后边会出现各种error 并且网上搜索也没有什么好的解决办法,这个是小编自己误打误撞解决的.
  • 接下来创建Pod组件 名称为WFUIKit
    到组件存放的文件下终端输入命令
    pod lib create WFUIKit
    
    以下是我创建时的终端信息
     hzw@HZWdeMacBook-Pro-2  ~/Desktop/WFUIKit  pod lib create WFUIKit
    Cloning `https://github.com/CocoaPods/pod-template.git` into `WFUIKit`.
    Configuring WFUIKit template.
    ! Before you can create a new library we need to setup your git credentials.
    
     What is your email?
     > 18516638588 @163.com            
    
    ! Setting your email in git to 18516638588 @163.com
      git config user.email "18516638588 @163.com"
    
    ------------------------------
    
    To get you started we need to ask a few questions, this should only take a minute.
    
    If this is your first time we recommend running through with the guide: 
     - https://guides.cocoapods.org/making/using-pod-lib-create.html
     ( hold cmd and double click links to open in a browser. )
    
    
    What platform do you want to use?? [ iOS / macOS ]
     > iOS
    
    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?
     > WF
    
    Running pod install on your new library.
    
    Analyzing dependencies
    Fetching podspec for `WFUIKit` from `../`
    Downloading dependencies
    Installing WFUIKit (0.1.0)
    Generating Pods project
    Integrating client project
    
    [!] Please close any current Xcode sessions and use `WFUIKit.xcworkspace` for this project from now on.
    Sending stats
    Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.
    
     Ace! you're ready to go!
     We will start you off by opening your project in Xcode
      open 'WFUIKit/Example/WFUIKit.xcworkspace'
    
    To learn more about the template see `https://github.com/CocoaPods/pod-template.git`.
    To learn more about creating a new pod, see `https://guides.cocoapods.org/making/making-a-cocoapod`.
     hzw@HZWdeMacBook-Pro-2  ~/Desktop/WFUIKit  
    
    成功之后桌面WFUIKit文件夹下就有了WFUIKit 工程
屏幕快照 2019-07-23 16.50.35.png
我们可以看到WFUIKit/Classes这个文件夹下有一个.m文件ReplaceMe.m,将我们自己的代码放到这个里面,替换掉ReplaceMe.m这个文件。这里面就是我们私有库的代码。WFUIKit/Assets里面主要放一些资源文件。我加了一个测试代码,如图:
屏幕快照 2019-07-23 17.29.26.png
  • 将创建好的组件工程WFUIKit 上传到git上
    git init
    git add .
    git commit -am "init" 
    git remote add origin https://github.com/xxx/WFUIKit.git //先创建好WFUIKit仓库
    git push origin master 
    //一定要有标签,不然会有下面的警告
    //podspec文件中获取Git版本控制的项目需要tag号,
    git tag -m "first release" 0.0.1  
    git push --tags
    
  • 接下来就是配置
  • git init
    git add .
    git commit -am "init" 
    git remote add origin https://github.com/xxx/WFUIKit.git //先创建好WFUIKit仓库
    git push origin master 
    //一定要有标签,不然会有下面的警告
    //podspec文件中获取Git版本控制的项目需要tag号,
    git tag -m "first release" 0.0.2  
    git push --tags
    
  • 接下来就是配置WFUIKit.podspec 文件
    Pod::Spec.new do |s|
      s.name             = 'WFUIKit'
      s.version          = '0.1.0'
      s.summary          = 'A short description of WFUIKit.'
    
    
      s.description      = <<-DESC
    TODO: Add long description of the pod here.
                           DESC
    
      s.homepage         = 'https://github.com/iHZW/WFUIKit'
      s.license          = { :type => 'MIT', :file => 'LICENSE' }
      s.author           = { 'iHZW' => '18516638588@163.com' }
      s.source           = { :git => 'https://github.com/iHZW/WFUIKit.git', :tag => s.version.to_s }
    
      s.ios.deployment_target = '8.0'
    
      s.source_files = 'WFUIKit/Classes/**/*'
      
    end
    
    
    解释如下
    
    s.name :pod search 搜索的关键词,注意这里一定要和.podspec的名称一样
    s.version :版本号,每一个版本对应一个tag
    s.summary : 简介
    s.homepage : 项目主页地址
    s.license : 许可证
    s.author : 作者
    s.source : 项目的地址
    s.source_files : 需要包含的源文件
    s.resources: 资源文件
    s.dependency :依赖库
    s.ios.deployment_target = '8.0'  : 支持的pod最低版本
    
    s.source_files = 'WFUIKit/Classes/**/*'
    *匹配所有文件 **匹配所有子目录
    
    
    验证下WFUIKit.podspec 进入到WFUIKit文件夹下
    pod spec lint --allow-warnings
    
     -> WFUIKit (0.0.2)
        - WARN  | summary: The summary is not meaningful.
        - NOTE  | xcodebuild:  note: Using new build system
        - NOTE  | [iOS] xcodebuild:  note: Planning build
        - NOTE  | [iOS] xcodebuild:  note: Constructing build description
    
    Analyzed 1 podspec.
    
    WFUIKit.podspec passed validation.
    
    //这就是验证通过了,  这一步可能会出现不同的error, tag值或者source_files 路径不对, 调整下就可以解决
    这里的tag和s.version值要保持统一
    source_files 路径可以试试以下几种
    s.source_files  = 'Classes/*.{h,m}'
    s.source_files  = 'Classes/MyUIKit.{h,m}'
    s.source_files  = 'Classes'
    s.source_files  = 'Classes/**/*.{h,m}'
    
    
  • 接下来就是将组建WFUIKit.podspec 上传到私有库 WFPodSpecs
pod repo push [本地Spec Repo名称] [podspec文件名]
//在WFUIKit文件夹下执行
pod repo push WFPodSpecs WFUIKit.podspec --verbose --use-libraries --allow-warnings
执行之后如果完全按照我的步奏一般是没有问题的, 不过之前因为没有对WFPodSpecs仓库提交代码,会报错,提示source-file error  或者提示 路径不匹配等问题,解决了好久哈哈
这个时候进入WFPodSpecs仓库下就可以看到提交成功的WFUIKit  同时git上也存在刚刚创建的组件库WFUIKit了
cd ~/.cocoapods/repos/WFPodSpecs

最后验证下   pod search WFUIKit  是否存在
  • 接下来就来测试下我们的组件库吧WFUIKit吧
在其他工程里测试下吧,配置下Podfile 文件
Podfile文件内容:

source私有spec仓库的git地址,而不是某个pod仓库的地址
source 'https://github.com/iHZW/WFPodSpecs.git'
pod 'WFUIKit' 
然后执行
pod install --verbose --no-repo-update  或 
pod update --verbose --no-repo-update
接下来Pods 文件下就有了我们刚刚创建的组件库WFUIKit了
屏幕快照 2019-07-23 18.50.30.png
修改podspec tag
1.git tag 版本号

2.查看tag                   git tag

3.删除本地其他tag     git tag -d 0.1.0

4.推送到远程             git push --tags

5.查询远程tag值         git ls-remote --tags origin

6.删除远程多余的tag   git push origin :0.1.0

7.重复第5部查看是否有多余的tag

转载文章地址 https://my.oschina.net/snOS/blog/2998642

他写的真的很不错,不过中间遇到不少error 还得Google,百度帮忙解决了, 记录下方便往后使用

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

推荐阅读更多精彩内容

  • 项目组件化、平台化是技术公司的共同目标,越来越多的技术公司推崇使用pod管理第三方库以及私有组件,一方面使项目架构...
    swu_luo阅读 21,749评论 0 39
  • 最近在整理组件化相关的东西,其中有一项就是用pod管理内部的一些公共组件,为了加深印象,下面把具体步骤记录一下(注...
    依旧孤独阅读 823评论 0 1
  • 要解除循环依赖,引入包管理技术cocoapods会让我们更有效率。pod不允许组件间有循环依赖,若有pod ins...
    cs_mark阅读 2,099评论 0 1
  • Cocoapods是非常好用的一个iOS依赖管理工具,使用它可以方便的管理和更新项目中所使用到的第三方库,以及将自...
    Nash33阅读 2,084评论 0 50
  • 函数声明式 function 函数名() { } 特点: 可在任何地方调用 函数表达式 var 函数名 = fun...
    婳噫阅读 233评论 0 0