【10】iOS开发·私有库的创建

一、创建本地私有库

1、项目目录中,新建文件夹Lib进入,然后执行pod lib create 库名,根据提示进行模板创建库;例:

pod lib create FXGBaseKit

2、第一步完成之后,会有个子工程,可在Classes文件夹中存放代码,Assets中存放图片资源等;

(注1:加载图片资源中,需要在XXX.podspec文件中配置,具体格式后面会贴上来;)

(注2:图片加载方式也不能再用[UIImage imageName:@""],需要指定bundle加载图片)

3、抽离代码,在原有项目工程中的Podfile文件中导入本地路径,例:

pod 'FXGBaseKit', :path => 'Lib/FXGBaseKit'

(注:新版的cocoapods需要在开头加上source路径)

新版Podfile格式范例:

use_frameworks!

platform :ios, '9.0'

source 'https://github.com/CocoaPods/Specs.git'

target 'XXX' do

  pod 'FXGBaseKit', :path => 'Lib/FXGBaseKit(你的本地私有库路径)'

  target 'XXX_Tests' do

    inherit! :search_paths

  end

end

备注:本地私有库的创建比较简单,此处不再过多叙述。

二、创建远程私有库

1、工程创建

pod lib create FXGBaseKits

2、新建远程仓库(GitHub/GitLab/coding等)

3、将远程索引库关联到本地

pod repo (查看本地已关联仓库源)

pod repo add  本地索引库名称 远程索引库仓库地址 (添加关联私有库)

pod repo update 索引库名称 (更新私有库)

pod repo remove 本地索引库名称 (移除私有库)

4、进入到本地项目工程FXGBaseKits中,关联远程仓库

git remote add origin 你的仓库地址

git add .

git commit -m "commit"

git push origin master 或者 git push -u origin master 【这个一般是第一次提交的时候】

5、修改XXX.podspec文件,简易的格式及名词解释(请勿直接复制):【此处为注释】

Pod::Spec.new do |s|

  s.name             = 'FXGBaseKits'【库名】

  s.version          = '0.1.0' 【版本号】

  s.summary          = '' 【短描述】

  s.description      = <<-DESC

(此处需要填写)【详细的描述,需要比短描述长】

                       DESC

  s.homepage         = 'https://github.com/xxx' 【你仓库所在的网页网址,不是仓库地址】

  s.license          = { :type => 'MIT', :file => 'LICENSE' }【MIT许可证,一般不用动】

  s.author           = { 'xxx' => 'xxx' } 【作者名,默认会给你,一般也不需要动】

  s.source           = { :git => 'https://github.com/xxx.git', :tag => s.version.to_s } 【你仓库的Git地址】

  s.ios.deployment_target = '9.0' 【系统版本号】

  s.source_files = 'xxx/Classes/*' 【代码存放的路径,是相当于XXX.podspec的路径,一定要正确,否则会报错】

  # s.resource_bundles = {

  #   'XXX' => ['XXX/Assets/*.png'] 【这是图片资源的路径】

  # }

  # s.public_header_files = 'Pod/Classes/**/*.h' 【在这个属性中声明的.h文件能够使用<>方法联想调用】

  # s.frameworks = 'UIKit', 'MapKit' 【依赖系统的动态库】

  # s.vendored_framework = 'XXX.framework' 【依赖非系统的动态库,未验证】

  # s.libraries = 'XXX.a' 【依赖系统的静态库】

  # s.vendored_libraries = 'XXX.a' 【依赖非系统的静态库,例:libWeiboSDK.a】

  s.dependency 'AFNetworking', '~> 4.0.1' 【依赖的pod库】

end

注:当有多级库的时候,可分解出多个子库,只需要将s.source_files = 'xxx/Classes/*'注释,在XXX.podspec添加以下代码:

  s.subspec 'Category' do |c|【此处"||"中的字母不能写大写的,注意】

      c.source_files = 'FXGBaseKit/Classes/Category/**/*'【子库的路径】

  end

  s.subspec 'General' do |g|

      g.source_files = 'FXGBaseKit/Classes/General/**/*'【子库的路径】

  end

  s.subspec 'Utils' do |u|

      u.source_files = 'FXGBaseKit/Classes/Utils/**/*'【子库的路径】

  end

  s.subspec 'Vendor' do |v|

      v.source_files = 'FXGBaseKit/Classes/Vendor/**/*'【子库的路径】

  end

6、验证XXX.podspec文件,终端执行:

pod lib lint XXX.podspec --allow-warnings【本地验证】

pod spec lint XXX.podspec --allow-warnings 【远程验证】

注 ①:若使用了静态库,需要在后面加 --use-libraries;

注 ②:当依赖了其他第三方库,需要在--allow-warnings 前面加上 --source='https://xxx.git【你的仓库地址】, https://github.com/CocoaPods/Specs.git'

7、当XXX.podspec验证通过后,给远程master分支添加tag

git tag 0.1.0 【添加本地tag】

git push --tags 【push到远程tag】

git tag -d 0.1.0 【删除本地tag】

git push origin :0.1.0 【删除远程tag】

git tag 【查看tag列表】

8、给master设置完tag之后,执行发布命令

pod repo push XXX XXX.podspec --allow-warnings 

注 ①:若使用了静态库,需要在后面加 --use-libraries;

注 ②:当依赖了其他第三方库,需要在--allow-warnings 前面加上 --source='https://XXX.git【你的仓库地址】, https://github.com/CocoaPods/Specs.git'

9、发布完成之后,私有库便已经创建完毕,附上使用方法:

新建工程,编辑Podfile,编辑完毕后,pod install或者pod update;

注意:私有库需要指定git的写法,否则可能会install不成功,备注:当第一次使用的时候,需要先更新本地索引库;

pod repo update 【更新所有的索引库】
pod repo update xxx 【指定更新某个索引库】
指定git的写法

pod 'AFNetworking', :git => 'https://github.com/AFNetworking/AFNetworking.git'

pod 'AFNetworking', :git => 'https://github.com/AFNetworking/AFNetworking.git', :branch => 'dev'

pod 'AFNetworking', :git => 'https://github.com/AFNetworking/AFNetworking.git', :tag => '3.1.1'

pod 'AFNetworking', :git => 'https://github.com/AFNetworking/AFNetworking.git', :commit => '0f506b1c45'

指定podspec的写法

pod 'AFNetworking', :podspec => '~/Desktop/AFNetworking/AFNetworking.podspec'

指定subspecs的写法(这也是subspec的另一个用法)

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