Cocoapods遠(yuǎn)程私有庫創(chuàng)建

步驟

  • 創(chuàng)建并設(shè)置一個私有的Spec Repo。
  • 創(chuàng)建Pod所需要的項目工程文件,并且有可訪問的項目版本控制地址。
  • 創(chuàng)建Pod所對應(yīng)的podspec文件。
  • 本地測試配置好的podspec文件是否可用。
  • 向私有的Spec Repo中提交podspec。
  • 在個人項目中的Podfile中增加抽取好的Pod并使用。
  • 更新podspec。

本地私有倉庫:

什么是Spec Repo?他是所有的Pods的一個索引,就是一個容器,所有公開的Pods都在這個里面,他實(shí)際是一個Git倉庫,remote端在GitHub上,當(dāng)我們使用Cocoapods后它會被clone到本地的~/.cocoapods/repos目錄下,可以進(jìn)入到這個目錄看到master文件夾就是這個官方的Spec Repo了。這個master目錄的結(jié)構(gòu)是這個樣子的。


15784773122608.png

1.在碼云上創(chuàng)建一個私有庫:

https://gitee.com/Steven_Hu/HKCommonTools.git

2.將私有庫添加到本地

pod repo add REPO_NAME SOURCE_URL

$ pod repo add CommomToolSpec https://gitee.com/Steven_Hu/HKCommonTools.git

Cloning spec repo CommomToolSpec from https://gitee.com/Steven_Hu/HKCommonTools.git

3.cd 到桌面開始組件化抽取

cd ./Desktop
pod lib create HKCommonTool

Cloning `https://github.com/CocoaPods/pod-template.git` into `HKCommonTool`.
Configuring HKCommonTool template.
! Before you can create a new library we need to setup your git credentials.
 What is your email?
 > 916109796@qq.com
! Setting your email in git to 916109796@qq.com
  git config user.email "916109796@qq.com"
------------------------------
To get you started we need to ask a few questions, this should only take a minute.
If this is your first time we recommend running through with the guide: 
 - https://guides.cocoapods.org/making/using-pod-lib-create.html
 ( hold cmd and double click links to open in a browser. )

What platform do you want to use?? [ iOS / macOS ]
 > iOS
What language do you want to use?? [ Swift / ObjC ]
 > ObjC
Would you like to include a demo application with your library? [ Yes / No ]
 > Yes
Which testing frameworks will you use? [ Specta / Kiwi / None ]
 > None
Would you like to do view based testing? [ Yes / No ]
 > Yes
What is your class prefix?
 > HK
Running pod install on your new library.
Pod installation complete! There are 2 dependencies from the Podfile and 1 total pods installed.

把要抽取的工具類拖到 Pods ->Development Pods 下的Replace.m 中并替換掉它

cd 到工程目錄下 執(zhí)行 pod install

4.推送到遠(yuǎn)程私有庫(git遠(yuǎn)程倉庫地址,或者碼云等)

  • 關(guān)聯(lián)遠(yuǎn)程倉庫

在 HKCommonTool 工程目錄下 執(zhí)行

$ git remote add origin https://gitee.com/Steven_Hu/HKCommonTools.git
  • 提交到git倉庫
git add .
git commit -m 'HKCommonTool初始化'
git push origin master
git push origin master -f //全局提交

5.修改 .podspec 文件并提交

Pod::Spec.new do |s|
  #名稱
  s.name             = 'HKCommonTool'
  #版本號
  s.version          = '0.1.0'
  #摘要
  s.summary          = 'HKCommonTool 常用工具類歸類'
  #描述
  s.description      = 'iOS開發(fā)常用的常用宏定義和工具類,網(wǎng)絡(luò)框架等~'
  #遠(yuǎn)程倉庫首頁鏈接
  s.homepage         = 'https://gitee.com/Steven_Hu/HKCommonTools'
  #截圖
  # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
  #許可證
  s.license          = { :type => 'MIT', :file => 'LICENSE' }
  #作者
  s.author           = { 'HJT916109796' => '916109796@qq.com' }
  #source來源
  s.source           = { :git => 'https://gitee.com/Steven_Hu/HKCommonTools.git', :tag => s.version.to_s }
  #社交鏈接
  # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
  #開發(fā)版本
  s.ios.deployment_target = '9.0'
  #資源文件路徑
  s.source_files = 'HKCommonTool/Classes/**/*'
  #資源包
  # s.resource_bundles = {
  #   'HKCommonTool' => ['HKCommonTool/Assets/*.png']
  # }
  # s.public_header_files = 'Pod/Classes/**/*.h'
  # s.frameworks = 'UIKit', 'MapKit'
  # s.dependency 'AFNetworking', '~> 2.3'
