iOS - 組件化開發一 私有庫pod製作

前言

 最近和朋友聊天聊到組件化開發,網上非常多優秀的文章有介紹也有很多的demo,組件化的幾種實現方案的選擇這裏不做討論,這裏介紹一個組件化的基本技能:製作私有庫===>給新手或有需要的人一點參考(不對或者錯誤的地方 歡迎大佬指出)

1.知識準備

1.cocopod使用經驗(iOS開發一般都有涉及)

2.git常用命令使用(svn用多了也得學學git,git命令不熟悉的建議下載SourceTree客戶端) 

3.github開源庫相關經驗(mac要配置好ssh的key等)

2.製作私有庫10個步驟

1.GitHub創建一個私有庫(先pod search xxx 查一下你想取名字是不是被佔用 關鍵!)

2.克隆到本地 然後Xcode創建一個項目 放到克隆的目錄下(相關代碼自己加進去)

3.創建一個 PodFile 和  ****.podspec 文件 主要的東西在這個podspec裏面(可以自行百度 注意此時文件裏面有個版本信息:1.0.0 與下面的要對應)【podspec教程】【podspec分支

4.校驗項目是否可以正常編譯(只要關注error就可以了,根據錯誤提示修改,不難)

pod lib lint --allow-warnings

吭:依賴導入#import <ReactiveCocoa.h>不行 要換成 #import <ReactiveCocoa/ReactiveCocoa.h>

5.提交代碼到GitHub(我是用SourceTree來提交 不要把Test和依賴的第三方Pod文件提交上去)

6.打個tag兩步指令: (可以上github看一下是否提交成功了)

 git tag -m "code commit" "1.0.0" 
git push --tags

7.上傳私有庫(這一步會校驗github tag 1.0.0上面代碼 要確保tag1.0.0這份代碼上傳完整)

pod spec lint --allow-warnings 

吭:第4步本地的校驗成功 但是github tag卻校驗不成功說文件不存在,要去github對應tag版本上檢查一下tag的代碼是否完成提交(下面有圖)

8.發佈私私有庫

pod trunk push  ****.podspec --allow-warnings 

9.清理本地緩存

rm ~/Library/Caches/CocoaPods/search_index.json

10.校驗是否私有庫發佈成功

pod search ****

3.更新升級私有庫(基本跟上面是一摸一樣的 但是還是要寫一遍 版本與Tag版本對應)

1.項目裏面修改/添加代碼(廢話)

2.修改****.podspec裏面的版本信息 與內容簡介(之前1.0.0 現在改成1.0.1)

3.校驗項目是否可以正常編譯(只要關注error就可以了,根據錯誤提示修改,不難)

pod lib lint --allow-warnings

4.提交代碼到GitHub(我是用SourceTree來提交 不要把Test和依賴的第三方Pod文件提交上去)

5.打個tag兩步指令:

 git tag -m "code commit" "1.0.1" 
git push --tags

 6.上傳私有庫:(這一步會校驗github tag 1.0.1上面代碼 要確保tag1.0.1這份代碼上傳完整)

pod spec lint --allow-warnings 

7.發佈私私有庫

pod trunk push  ****.podspec --allow-warnings 

8.清理本地緩存

rm ~/Library/Caches/CocoaPods/search_index.json

9.校驗是否私有庫發佈成功(此時你會看到會有 1.0.0 與 1.0.1版本)

pod search **** 

備註:以上的命令都是要在根目錄下執行,終端先cd到項目根目錄執行 eg:

cd  /Users/linpeng/Documents/Git/ModuleApp/XXXX 

4.圖文演示

demo地址:https://github.com/Jacky-LinPeng/LPCommonModule

1.GitHub創建一個私有庫

2.克隆到本地 然後Xcode創建一個項目 放到克隆的目錄下(相關代碼自己加進去)

3.創建一個 PodFile 和  ****.podspec 文件 主要的東西在這個podspec裏面(可以自行百度 注意此時文件裏面有個版本信息:1.0.0 與下面的要對應)

注意箭頭的版本信息與目錄結構配置 關鍵!

4.校驗項目是否可以正常編譯(只要關注error就可以了,根據錯誤提示修改,不難)

pod lib lint --allow-warnings

5.提交代碼到GitHub(我是用SourceTree來提交 不要把Test和依賴的第三方Pod文件提交上去)

6.打個tag兩步指令: (可以上github看一下是否提交成功了)

 git tag -m "code commit" "1.0.0" 
git push --tags

7.上傳私有庫(這一步會校驗github tag 1.0.0上面代碼 要確保tag1.0.0這份代碼上傳完整)

pod spec lint --allow-warnings 

8.發佈私私有庫

pod trunk push  ****.podspec --allow-warnings 

9.清理本地緩存

rm ~/Library/Caches/CocoaPods/search_index.json

10.校驗是否私有庫發佈成功

pod search ****

使用:

其他項目引用這個pod就可以使用這個pod裏面的東西了,Test項目不需要引入AF,SD, Masonry等pod,因爲LPCommonModule裏面的podspec裏面有引入這些依賴了

圖文講解也可以配合這兩篇文章

https://blog.csdn.net/Tonyshng/article/details/69525556
https://www.jianshu.com/p/d7d1942dd3f1

========================更新 ==============

1.如何實現目錄分層?

參考文章:https://segmentfault.com/a/1190000012269307

Pod::Spec.new do |s|
s.name         = "LPCommonModule"   #私有庫的名稱
s.version      = "1.1.1"   #版本號
s.summary      = "App基礎,第三方pod等依賴"  #概述
s.description  = <<-DESC
App基礎,第三方pod等依賴   #描述
DESC
s.homepage     = "https://github.com/Jacky-LinPeng/LPCommonModule"  #git上的地址
s.license      = { :type => "MIT", :file => "LICENSE" }   #許可證
s.author             = { "linpeng" => "[email protected]" }   #作者名以及郵箱
s.platform     = :ios, "8.0"

s.source       = { :git => "https://github.com/Jacky-LinPeng/LPCommonModule.git", :tag => s.version.to_s }   #這個是git上   releases的代碼,以後每次版本升級,都會傳到這裏

s.source_files  = "LPCommonModule/LPCommonModule/LPCommonModule.h"   #路徑 前面的表示私有庫名,後面表示私有庫中的內容

#s.public_header_files = 'LPCommonModule/LPCommonModule/LPCommonModule.h'

s.subspec 'CommomView' do |ss|
    ss.ios.deployment_target = '8.0'
    ss.source_files = 'LPCommonModule/LPCommonModule/View/**/*.{h,m}'
end
s.subspec 'CommomManager' do |ss|
    ss.ios.deployment_target = '8.0'
    ss.source_files = 'LPCommonModule/LPCommonModule/Manager/*.{h,m}'
end
s.subspec 'CommomCategory' do |ss|
    ss.ios.deployment_target = '8.0'
    ss.source_files = 'LPCommonModule/LPCommonModule/Category/*.{h,m}'
end

s.exclude_files = "Classes/Exclude"

s.requires_arc = true

s.dependency 'ReactiveCocoa','2.5'
s.dependency 'AFNetworking'
s.dependency 'YYModel'
s.dependency 'SDWebImage', '~> 5.0.0-beta3'
s.dependency 'Masonry', '~> 1.1.0'
s.dependency 'SVProgressHUD'
end

效果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章