好好學(xué)習(xí)著榴,天天向上
前言
組件化的優(yōu)點(diǎn)
優(yōu)點(diǎn)
- 降低耦合度
- 組件單獨(dú)開(kāi)發(fā)番宁,獨(dú)立測(cè)試
- 多人協(xié)作開(kāi)發(fā)
缺點(diǎn)
- 版本同步的問(wèn)題
組件化劃分
基礎(chǔ)組件
基礎(chǔ)配置(經(jīng)常用到的宏,常量)深胳,分類(lèi),網(wǎng)絡(luò)(AFN佩研、SDW二次封裝)、工具類(lèi)(日期時(shí)間的處理霞揉,文件處理旬薯,設(shè)備處理)
功能組件
控間(彈幕、輪播器适秩、選項(xiàng)卡)绊序;功能(斷點(diǎn)續(xù)傳,音頻處理)
業(yè)務(wù)組件
業(yè)務(wù)線(xiàn)一秽荞,業(yè)務(wù)線(xiàn)二
正文
前面都是開(kāi)場(chǎng)白骤公,直接進(jìn)入主題
步驟歸納:
- 創(chuàng)建遠(yuǎn)程索引庫(kù)
- 將遠(yuǎn)程索引庫(kù)添加到本地
- 創(chuàng)建本地私有庫(kù),完成測(cè)試
- 修改
Spec
文件 - 提交私有庫(kù)代碼并增加
tag
- 提交spec至私有索引庫(kù)
- 測(cè)試
步驟詳細(xì)說(shuō)明:
0.插播一下即將用到的pod
命令
-
pod repo add 索引庫(kù)名稱(chēng) 索引庫(kù)地址
: 添加自己的索引庫(kù) -
pod lib create 組件名
:在本地創(chuàng)建一個(gè)基于pod模板的git倉(cāng)庫(kù) -
pod lib lint
: 本地庫(kù)驗(yàn)證 -
pod spec lint
: 遠(yuǎn)程庫(kù)驗(yàn)證 -
pod repo push 索引庫(kù)名稱(chēng) .podspec文件
: 先將pod索引添加到本地的索引庫(kù),然后會(huì)自動(dòng)推送到遠(yuǎn)程的索引庫(kù)
1. 創(chuàng)建私有索引庫(kù)
遠(yuǎn)程索引庫(kù)創(chuàng)建是以常用的【碼云】為例的扬跋,如下圖所示阶捆。
2. 將私有索引庫(kù)添加到本地
2.1 通過(guò)pod repo
命令行,查看pod
源地址
如上圖钦听,目前我的本地只有一個(gè)github上的公有索引庫(kù)洒试。
2.2 通過(guò)插播的pod
命令,添加遠(yuǎn)程索引庫(kù)到本地
執(zhí)行以下命令:
pod repo add KPSpecs https://gitee.com/katypei/KPSpecs.git
2.3 驗(yàn)證索引庫(kù)是否添加到本地成功
重新執(zhí)行pod repo
即可朴上。
如上圖所示垒棋,及添加成功。
3.創(chuàng)建本地私有庫(kù)(此處以KPExtension
為例)
3.1 在【碼云】創(chuàng)建組件庫(kù)痪宰,庫(kù)名為KPExtension
3.2 通過(guò)pod
命令叼架,在本地創(chuàng)建一個(gè)基于pod模板的git倉(cāng)庫(kù),倉(cāng)庫(kù)名如3.1
pod lib create KPExtension
使用以上命令衣撬,需要進(jìn)行一些信息的配置
以上配置針對(duì)個(gè)人需要進(jìn)行配置乖订,此處因?yàn)槲冶救耸窍M麆?chuàng)建一個(gè)swift的遠(yuǎn)程私有庫(kù),所以此處語(yǔ)言我選擇了Swift
具练。配置完成之后垢粮,會(huì)自動(dòng)打開(kāi)一個(gè)響應(yīng)的Example項(xiàng)目。該項(xiàng)目如下:
將需要放到該私有庫(kù)的文件替換Classes
文件夾中的Replace.swift
靠粪。如下所示:
3.將上述文件拖動(dòng)到對(duì)應(yīng)位置(也就是之前ReplaceMe.swift
之前所在的文件夾下)蜡吧,如下圖所示:
4. 執(zhí)行pod install
命令,在Example
中進(jìn)行測(cè)試占键,確保組件可用昔善。
4.修改Spec
文件
以下是Spec
文件簡(jiǎn)單介紹
s.name = "KPExtension(倉(cāng)庫(kù)名稱(chēng))"
s.version = "0.0.1(版本號(hào),這里跟下面s.source中的tag有關(guān))"
s.summary = "對(duì)你自己倉(cāng)庫(kù)的簡(jiǎn)單描述畔乙,不要寫(xiě)太多字"
s.description = "這個(gè)是詳細(xì)描述君仆,需要比s.summary的要長(zhǎng),不然會(huì)出現(xiàn)警告"
s.homepage = "倉(cāng)庫(kù)首頁(yè)地址,如https://github.com/KityPei/KPExtension"
s.license = "MIT"
s.author = { 'KityPei' => 'kity_pei@163.com' }
# source存放的地址是代碼的真正地址
s.source = { :git => "倉(cāng)庫(kù)對(duì)應(yīng)的git地址返咱,如https://gitee.com/katypei/KPExtension.git", :tag => "#{s.version}" }
# pod install時(shí)真正下載下來(lái)的文件路徑钥庇,這里指定的是你倉(cāng)庫(kù)下的Classes目錄中的所有.h和.m文件(填寫(xiě)的是相對(duì)地址)
# ** 通配目錄
s.source_files = 'KPExtension/Classes/**/*'
# s.resource_bundles = {
# 'KPExtension' => ['KPExtension/Assets/*.png']
# }
# s.public_header_files = 'Pod/Classes/**/*.h'
# s.frameworks = 'UIKit', 'MapKit'
# s.library = "sqlite3" # 框架依賴(lài)系統(tǒng)的sqlite3
主要需要修改的地方:
s.name = "KPExtension"
s.version = '0.0.1'
s.summary = '常用到的分類(lèi)'
s.homepage = 'https://gitee.com/katypei'
s.source = { :git => 'https://gitee.com/katypei/KPExtension.git', :tag => s.version.to_s }
非常重要的事情
s.source
要修改成對(duì)應(yīng)的git地址
s.source
要修改成對(duì)應(yīng)的git地址
s.source
要修改成對(duì)應(yīng)的git地址
5. 提交私有庫(kù)代碼并增加tag
5.1 將代碼提交到組件倉(cāng)庫(kù),常用的git
命令咖摹,git工具就不說(shuō)了
git add . // 工作時(shí)的所有變化提交到暫存區(qū)
git commit -m '注釋' // 提交到版本庫(kù)
git remote add origin https://gitee.com/katypei/KPExtension.git
git push -u origin master
5.2 打上tag
git tag '0.0.1'
git push --tags
6. 提交spec
至私有索引庫(kù)
6.1 本地驗(yàn)證Spec
的必填字段
pod lib lint
驗(yàn)證通過(guò)如下圖:
6.2 遠(yuǎn)程驗(yàn)證Spec
pod spec lint
驗(yàn)證通過(guò)如下圖:
6.3 提交podspec
執(zhí)行以下命令评姨,將我們的代碼直接push到本地索引庫(kù)KPSpecs,推送后會(huì)自動(dòng)幫我們同步到遠(yuǎn)程索引庫(kù)
pod repo push KPSpecs KPExtension.podspec
成功可以如下圖所示:
成功也可以如下圖所示:
使用Finder
查找萤晴,路徑應(yīng)該如下:
~/.cocoapods/repos/
7. 測(cè)試
測(cè)試就不多說(shuō)了吐句,注意事項(xiàng)就是要指定pod源,否則可能找不到創(chuàng)建的私有遠(yuǎn)程店读。
即在podfile
文件中添加:
source 'https://github.com/CocoaPods/Specs.git' # github的公有索引庫(kù)
source 'https://gitee.com/katypei/KPSpecs.git' # 自己的私有索引庫(kù)
踩坑之旅
問(wèn)題一:
在進(jìn)行本地驗(yàn)證的時(shí)候嗦枢,出現(xiàn)以下錯(cuò)誤:
出現(xiàn)這種情況的原因:
因?yàn)橹谱鞯氖?code>Swift的私有庫(kù),沒(méi)有指定Swift
語(yǔ)言的版本屯断,驗(yàn)證器默認(rèn)使用的是Swift 3.2
文虏,可能會(huì)出現(xiàn)問(wèn)題,希望指定Swift
語(yǔ)言的版本殖演。
解決方案:
- 使用
pod lib lint --alow-warnings
命令忽略驗(yàn)證過(guò)程中的警告(使用的該命令應(yīng)該注意你包裝過(guò)的庫(kù)盡量是沒(méi)問(wèn)題的)择葡; - 修改
.podspec
文件,新增一行s.swift_version = '4.0'
剃氧,指定Swift
語(yǔ)言的版本敏储,當(dāng)然馬上就出Swift 5.0
了; - 在工程目錄執(zhí)行
echo "4.0" > .swift-version
,在驗(yàn)證配置文件的時(shí)候執(zhí)行pod spec lint prcject.podspec --swift-version=4.0 –verbose
指定Swift
的版本朋鞍。