Swift 私有庫亩钟、組件化快速搭建(CocoaPods私有庫/索引庫)

最近更新 2023.3.31
私有Cocoapods倉庫&遇到的問題
pod索引庫
私有pod倉庫
pod組件化
pod遇到的問題

Git代碼搬遷

  1. 在新Git服務(wù)器創(chuàng)建需要遷移的同名空項目(不同名也可以)

  2. Git clone 舊Git代碼到本地 (或者本地有Git origin的代碼乓梨,用Git remote -v 查看)

  3. Git push --mirror 新的空項目地址

  4. 完成后Git clone 新Git上的代碼到本地game over

Pod 私有庫(子組件)

1. 創(chuàng)建工程以YBBluetoothKit為例
pod lib create YBBluetoothKit

#然后回答幾個問題

#選擇平臺
What platform do you want to use?? [ iOS / macOS ]  
 > ios

#選擇語言
What language do you want to use?? [ Swift / ObjC ]  
 > swift

#是否需要Demo
Would you like to include a demo application with your library? [ Yes / No ] 
 > yes

#是否使用測試工具
Which testing frameworks will you use? [ Quick / None ]  
 > none

#是否進行視圖測試
Would you like to do view based testing? [ Yes / No ]  
 > no

2. 設(shè)置podspec 文件

注意必須修改的內(nèi)容


Pod::Spec.new do |s|

  # 庫名稱,默認(rèn)和工程名相同径荔,建議不改
  s.name             = 'YTPrivateBaseKit'   

  # 庫的版本,每次升級版本后必須要在這里修改版本號
  s.version          = '0.1.0'                  

  # 該庫的簡介脆霎,更改成適合的簡介总处,使用默認(rèn)簡介會出現(xiàn)簡介沒有意義的錯誤
  s.summary          = '這是一個藍(lán)牙庫.'   

  # 詳細(xì)描述,一般不用改睛蛛,有readme呢
  s.description      = <<-DESC
TODO: Add long description of the pod here.
                       DESC

  # 庫的主頁鹦马,需要更改為正確的主頁
  s.homepage         = 'http://101.132.74.65/fengming/YBBluetoothKit' 

  # 許可,私有庫可以不改
  s.license          = { :type => 'MIT', :file => 'LICENSE' }

  # 作者忆肾,可以不改
  s.author           = { 'fengming' => '1028708571@qq.com' }    

  # 庫的克隆地址荸频,這個地址必須改成正確的克隆地址,可以是 https 或 ssh
  s.source           = { :git => 'http://101.132.74.65/fengming/YBBluetoothKit.git', :tag => s.version.to_s } 

  # 該庫最低支持版本客冈,可以修改為對應(yīng)版本
  s.ios.deployment_target = '10.0'

  # 該庫上傳文件的路徑旭从,默認(rèn)是 Classes 文件夾下的所有文件夾及文件,默認(rèn)不需要改
  s.source_files = 'YBBluetoothKit/Classes/**/*'

  #--------------------------------------------------
  # 以下是默認(rèn)沒有但可以自行添加的基礎(chǔ)配置

  # 設(shè)置指定版本號或非指定版本號的依賴庫场仲,
  #s.dependency 'SnapKit'

  # 指定 Swift 語言版本和悦,Swift 項目需要設(shè)置這個
  # s.swift_version = '4.2'

end

5.本地校驗pod lib lint

cd 到Y(jié)BBluetoothKit => YBBluetoothKit.podspec 所在目錄

pod lib lint --allow-warnings

出現(xiàn)YBBluetoothKit passed validation.表示成功

6. 創(chuàng)建遠(yuǎn)程庫

在Git遠(yuǎn)端創(chuàng)建項目

7. 關(guān)聯(lián)遠(yuǎn)程庫
git remote add origin "http://101.132.74.65/fengming/YBBluetoothKit"
8.提交代碼并為項目打上tag
git add .
git commit -m "project init"
git tag -m "first dev v0.1.0" 0.1.0
git push
git push --tags
9 .聯(lián)網(wǎng)校驗pod spec lint

Pod 索引庫(主倉庫)

如果已經(jīng)創(chuàng)建過,就不需要再創(chuàng)建了

1. 在Git遠(yuǎn)端創(chuàng)建主工作項目 以ManagerSpecRepo為例

創(chuàng)建一個空的遠(yuǎn)端項目即可

2. 將索引庫添加(關(guān)聯(lián))到CocoaPods的目錄下
pod repo add ManagerSpecRepo http://101.132.74.65/fengming/ManagerSpecRepo
3.將子組件YBBluetoothKit.podspec添加并推送到ManagerSpecRepo主倉庫
pod repo push ManagerSpecRepo YBBluetoothKit.podspec

查看本地索引庫

pod repo list

刪除本地索引庫

pod repo remove name

Pod私有庫更新流程

  1. 將修改過的子組件文件的.podspec文件渠缕,修改version即可

  2. 打tag鸽素,并將tag上傳 (git push origin [tagname] / git push origin --tags)

  3. pod lib lint --allow-warnings

  4. pod repo push 主倉庫 子組件.podspec --verbose --allow-warnings

  5. 如果有.a都靜態(tài)庫使用--use-libraries