end

6.校驗(yàn)文件的正確性:

$pod lib lint HKCommonTool.podspec
//去掉/允許警告
$pod lib lint --allow-warnings

重新提交:

git add .
git commit -m '修改podspec文件~'
git push origin master

設(shè)置tag

git tag
git tag '0.1.0'
git push --tags

7.推送本地Spec到遠(yuǎn)程倉庫

git fetch origin master

git checkout master

git branch --set-upstream-to=origin/master master

Branch 'master' set up to track remote branch 'master' from 'origin'.

git pull

pod repo update

pod repo push CommomToolSpec HKCommonTool.podspec 

git push 

git pull

git push origin master

8.如何使用:

編輯Podfile文件如下:

編輯Podfile 必須加 git => 'https://gitee.com/Steven_Hu/HKCommonTools.git'

platform :ios, '9.0'
use_frameworks!

target 'HKTools' do
  
  pod 'XCDemo'  ,:git => 'https://gitee.com/Steven_Hu/XCTool.git'
  pod 'HKCommonTool'  ,:git => 'https://gitee.com/Steven_Hu/HKCommonTools.git'
#  pod 'HKTools', :path => './Lib/HKTools'
#  pod 'HKTools', :podspec => '~/.cocoapods/repos/HKTools/HKTools.podspec'
end

需要添加依賴的組件化抽取

use_frameworks!
platform :ios, '8.0'
target 'XBTool_Example' do
  pod 'XBTool', :path => '../'
  pod 'AFNetworking', '~> 3.1.0'
end

此時找不到AFN,解決辦法 將use_frameworks!刪除 使用:(dynamic framework) 不使用:(static libraries)

#use_frameworks!  ---- dynamic framework
#不使用!  ---- static libraries方式
platform :ios, '8.0'
target 'XBTool_Example' do
    
  pod 'XBTool', :path => '../'
  pod 'AFNetworking', '~> 3.1.0'
end

常用命令補(bǔ)充

//1.cd /Users/MengYu/Desktop/HKTools
pod init
//2.cd /Users/MengYu/Desktop/HKTools/Lib/
pod lib create HKTools
iOS, ObjC, Yes,None,No,HK
//3.抽取替換Replace.m
添加依賴,pod install
//4.提交碼云:
cd /Users/MengYu/Desktop/HKTools/Lib/HKTools/
git remote add origin https://gitee.com/Steven_Hu/HKTools.git
git add .
git commit -m 'HKTools初始化'
git push origin master -f
//5.校驗(yàn)本地podspec文件是否可用
pod lib lint 
$pod lib lint HKCommonTool.podspec
//去掉警告
$pod lib lint --allow-warnings
//查看報錯詳細(xì)信息
pod lib lint --verbose
//6.設(shè)置tag
git tag
git tag '0.1.0'
git push --tags
//7.設(shè)置推送到主干
git fetch origin master
git checkout master
git branch --set-upstream-to=origin/master master
//8.刪除本地私有庫
pod repo remove 私有庫名字
//9.刪除源
git remote remove origin
//10.克隆
git clone 倉庫地址
//11.更新 速度快
pod install --verbose --no-repo-update

其他補(bǔ)充

1. 圖片資源路徑配置

CocoaPods .podspec文件配置詳解

# 開放的庫文件 * 表示通配
s.source_files = 'HKWebView/Classes/**/*'
#  *.{png,js,html} 表示查詢png 和 js 和 html 后綴名的文件
s.resource_bundles = {
'HKWebView' => ['HKWebView/Assets/*.{png,js,html}']
}

2.組件化通訊原理

通過Runtime+命令模式(Target-Action)實(shí)現(xiàn)解耦,即不import,發(fā)送命令時,不需要知道請求的接收者是誰,提供TARGET分發(fā)命令

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

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

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