Demo 下載
組件化: 講一個(gè)工程分解為各個(gè)組件,然后按照某種方式任意組織成為一個(gè)擁有完整業(yè)務(wù)邏輯的功能
組件劃分:
基礎(chǔ)組件
基礎(chǔ)配置(宏,常量),分類,網(wǎng)絡(luò)(AFN,SDW 二次封裝)、工具類(日期時(shí)間的處理,文件處理,設(shè)備處理)
功能組件
控件(彈幕 ,輪播器,選項(xiàng)卡); 功能(斷點(diǎn)續(xù)傳,音頻處理)
業(yè)務(wù)組件
業(yè)務(wù)線一, 業(yè)務(wù)線二
pod install 做了什么事情
比如我們 pod install AFN
AFN 框架里面有 spec 文件. 這就是描述框架信息的文件
我們執(zhí)行pod install 的時(shí)候. 是現(xiàn)在本地找 spec 文件, 如果找到了就可以通過 spec 的相關(guān)信息例如項(xiàng)目地址,文件等 從本地拉取代碼. 如果找不到,就會(huì)在遠(yuǎn)程倉庫(github) 上尋找,然后 get 數(shù)據(jù)
私有化本地倉庫
我們要解決什么問題?
平時(shí)我們都喜歡利用 cocoPods 來管理第三方庫. 利用 pod install 從 github 遠(yuǎn)程拉取代碼. 如果我們要制作一個(gè)本地倉庫應(yīng)該怎么制作呢? 這是本篇主要的內(nèi)容
這是我寫的一個(gè)關(guān)于導(dǎo)航欄的一個(gè)第三方框架,非常簡單易用,且功能豐富. 那么我們就以它為例子
https://github.com/liuyaozong1/LYZ_EasyNavigation

上面的圖片是通過 cocopods 集成的. 如果我們沒有發(fā)布在遠(yuǎn)程倉庫. 怎么操作
步驟一
在 test9 目錄下面建立LYZ_EasyNavigation的文件夾

步驟二
cd 到LYZ_EasyNavigation 文件夾并執(zhí)行
//創(chuàng)建一個(gè)pod-template 的模板
arch -x86_64 pod lib create LYZ_EasyNavigation
然后出現(xiàn)下面的圖片

會(huì)出現(xiàn)一系列要求填寫的內(nèi)容, 根據(jù)自己的需求填寫完畢就會(huì)自動(dòng)創(chuàng)建好模板
步驟三

創(chuàng)建完成之后 xcode 會(huì)自動(dòng)打開這個(gè)模板. 上圖就是我創(chuàng)建好的模板. 我們可以看到有LYZ_EasyNavigation.podspec 文件 這個(gè)是用來描述框架信息的
有個(gè)ReplaceMe.swift 這個(gè)文件的意思就是讓你用自己的文件來替換它. 我們可以把自己的代碼去替換

但是文件替換之后, 我build 一下這個(gè)時(shí)候要報(bào)錯(cuò). 因?yàn)槲抑暗膶?dǎo)航欄框架依賴了 SnapKit
這里需要修改podspec
Pod::Spec.new do |s|
s.name = 'LYZ_EasyNavigation'
s.version = '0.1.0'
s.summary = 'A short description of LYZ_EasyNavigation.'
# 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/648731281@qq.com/LYZ_EasyNavigation'
# s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { '648731281@qq.com' => '648731281@qq.com' }
s.source = { :git => 'https://github.com/648731281@qq.com/LYZ_EasyNavigation.git', :tag => s.version.to_s }
# s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
s.ios.deployment_target = '11.0' //最低支持 iOS 版本 11
s.source_files = 'LYZ_EasyNavigation/Classes/**/*'
s.swift_version = '5.0' //支持 swift 5.0
# s.resource_bundles = {
# 'LYZ_EasyNavigation' => ['LYZ_EasyNavigation/Assets/*.png']
# }
# s.public_header_files = 'Pod/Classes/**/*.h'
# s.frameworks = 'UIKit', 'MapKit'
s.dependency 'SnapKit' //依賴庫
end
關(guān)于上面參數(shù)的修改,推薦一篇文章
http://m.itdecent.cn/p/3a365f273439
然后 pod install 在 build successd!
至此我們的本地庫搭建完畢!
如何使用呢?
先對(duì) test9 pod init ,然后在 Podfile 加入本地倉庫路徑,指向的是.podspec 這個(gè)目錄

pod 'LYZ_EasyNavigation', :path => './LYZ_EasyNavigation/LYZ_EasyNavigation'
然后 pod install

編譯一下 build successd!
