创建私有化Pod

创建私有化Pod有两种方式,根据自己的情况来选择适合自己的方式来创建

1.在新建的项目中创建私有化Pod库:

进入项目想要存放的目录,使用以下命令:

$ pod lib create "MyTestPod"
  1. 执行命令后终端会问你四个问题,1.选择需要的平台;2.选择用到项目语言;3.是否需要创建一个示例工程;4.选择一个测试框架;5.是否基于View测试;6.类的前缀;问题参看官方文档,问完这4个问题他会自动执行pod install命令创建项目并生成依赖,完成后自动打开窗口。
xingkunkun:FlutterForFW admin$ pod lib create "MyTestPod"
Cloning `https://github.com/CocoaPods/pod-template.git` into `MyTestPod`.
Configuring MyFlutterPod template.
------------------------------
To get you started we need to ask a few questions, this should only take a minute.

1. What platform do you want to use?? [ iOS / macOS ]
 > ios
2. What language do you want to use?? [ Swift / ObjC ]
 > objc
3. Would you like to include a demo application with your library? [ Yes / No ]
 > no
4.Which testing frameworks will you use? [ Specta / Kiwi / None ]
 > none
5. Would you like to do view based testing? [ Yes / No ]
 > no
6.What is your class prefix?
 > ZF

Running pod install on your new library.

2.托管代码到Git服务器:因为podspec文件中获取Git版本控制的项目还需要tag号,所以我们要打上一个tag 根据自己项目的需要修改好然后,提交代码到远端仓库。

$ git add .
$ git commit -s -m "Initial Commit of Library"
$ git remote add origin http://xxx.....git 
$ git push origin master $ git tag -m "first release" "0.1.0"
$ git push --tags     #推送tag到远端仓库
$ git tag -m "first release" "0.1.0"
$ git push --tags     #推送tag到远端仓库

3.编辑MyTestPod.podspec文件,它是一个Ruby的文件,把编辑器的格式改成Ruby就能看到语法高亮,并在后面以注释的形式说明每个字段的含义,没有涉及到的字段可以去官方文档查阅,下面贴上修改的podspec文件模板级注释:

Pod::Spec.new do |s|
  s.name             = "MyTestPod"    #名称
  s.version          = "0.1.0"             #版本号
  s.summary          = "Just Testing."     #简短介绍,下面是详细介绍
  s.description      = <<-DESC
                       Testing Private Podspec.

                       * Markdown format.
                       * Don't worry about the indent, we strip it!
                       DESC
  s.homepage         = "https://github.com/xxx/xxxxx/p/podTestLibrary"                           #主页,这里要填写可以访问到的地址,不然验证不通过
  # s.screenshots     = "www.example.com/screenshots_1", "www.example.com/screenshots_2"           #截图
  s.license          = 'MIT'              #开源协议
  s.author           = { "wtlucky" => "wtlucky@foxmail.com" }                   #作者信息
  s.source           = { :git => "https://github.com/xxx/MyTestPod.git", :tag => "0.1.0" }      #项目地址,这里不支持ssh的地址,验证不通过,只支持HTTP和HTTPS,最好使用HTTPS
  # s.social_media_url = 'https://twitter.com/'                       #多媒体介绍地址

  s.platform     = :ios, '7.0'            #支持的平台及版本
  s.requires_arc = true                   #是否使用ARC,如果指定具体文件,则具体的问题使用ARC

  s.source_files = 'Pod/Classes/**/*'     #代码源文件地址,**/*表示Classes目录及其子目录下所有文件,如果有多个目录下则用逗号分开,如果需要在项目中分组显示,这里也要做相应的设置
  s.resource_bundles = {
    'PodTestLibrary' => ['Pod/Assets/*.png']
  }                                       #资源文件地址

  s.public_header_files = 'Pod/Classes/**/*.h'   #公开头文件地址
  s.frameworks = 'UIKit'                  #所需的framework,多个用逗号隔开
  s.dependency 'AFNetworking', '~> 2.3'   #依赖关系,该项目所依赖的其他库,如果有多个需要填写多个s.dependency
end

4.编辑完podspec文件后,需要验证一下这个文件是否可用,如果有任何WARNING或者ERROR都是不可以的,它就不能被添加到Spec Repo中,不过XcodeWARNING是可以存在的,验证需要执行一下命令。

$ pod lib lint

值得注意的是:
1.如果允许警告,在pod lib lint命令后面跟上--allow-warnings,否则也无法链接通过;
2.如果需要打印出具体的编译信息可跟上--verbose,可清楚的看到一些提示信息;
3.如果项目中用到了一些三方库则需要跟上--use-libraries命令才能通过;

如果链接通过后会看到有编译通过的提示字样;

 -> MyTestPod (0.1.0)

PodTestLibrary passed validation.

5.验证无误就可以进入下一步了,本地测试podspec文件,可以创建一个新的项目,在这个项目的Podfile文件中直接指定刚才创建编辑好的podspec文件,看是否可用。在Podfile中可以这样编辑,有两种方式

source 'https://github.com/CocoaPods/Specs.git'
#source 'https://cdn.cocoapods.org/'

platform :ios, '9.0'

#1.指定路径
pod 'MyTestPod', :path => '~/code/Cocoapods/podTest/MyTestPod' 

#2.指定podspec文件     
pod 'MyTestPod', :podspec => '~/code/Cocoapods/podTest/MyTestPod/PodTestLibrary.podspec'  

然后执行pod install命令安装依赖,打开项目工程,可以看到库文件都被加载到Pods子项目中了,不过它们并没有在Pods目录下,而是跟测试项目一样存在于Development Pods/PodTestLibrary中,这是因为我们是在本地测试,而没有把podspec文件添加到Spec Repo中的缘故。

6.在项目中编写代码,测试库文件无误后就可以开始下一步了,提交podspec到Spec Repo中。

# pod repo add "[Private Repo 别名]" "[GitHub HTTPS 仓库地址]"
$ pod repo add "podspecName" "https://github.com/xxx/MyTestPod.git"

#前面是本地Repo名字 后面是podspec名字
$ pod repo push "podspecName" "MyTestPod.podspec" 

如果不执行pod repo add xxx这一步, 可直接执行:

$ pod repo push "https://github.com/xxx/MyTestPod.git" "MyTestPod.podspec"

如果添加别名错了,可以进行以下命令删除:

$ pod repo remove "podspecName"

7.至此,我们的这个组件库就已经制作添加完成了,使用pod search命令就可以查到我们自己的库了。

$ pod search MyTestPod

-> MyTestPod (0.1.0)
   Just Testing.
   pod 'MyTestPod', '~> 0.1.0'
   - Homepage: https://github.com/xx/xxx/p/MyTestPod
   - Source:   https://github.com/xx/MyTestPod.git
   - Versions: 0.1.0 [MyTestPod repo]

如果在项目中使用时安装无法找到,则可以先更新pod:

$  pod update

#然后再安装:  
$ pod install

2.在现有项目中创建私有化Pod库:

如果是已经有了现成的项目,那么就需要给这个项目创建一个podspec文件,进入项目的跟目录,执行以下命令来创建podspec文件:

$ pod spec create "podspecName" "gitUrl"

注意这一步只是在项目的目录中生成一个podspec文件,生成成功后,后面的步骤全部按照上面 「新建的项目」流程的第二部依次执行即可。

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