好好學習,天天向上
前言
組件化的優點
優點
- 降低耦合度
- 組件單獨開發,獨立測試
- 多人協作開發
缺點
- 版本同步的問題
組件化劃分
基礎組件
基礎配置(經常用到的宏,常量),分類,網絡(AFN、SDW二次封裝)、工具類(日期時間的處理,文件處理,設備處理)
功能組件
控間(彈幕、輪播器、選項卡);功能(斷點續傳,音頻處理)
業務組件
業務線一,業務線二
正文
前面都是開場白,直接進入主題
步驟歸納:
- 創建遠程索引庫
- 將遠程索引庫添加到本地
- 創建本地私有庫,完成測試
- 修改
Spec
文件 - 提交私有庫代碼并增加
tag
- 提交spec至私有索引庫
- 測試
步驟詳細說明:
0.插播一下即將用到的pod
命令
-
pod repo add 索引庫名稱 索引庫地址
: 添加自己的索引庫 -
pod lib create 組件名
:在本地創建一個基于pod模板的git倉庫 -
pod lib lint
: 本地庫驗證 -
pod spec lint
: 遠程庫驗證 -
pod repo push 索引庫名稱 .podspec文件
: 先將pod索引添加到本地的索引庫,然后會自動推送到遠程的索引庫
1. 創建私有索引庫
遠程索引庫創建是以常用的【碼云】為例的,如下圖所示。
2. 將私有索引庫添加到本地
2.1 通過pod repo
命令行,查看pod
源地址
如上圖,目前我的本地只有一個github上的公有索引庫。
2.2 通過插播的pod
命令,添加遠程索引庫到本地
執行以下命令:
pod repo add KPSpecs https://gitee.com/katypei/KPSpecs.git
2.3 驗證索引庫是否添加到本地成功
重新執行pod repo
即可。
如上圖所示,及添加成功。
3.創建本地私有庫(此處以KPExtension
為例)
3.1 在【碼云】創建組件庫,庫名為KPExtension
3.2 通過pod
命令,在本地創建一個基于pod模板的git倉庫,倉庫名如3.1
pod lib create KPExtension
使用以上命令,需要進行一些信息的配置
以上配置針對個人需要進行配置,此處因為我本人是希望創建一個swift的遠程私有庫,所以此處語言我選擇了Swift
。配置完成之后,會自動打開一個響應的Example項目。該項目如下:
將需要放到該私有庫的文件替換Classes
文件夾中的Replace.swift
。如下所示:
3.將上述文件拖動到對應位置(也就是之前ReplaceMe.swift
之前所在的文件夾下),如下圖所示:
4. 執行pod install
命令,在Example
中進行測試,確保組件可用。
4.修改Spec
文件
以下是Spec
文件簡單介紹
s.name = "KPExtension(倉庫名稱)"
s.version = "0.0.1(版本號,這里跟下面s.source中的tag有關)"
s.summary = "對你自己倉庫的簡單描述,不要寫太多字"
s.description = "這個是詳細描述,需要比s.summary的要長,不然會出現警告"
s.homepage = "倉庫首頁地址,如https://github.com/KityPei/KPExtension"
s.license = "MIT"
s.author = { 'KityPei' => 'kity_pei@163.com' }
# source存放的地址是代碼的真正地址
s.source = { :git => "倉庫對應的git地址,如https://gitee.com/katypei/KPExtension.git", :tag => "#{s.version}" }
# pod install時真正下載下來的文件路徑,這里指定的是你倉庫下的Classes目錄中的所有.h和.m文件(填寫的是相對地址)
# ** 通配目錄
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" # 框架依賴系統的sqlite3
主要需要修改的地方:
s.name = "KPExtension"
s.version = '0.0.1'
s.summary = '常用到的分類'
s.homepage = 'https://gitee.com/katypei'
s.source = { :git => 'https://gitee.com/katypei/KPExtension.git', :tag => s.version.to_s }
非常重要的事情
s.source
要修改成對應的git地址
s.source
要修改成對應的git地址
s.source
要修改成對應的git地址
5. 提交私有庫代碼并增加tag
5.1 將代碼提交到組件倉庫,常用的git
命令,git工具就不說了
git add . // 工作時的所有變化提交到暫存區
git commit -m '注釋' // 提交到版本庫
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
至私有索引庫
6.1 本地驗證Spec
的必填字段
pod lib lint
驗證通過如下圖:
6.2 遠程驗證Spec
pod spec lint
驗證通過如下圖:
6.3 提交podspec
執行以下命令,將我們的代碼直接push到本地索引庫KPSpecs,推送后會自動幫我們同步到遠程索引庫
pod repo push KPSpecs KPExtension.podspec
成功可以如下圖所示:
成功也可以如下圖所示:
使用Finder
查找,路徑應該如下:
~/.cocoapods/repos/
7. 測試
測試就不多說了,注意事項就是要指定pod源,否則可能找不到創建的私有遠程。
即在podfile
文件中添加:
source 'https://github.com/CocoaPods/Specs.git' # github的公有索引庫
source 'https://gitee.com/katypei/KPSpecs.git' # 自己的私有索引庫
踩坑之旅
問題一:
在進行本地驗證的時候,出現以下錯誤:
出現這種情況的原因:
因為制作的是Swift
的私有庫,沒有指定Swift
語言的版本,驗證器默認使用的是Swift 3.2
,可能會出現問題,希望指定Swift
語言的版本。
解決方案:
- 使用
pod lib lint --alow-warnings
命令忽略驗證過程中的警告(使用的該命令應該注意你包裝過的庫盡量是沒問題的); - 修改
.podspec
文件,新增一行s.swift_version = '4.0'
,指定Swift
語言的版本,當然馬上就出Swift 5.0
了; - 在工程目錄執行
echo "4.0" > .swift-version
,在驗證配置文件的時候執行pod spec lint prcject.podspec --swift-version=4.0 –verbose
指定Swift
的版本。