iOS 高級(jí)開發(fā)(6)之 組件化(一)私有化本地倉庫

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 集成.png

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

步驟二
cd 到LYZ_EasyNavigation 文件夾并執(zhí)行

//創(chuàng)建一個(gè)pod-template 的模板
arch -x86_64 pod lib create LYZ_EasyNavigation

然后出現(xiàn)下面的圖片


image.png

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

步驟三

image.png

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

但是文件替換之后, 我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è)目錄

image.png
pod 'LYZ_EasyNavigation', :path => './LYZ_EasyNavigation/LYZ_EasyNavigation'

然后 pod install


image.png

編譯一下 build successd!


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容