IOS 私有组件创建

准备

  • 一份项目的git仓库,并把项目clone到本地
  • 一个空仓库(用来保存pod源)

1.创建podspec文件(xxxx.podspec)

  • podspec文件为pod源的描述文件,创建步骤为
cd 到你的项目文件夹下
pod spec create podName   //podName 为你的pod源名
  • 编辑.podspec文件
#pod name
  s.name         = "ss"
#pod 版本号
  s.version      = "0.0.1"
#pod 描述
  s.summary      = "缓存基础组件"
  s.description  = "this is very good 请求基础组件"
#pod 主页
  s.homepage     = "http://www.baidu.com"
#pod 开源协议 --这里检查一下你的项目文件夹下是否有 LICENSE 文件,如果没有需要自己创建(这个必须创建)。
  s.license          = { :type => "MIT", :file => "LICENSE" }
  s.author             = { "admin" => "****" }
#pod 最低支持IOS 版本
  s.platform     = :ios, "9.0"
#pod { :git => 你的项目远端git地址, :tag => "v#{s.version}"}
  s.source       = { :git => "ssh://admin@117.139.163.26:29418/cheku/dev/ios/CKStore.git", :tag => "v#{s.version}"}
#pod源会拉取你的远端git仓库中,Store 文件夹下的内容。
#格式为 s.source_files  = "Classes","Classes/**/*"   //Classes为你的文件夹名,通过这个路径去查找代码
  s.source_files  = "Store","Store/**/*"
#这里为你的pod源 引用的一些资源文件路径,如图片资源
#  s.resource      = "SDPickerController/Resources/Mytools.bundle"
  s.exclude_files = "Classes/Exclude"
  s.requires_arc=true

2.为pod源 添加地址

  • 这里的地址为,你在准备过程中,创建的一个空仓库(用来存放pod源)
格式为 pod repo add 源名 源地址
pod repo add requestPod ssh://admin@117.139.163.26:29418/cheku/dev/ios/requestPod.git

3.添加tag

  • 为远端git仓库代码添加tag(这里的git仓库为你的项目地址仓库) :pod会根据的你xxx.podspec文件去你的远端仓库拉取代码。
#git tag 版本号
git tag "v0.0.1"
#push 远端
git push --tags

//其他操作
//查看当前所有   pod repo。。
//删除一个pod源    pod repo remove storepod-1     :storepod-1  为你的podName

4.push 到pod源

#pod repo push pod源名 pod源文件
pod repo push requestPod request.podspec
//在push 之前可以用pod lib lint ****.podspec 来检查podspec文件是否正确

5. 项目中podfile 中添加pod引用

例:

platform :ios, '9.0'
use_frameworks!
inhibit_all_warnings!

# 公有仓库
source 'https://github.com/CocoaPods/Specs.git'

# 私有仓库--你的私有pod源地址
source 'ssh://admin@117.139.163.26:29418/cheku/dev/ios/requestPod.git'
source 'ssh://admin@117.139.163.26:29418/cheku/dev/ios/storePod.git'    

target 'CheKu' do
    
    
    # 私有pod
    pod 'request'
    pod 'ss'
    
    #object-c module
    pod 'AFNetworking', '~> 3.2.0'
    pod 'SDWebImage', '~> 4.3.2'
end

常见问题

[!] /usr/bin/git clone ssh://admin@117.139.163.26:29418/cheku/dev/ios/CKRequest.git requestPod

fatal: destination path 'requestPod' already exists and is not an empty directory.
  • 为pod添加pod仓库失败,检查pod源仓库,初次添加,这个仓库应该为空仓库
    - ERROR | [iOS] unknown: Encountered an unknown error ([!] /usr/bin/git clone https://github.com/IOSzhangwei/requestPod.git /var/folders/5w/_sq_vf_10fdcxxkt3c9wnh1m0000gn/T/d20180409-2905-zmvvxq --template= --single-branch --depth 1 --branch 0.0.7

Cloning into '/var/folders/5w/_sq_vf_10fdcxxkt3c9wnh1m0000gn/T/d20180409-2905-zmvvxq'...
warning: Could not find remote branch 0.0.7 to clone.
fatal: Remote branch 0.0.7 not found in upstream origin
  • pod在去拉取git代码的时候没有发现0.0.7的版本号,检查远端git是否有该版本号,检查xxx.podspec中的s.version 是否错误。
Password: t
 -> request (0.0.8)
    - WARN  | source: Git SSH URLs will NOT work for people behind firewalls configured to only allow HTTP, therefore HTTPS is preferred.
    - ERROR | [iOS] file patterns: The `source_files` pattern did not match any file.

[!] The `request.podspec` specification does not validate.
  • 检查source_files 语法错误
 -> SEShowTips (0.0.1)
    - ERROR | [iOS] xcodebuild: Returned an unsuccessful exit code. You can use `--verbose` for more information.
    - WARN  | xcodebuild:  MBProgressHUD/MBProgressHUD.h:88:45: warning: this block declaration is not a prototype [-Wstrict-prototypes]
    - WARN  | xcodebuild:  MBProgressHUD/MBProgressHUD.m:401:106: warning: this block declaration is not a prototype [-Wstrict-prototypes]
    - ERROR | xcodebuild:  /Users/zhangWei/Desktop/ComponentShowTips/SEShowTips/UIView+SETips.m:10:9: error: 'MBProgressHUD.h' file not found with <angled> include; use "quotes" instead
  • 里边包含2了个 error 和warn,发生原因为为,我在自己的私有pod,引用了MBProgressHUD 三方库。
    *查看了git 上MBProgressHUD 的podspec 文件,发现他引用了2个包,在我自己的podspec也添加s.frameworks = "CoreGraphics", "QuartzCore" ,引用。
    *通过--use-libraries 增加编译 和 --allow-warnings 忽略警告,直接进行强制push
    *pod repo push SEShowTips SEShowTips.podspec --use-libraries --allow-warnings

参考文档

https://www.jianshu.com/p/67a6004f6930
https://www.jianshu.com/p/d7d1942dd3f1

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

推荐阅读更多精彩内容