3篇文章帶你學(xué)會(huì)組件化??????
1.iOS 創(chuàng)建遠(yuǎn)程cocoapods 私有庫
2.iOS Pod 私有庫創(chuàng)建(自定義的組件)
3.iOS CTMediator組件化實(shí)踐
其實(shí)就是創(chuàng)建一個(gè)組件, 放到GitHub 上, 別人直接pod 過去就能用, 而不是像原來一樣把上傳的文件下載然后拉取到項(xiàng)目中...
1. 先在Git上創(chuàng)建遠(yuǎn)程私有庫
和自己平時(shí)創(chuàng)建倉(cāng)庫一模一樣
2. 創(chuàng)建本地項(xiàng)目
- 進(jìn)入終端虫埂,cd到目標(biāo)目錄下, 便于管理, 最好將你一個(gè)項(xiàng)目的使用到的所有組件放到同一文件夾下, 例如demo文件夾
- 在demo 目錄下創(chuàng)建組件CustomUIKit
格式: pod lib create xxx
pod lib create CustomUIKit
將會(huì)經(jīng)過如下一系列詢問
以上步驟完成后,將會(huì)自動(dòng)打開XCode項(xiàng)目.
可以通過 tree 指令或者打開文件夾看下創(chuàng)建的本地倉(cāng)庫的目錄結(jié)構(gòu)
3. 修改xxx.podspec 文件
下面是一些注釋, 根據(jù)實(shí)際情況增加或者減少即可.
Pod::Spec.new do |s|
s.name = "A_section"
#發(fā)版版本號(hào),每更新一次代碼就改變一次版本號(hào)
s.version = "0.0.1"
#一個(gè)簡(jiǎn)單的總結(jié),隨便寫
s.summary = "A short description of A_section."
#一定要寫上,不寫的話手负,執(zhí)行 pod lib lint 驗(yàn)證項(xiàng)目的時(shí)候會(huì)報(bào)找不到 UIKIT 等框架錯(cuò)誤
s.platform = :ios, "8.0"
#描述,隨便寫 但是要比 s.summary 長(zhǎng)度長(zhǎng)
s.description = <<-DESC
short description of A_section short description of A_section
DESC
#你的 git 倉(cāng)庫首頁的網(wǎng)頁 url,注意并不是 https/ssh這種代碼倉(cāng)庫地址
s.homepage = "https://coding.net/u/xxxx/p/A_section"
#直接寫 MIT
s.license = "MIT"
#你是誰
s.author = { "" => "" }
#這里就是你 git 倉(cāng)庫的 https/ssh 地址了
s.source = { :git => "https://git.coding.net/xxxx/A_section.git", :tag => "#{s.version}" }
#這里的文件夾下的內(nèi)容就是這個(gè) pods 被pod install 的時(shí)候會(huì)被下載下來的文件汛骂,不在這個(gè)文件夾,將不會(huì)被引用
# Classes 目錄和.podspec 目錄是平級(jí)的评腺。
#你可以隨便指定文件夾名稱帘瞭,只要這個(gè)文件夾是真實(shí)存在的
#Classes/**/*.{h,m},表示 Classes 文件夾及其文件夾下的所有.h,.m 文件蒿讥。
s.source_files = "A_section/Classes/**/*.{h,m}"
#資源文件地址蝶念,下面的所有.png資源都被打包成 s.name.bundle
s.resource = ['Images/*.png','Sounds/*']
#資源文件地址,和 resource 的區(qū)別是诈悍,這個(gè)屬性可以指定 bundle 的名字祸轮,下面的所有.png文件都會(huì)被打包成 ABC_section.bundle
s.resource_bundle = {
'ABC_section' => ['Classes/ABCImage/*png']
}
#指定公有頭文件,如果沒有寫侥钳,那么所有 pod 中的頭文件都默認(rèn)公有适袜,可以被 import。如果指定了某些頭文件舷夺,那么只有這些被指定的頭文件才可以被 import苦酱。
s.public_header_files = 'Classes/Public/*.h'
#這個(gè) pods 還依賴于其他哪些 pods
s.dependency "B_Category"
s.dependency "HandyFrame"
4. cd Example/
更新組件內(nèi)容
pod update --no-repo-update
5. cd demo/CustomUIKit/
pod lib lint
可能會(huì)出現(xiàn)驗(yàn)證失敗的情況, 就根據(jù)提示解決就好
[!] CustomUIKit did not pass validation, due to 2 warnings (but you can use
--allow-warnings
to ignore them).
You can use the--no-clean
option to inspect any issue.
6. 關(guān)聯(lián)遠(yuǎn)程地址
git remote add origin git@github.com:LiHe0308/CustomUIKit.git
git add .
git commit -a -m "創(chuàng)建項(xiàng)目"
git push -u origin HEAD
至此就將創(chuàng)建的私有庫上傳到GitHub上了.
7. 項(xiàng)目發(fā)布
git tag 0.1.0
git push origin 0.1.0
要想被使用,還需向私有 CocoaPods 遠(yuǎn)程索引庫提交 podspec 描述文件.
8. 向私有 CocoaPods 遠(yuǎn)程索引庫提交 podspec 描述文件
pod repo push PrivateSpecs CustomUIKit.podspec --allow-warnings
- PrivateSpecs 就是私有索引倉(cāng)庫的名稱.
- CustomUIKit.podspec 就是創(chuàng)建組件的文件夾下面的.podspec的全名(注意:
xxx.podspec路徑需注意给猾,必須是.podspec的路徑, 也就是說,當(dāng)前操作要在demo下的CustomUIKit目錄下進(jìn)行
).
完成之后這個(gè)組件庫就添加到我們的私有Spec Repo中了疫萤,可以進(jìn)入到~./cocoapods/repos/xxx目錄下查看
.End