Git创建私有库

个人或公司在开发过程中,会积累很多可以复用的代码包,有些我们不想开源,又想像开源库一样在CocoaPods中管理它们,那么通过私有仓库来管理就很必要。大家没有安装CocoaPods或者对于CocoaPods还不太熟悉的,建议参考一下唐巧的博客或者直接到CocoaPods的官网看看:https://cocoapods.org/

GitHub私有库是付费用户,所以我使用了其他Git服务,我使用的是码云,当然还有其他的可供选择开源中国、CSDN Code,cocoachina,以及gitlab

首先在码云或gitlab上创建一个空项目,这里给个名字是MyTestLib.


创建.png

创建完成.png

一.在终端执行如下命令

/这个命令的作用:(1).创建本地仓库.(2)同第1步创建的github项目关联起来
//pod repo add 私有库名字 码云项目地址
pod repo add MyTestLib https://gitee.com/asdfasdwed/MyTestLib.git 
image.png

二、我们开始创建项目
1.cd 到我们想要存放项目的目录

//这个命令的作用是创建一个pod项目,它会自动给你生成spec文件,后面需要更改这个文件
pod lib create MyTestLib

2、根据自己的需求设置项目信息

  • 你想用什么语言?swift/ObjC
  • 您想要在您的库中包含一个演示应用程序吗?
  • 您将使用哪些测试框架
  • 你想做基于视图的测试吗
  • 你的类前缀是什么


    image.png

    3、成功之后会自动创建一个带有MyTestLib.podspec项目


    image.png

    4、Classes:存放类文件,默认会有一个ReplaceMe.m文件,
    image.png

    我们只需要把类文件代码放入Classes文件中,如果需要查看更改后demo效果,cd Example文件中pod update更新一下库即可.
    5、修改MyTestLib.podspec文件

Pod::Spec.new do |s|
  s.name             = 'MyTestLib'
  s.version          = '0.1.0'
  s.summary          = 'MyTestLib.'
  s.description      = <<-DESC MyTestLib描述 DESC
  s.homepage         = 'https://gitee.com/asdfasdwed/MyTestLib'
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  s.author           = { 'ZJHGGHub' => 'zjh13785@163.com' }
#需要修改远程服务器地址也就是码云仓库地址
  s.source           = { :git => 'https://gitee.com/asdfasdwed/MyTestLib.git', :tag => s.version.to_s }
s.ios.deployment_target = '8.0'            #支持的平台及版本
  s.requires_arc = true                   #是否使用ARC,如果指定具体文件,则具体的问题使用ARC
  s.source_files = 'MyTestLib/Classes/**/*'  #这个很重要,指定资源文件,前缀就是.podspec文件当前路径,只用写之后的路径,如Class/*是指Class文件夹下的所有文件,但不包括子文件夹里面的文件、Class/**/*是指包含所有Class文件夹下的文件,包括子文件、Class/**/*.{h,m}是指包含所有Class文件夹下的后缀为.h或.m的文件,当然也可以指定文件。
 #代码源文件地址,**/*表示Classes目录及其子目录下所有文件,如果有多个目录下则用逗号分开,如果需要在项目中分组显示,这里也要做相应的设置
 # s.resource_bundles = {
 #   'PodTestLibrary' => ['MyTestLib/Assets/*.png']
 # }                                       #资源文件地址
 # s.public_header_files = 'MyTestLib/Classes/**/*.h'   #公开头文件地址
 # s.frameworks = 'UIKit'                  #所需的framework,多个用逗号隔开
 # s.dependency 'AFNetworking', '~> 2.3'   #依赖关系,该项目所依赖的其他库,如果有多个需要填写多个s.dependency

如果你编写的库文件需要多个子文件夹*.podspec文件可以参考下面如不需要可直接跳过看第6步

image.png
Pod::Spec.new do |s|
  s.name             = 'NetworkTools'
  s.version          = '1.2.0'
  s.summary          = 'NetworkTools.'
  s.description      = "NetworkTools ..."
  s.homepage         = 'https://gitee.com/ZHDreams'
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  s.author           = { 'ZJHGGHub' => 'zjh13785@163.com' }
  s.source           = { :git => 'https://gitee.com/ZHDreams/NetworkTools.git', :tag => s.version.to_s }
  s.ios.deployment_target = '8.0'
  
  s.subspec 'ZHNetTool' do |ss|
      ss.dependency 'ReactiveObjC', '~> 3.0.0'
      ss.dependency 'AFNetworking', '~> 3.1'
      ss.source_files = 'NetworkTools/Classes/ZHNetTool/**/*'
  end
  
  s.subspec 'ZHMJRefsh' do |ss|
      ss.dependency 'MJRefresh', '~> 3.1.12'
      ss.source_files = 'NetworkTools/Classes/ZHMJRefsh/**/*'
  end

6、编辑完podspec文件后,需要验证一下这个文件是否可用,如果有任何WARNING或者ERROR都是不可以的,它就不能被添加到Spec Repo中,不过xcode的WARNING是可以存在的,验证需要执行一下命令pod lib lint --allow-warnings --verbose

image.png

7、验证成功后开始提交我们的项目到码云服务器
依次执行下面代码

//这里是链接你码云服务器的仓库地址
git remote add origin https://gitee.com/asdfasdwed/MyTestLib
git add . 
git commit -m "提交信息"
git push origin master
//注意:如果你创建项目的时候生成了README或者license文件,那么这里你push的时候可能会push不了,这里的话可以用
git push origin master -f 强制提交,会覆盖之前的文件
//为仓库打tag(很重要),而且这个tag必须和spec文件中的版本一致
git tag -m "版本" 0.1.0
//提交版本
git push --tags
//最后将你的spec文件push到远程私有库进行管理
pod repo push MyTestLib MyTestLib.podspec --allow-warnings
image.png

image.png

大功告成私有库创建完成

三、测试私有pod,新建一个项目,然后进入到项目文件中

  • pod init
source 'git@gitee.com:ZHDreams/Spec.git' //码云Spec文件存放仓库
#source 'https://github.com/CocoaPods/Specs.git' //如有第三方库依赖例如AFNetworking时,添加af Spec文件存放仓库
# platform :ios, ‘8.0’
target 'Test' do
pod 'MyTestLib', '~>0.1.0'
end

pod install


image.png

安装私有库遇到的一些问题解决

问题1、pod search 未找到库时出现[!] Unable to find a pod with name, author, summary, or description matching

解决:rm ~/Library/Caches/CocoaPods/search_index.json
然后重新搜索 pod search

问题2、使用pod repo push Spec 命令提交远程索引文件报错信息

[!] The repo Spec at ../../../.cocoapods/repos/Spec is not clean

解决:1

cd ~/.cocoapods/repos/Spec
git clean -f

解决:2

删除Spec本地索引重新添加
pod repo remove Spec
pod repo add Spec git@gitee.com:ZHDreams/Spec.git

这里感谢未来行者的博客CocoaPods私有库

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

推荐阅读更多精彩内容