iOS 組件化-私有組件的創(chuàng)建與管理(一)

1.創(chuàng)建Specs的git路徑

可以理解為庫的頭文件集合先舷,該git里面儲存了組件的.podspec文件

1.github創(chuàng)建空路徑

image.png

示例地址為: ++https://github.com/Avanlanching/Specs.git++

2.將Specs 克隆到本地.cocoapod/repo/目錄下

注意:/User/用戶名/.cocoapods目錄隱藏目錄届惋,需要"shift+command+."來顯示;
可能存在訪問權(quán)限的問題概作,需要先獲取訪問權(quán)限:

# 這里路徑是.cocoapod里面
$sudo chmod -R 777 ../.cocoapods

1.SourceTree可視化界面克隆

image.png

2.終端指令

$pod repo add [name] [url] 

e.g $pod repo add Specs https://github.com/Avanlanching/Specs.git

2.1 查看是否添加成功

$pod repo list
image.png

2.創(chuàng)建組件倉庫(用于存放組件代碼的倉庫)

1.創(chuàng)建一個存放倉庫的git路徑

image.png

實(shí)例地址為:https://github.com/Avanlanching/cocoapodAvaDemo.git

2.創(chuàng)建組件

$pod lib create [組件名]

e.g pod lib create cocoapodAvaDemo 
image.png

根據(jù)需求選擇配置
iOS, ObjC, Yes, None, Yes/No, AA

3.代碼編寫

1.工程目錄

image.png

2.文件目錄

image.png

3.代碼編寫

image.png

注意:編碼完成測試通過了,需要將書寫的代碼移動到Classes目錄下面

3.1編寫代碼:

組件1.gif

**注意:這里需要對事例工程中的Podfile進(jìn)行pod install操作才會出現(xiàn)在Pod列表里面 **

3.2上傳到git

A.指令上傳

# 初始化git上傳
$git init

$git add .

$git commit -m "init project"

$git remote add origin https://github.com/liuzhao/LZDemo.git

# 新增tag
$git tag '0.1.0' # 與.podspec文件中的s.version一致

$git push tags

B.SourceTree可視化上傳

image.png

新增tag

image.png

3.創(chuàng)建組件.podspec文件管理

1. .podspec基本格式

#
# Be sure to run `pod lib lint cocoapodAvaDemo.podspec' to ensure this is a
# valid spec before submitting.
#
# Any lines starting with a # are optional, but their use is encouraged
# To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html
#

Pod::Spec.new do |s|
  s.name             = 'cocoapodAvaDemo'
  s.version          = '0.1.0'
  s.summary          = 'A short description of cocoapodAvaDemo.'

# This description is used to generate tags and improve search results.
#   * Think: What does it do? Why did you write it? What is the focus?
#   * Try to keep it short, snappy and to the point.
#   * Write the description between the DESC delimiters below.
#   * Finally, don't worry about the indent, CocoaPods strips it!

  s.description      = <<-DESC
TODO: Add long description of the pod here.
                       DESC

  s.homepage         = 'https://github.com/avanlanching/cocoapodAvaDemo'
  # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  s.author           = { 'avanlanching' => '18269285634@163.com' }
  s.source           = { :git => 'https://github.com/avanlanching/cocoapodAvaDemo.git', :tag => s.version.to_s }
  # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'

  s.ios.deployment_target = '8.0'

  s.source_files = 'cocoapodAvaDemo/Classes/**/*'
  
  # s.resource_bundles = {
  #   'cocoapodAvaDemo' => ['cocoapodAvaDemo/Assets/*.png']
  # }

  # s.public_header_files = 'Pod/Classes/**/*.h'
  # s.frameworks = 'UIKit', 'MapKit'
  # s.dependency 'AFNetworking', '~> 2.3'
end

注意,每次進(jìn)行修改需要對其進(jìn)行update操作

$pod update (更新他人使用這個,防止混淆善延,可以一直采用此指令)
或
$pod update --no-repo-update

1.1 驗證.podspec的合法性

1.本地驗證

$pod lib lint --allow-warnings

可能遇到一個錯誤,解決方案

- ERROR | [iOS] unknow: Encountered an nuknown error (Malformed version number string ) during validation.
[!] xxxxxx did not pass validation, due to 1 error.
You can use the '--no-clean' option to inspect any issue.

注意這里可能是配置問題城侧,解決方案如下:

$sudo gem install -n /usr/local/bin cocoapods

2.網(wǎng)絡(luò)驗證并推送到Spec遠(yuǎn)端

$pod repo push Spec --allow-warnings

e.g:$pod repo push Spec AvaDemo.podspec --verbose --allow-warnings

2.添加依賴

組件中依賴其他組件易遣,不提倡在實(shí)例工程中的Podfile去添加依賴的SDK

提倡的操作,以AF為例子
在.podspec文件中添加

  s.dependency 'AFNetworking', '~> 2.3'
  // 多個SDK
  s.dependency 'SDWebImage'
  // 不指定版本號赞庶,為最新版本训挡,如果沒有依賴第三方的SDK,需要把s.dependency字段刪除或者注釋

添加完成后需要update

#針對.podspec文件
$pod update

#重復(fù)上述本地驗證和推送到Specs的操作

4.主工程內(nèi)引入

1.在編輯Podfile文件

image.png

添加兩個Source

source 'https://github.com/CocoaPods/Specs.git' //公有組件
# source 'git@github.com:Avanlanching/Spec.git' // 私有組件
source 'https://github.com/Avanlanching/Specs.git'

pod 'AvaDemo' //常規(guī)語法

在過程中出現(xiàn)了一些問題歧强,感謝FlowerSea_5534澜薄,有興趣可以查看這位博主的文章

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市摊册,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌忘分,老刑警劉巖白修,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異肯骇,居然都是意外死亡祖很,警方通過查閱死者的電腦和手機(jī)假颇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來姜钳,“玉大人形耗,你說我怎么就攤上這事√酥” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵佛玄,是天一觀的道長梦抢。 經(jīng)常有香客問我愧哟,道長,這世上最難降的妖魔是什么霞赫? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任端衰,我火速辦了婚禮甘改,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘十艾。我一直安慰自己忘嫉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著愧杯,像睡著了一般鞋既。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上跌前,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天抵乓,我揣著相機(jī)與錄音,去河邊找鬼茎芋。 笑死蜈出,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的偷厦。 我是一名探鬼主播只泼,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼酌儒,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了籍滴?” 一聲冷哼從身側(cè)響起榴啸,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤鸥印,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后狂鞋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡骚揍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年信不,在試婚紗的時候發(fā)現(xiàn)自己被綠了亡呵。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡丁逝,死狀恐怖卵牍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情糊昙,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站没咙,受9級特大地震影響祭刚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜涡驮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一捉捅、第九天 我趴在偏房一處隱蔽的房頂上張望棒口。 院中可真熱鬧,春花似錦无牵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽崔梗。三九已至垒在,卻和暖如春扔亥,著一層夾襖步出監(jiān)牢的瞬間旅挤,已是汗流浹背伞鲫。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工秕脓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人吠架。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓傍药,卻偏偏與公主長得像拐辽,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子薛训,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評論 2 359