pod repo push ManagerSpecRepo YBBluetoothKit.podspec --verbose --use-libraries --allow-warnings
  1. 如果里面已經(jīng)依賴了其他私有庫 需要指定 sources 地址(以逗號隔開)
pod repo push ManagerSpecRepo YBBluetoothKit.podspec --verbose --use-libraries --allow-warnings --sources="http://101.132.74.65/fengming/ManagerSpecRepo,https://github.com/CocoaPods/Specs.git"

Pod私有庫異常整理

1. pod lib lint (檢查本地pod)
[!] DemoPodSpecs 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.

解決辦法:用 pod lib lint --allow-warnings 命令

2. pod spec lint (檢查遠(yuǎn)程pod)
Encountered an unknown error (Simulator is not available.) during validation

解決辦法:升級cocoapods sudo gem install -n /usr/local/bin cocoapods --pre

3. pod spec lint (檢查遠(yuǎn)程pod)
[iOS] unknown: Encountered an unknown error (Must be in the root of the repo (/Users/*.cocoapods/repos/master), instead in ....

解決辦法:可能是因為更新完Xcode以后Xcode路徑更改了,Xcodebuild找不到路徑亦鳞。 執(zhí)行命令 sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer

4. pod repo push DemoPodSpecs DemoPodSpecs.podspec

The DemoPodSpecs.podspec specification does not validate.

解決辦法: pod repo push DemoPodSpecs DemoPodSpecs.podspec --verbose --use-libraries --allow-warnings

5. pod repo push DemoPodSpecs DemoPodSpecs.podspec --verbose --use-libraries --allow-warnings
/usr/bin/git -C /Users/.cocoapods/repos/DemoPodSpecs -C
 /Users/.cocoapods/repos/DemoPodSpecs push origin master
 fatal: repository '' not found

解決辦法:到 /Users/.cocoapods/目錄下查看私有pod庫是否存在

6. pod lib lint
[!] The validator for Swift projects uses Swift 3.0 by default, if you are using a different version of swift you can use a `.swift-version` file to set the version for your Pod. For example to use Swift 2.3, run: `echo "2.3" > .swift-version`.

解決辦法:運行 echo 4.2 > .swift-version

7. Pod install

7.1

[!] CocoaPods could not find compatible versions for pod "YBCoreKit":
  In snapshot (Podfile.lock):
    YBCoreKit (= 1.2.1)

  In Podfile:
    YBSDKPayKit (from ../) was resolved to 1.8.1, which depends on
      YBCoreKit

It seems like you've changed the constraints of dependency YBCoreKit inside your development pod YBSDKPayKit.
You should run pod update YBCoreKit to apply changes you've made.

解決辦法:

  1. 注釋掉source馍忽,和所以pod 庫,以及pod 'demo', :path => '../'燕差,然后 pod install
  2. 重新打開注釋掉的內(nèi)容遭笋,然后 pod install

7.2 Unable to find a specification for ""
解決辦法:
別著急pod update 一下就好了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市徒探,隨后出現(xiàn)的幾起案子坐梯,更是在濱河造成了極大的恐慌,老刑警劉巖刹帕,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吵血,死亡現(xiàn)場離奇詭異谎替,居然都是意外死亡,警方通過查閱死者的電腦和手機蹋辅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門钱贯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來悯姊,“玉大人烙懦,你說我怎么就攤上這事〗募樱” “怎么了褒傅?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵弃锐,是天一觀的道長。 經(jīng)常有香客問我殿托,道長霹菊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任支竹,我火速辦了婚禮旋廷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘礼搁。我一直安慰自己饶碘,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布馒吴。 她就那樣靜靜地躺著扎运,像睡著了一般。 火紅的嫁衣襯著肌膚如雪饮戳。 梳的紋絲不亂的頭發(fā)上绪囱,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天,我揣著相機與錄音莹捡,去河邊找鬼鬼吵。 笑死,一個胖子當(dāng)著我的面吹牛篮赢,可吹牛的內(nèi)容都是我干的齿椅。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼启泣,長吁一口氣:“原來是場噩夢啊……” “哼涣脚!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起寥茫,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤遣蚀,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芭梯,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡险耀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了玖喘。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片甩牺。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖累奈,靈堂內(nèi)的尸體忽然破棺而出贬派,到底是詐尸還是另有隱情,我是刑警寧澤澎媒,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布搞乏,位于F島的核電站,受9級特大地震影響戒努,放射性物質(zhì)發(fā)生泄漏请敦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一柏卤、第九天 我趴在偏房一處隱蔽的房頂上張望冬三。 院中可真熱鬧匀油,春花似錦缘缚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至弛车,卻和暖如春齐媒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背纷跛。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工喻括, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人贫奠。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓唬血,卻偏偏與公主長得像,于是被迫代替她去往敵國和親唤崭。 傳聞我的和親對象是個殘疾皇子拷恨,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容