1. 程式人生 > >iOS元件化開篇(Cocoapods遠端庫和本地私有庫製作)

iOS元件化開篇(Cocoapods遠端庫和本地私有庫製作)

目錄

Git基本操作

Cocoapods釋出自己的框架

1.安裝cocoapods

2.使用cocoapods

3.cocoapods釋出自己的框架

Cocoapods本地私有庫


前言

自己的工具庫和框架以前都是直接在模組裡面操作的,沒有做成私有化或者cocoapods管理,有必要操作一番,就有了以下的筆記

1.git基本使用

2.cocoapods釋出自己的庫給銀河系的大佬diss

3.pod本地私有庫

 

Git基本操作

1.git init  初始化本地倉庫

2.git add . 增加檔案到暫緩區

3.git status 檢視檔案狀態

4.git commit -m "xxx" 從暫緩區提交到本地倉庫

5.git tag '0.0.1' 打標籤

6.git tag 檢視標籤

7. git tag -d 0.0.1        然後 git push origin :0.0.1 刪除標籤

8.git remote add origin  倉庫地址   管理遠端倉庫地址

9.git push -u origin master  推倒遠端倉庫,以後預設git push即可

10.git pull origin master  或者第一次用 git pull --rebase origin master  從遠端倉庫拉

1.github建立遠端倉庫如下

按照上面選擇之後會預設建立倉庫如下

2.本地Xcode建立一個新的工程

就放在桌面新建一個新的工程,然後cd到目錄操作如下

以上步驟已經把change提交到暫緩區了

以上步驟push之前需要需要手動remote關聯剛才建立的遠端倉庫。由於之前沒有push過,而且倉庫已經存在,也有相關的檔案,所以需要先pull下來,不然會報錯,而且要記得加上--rebase

最後push到倉庫,然後打上tag即可

重新整理遠端倉庫如下

這裡下面的程式碼就是我們本地倉庫推上來的,如果我們要製作庫用pod install安裝,就是release裡面的程式碼了。

根據最上面的介紹,也可以自己刪除tag標籤,注意tag標籤只是一個記錄,上傳標籤只是上傳了這條記錄,並不是上傳程式碼

git tag -d 0.0.1        然後 git push origin :0.0.1 刪除標籤

Cocoapods釋出自己的框架

1.安裝cocoapods

安裝

2.使用cocoapods

2.1.pod search 關鍵字, 搜素自己需要安裝的庫,這裡的搜尋是根據最近一次本地倉庫更新的檔案進行查詢,如果沒有找到指定版本或者庫,可以執行 pod repo update來更新本地倉庫,或者刪除本地檢索檔案,重新從遠端拉

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

2.2.安裝所需框架

執行pod init建立Podfile檔案,一般都是工程一級目錄下面

platform :ios, '9.0'

target 'test' do
  # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
  # use_frameworks!

  pod 'AFNetworking'

  target 'testTests' do
    inherit! :search_paths
    # Pods for testing
  end

end

這裡的use_frameworks目的是讓庫按那種形式,預設是靜態庫的方式打進包裡面,開啟的話就是framework動態連結的形式存在,

2.3:這裡安裝的AF

執行
pod install

安裝完成,開啟即可使用

pod install和 pod update區別?
pod install第一次會根據Podfile檔案安裝,有了Podfile.lock檔案後會根據.lock檔案安裝。
pod update是根據Podfile檔案進行安裝第三方框架。
團隊開發中一般都是使用pod install,除非大家一起使用pod update升級本地庫。

3.cocoapods釋出自己的框架

上面的都是鋪墊,基本上都會,下面介紹下如何釋出自己寫好工具到Cocoapods

1.根據上面git的使用建立第一個專案,並且關聯到github,然後自己建立一個簡單的類作為工具庫釋出用,MKJTool目錄如下

2.podspec的建立

pod spec create MKJTool

用Xcode開啟,這裡用我這個簡潔版本的即可,網上那些太亂了

Pod::Spec.new do |s|
s.name         = 'MKJTool'
s.version      = '0.0.2'
s.summary      = 'MKJTool'
s.homepage     = 'https://github.com/DeftMKJ/balabala'
s.license      = 'MIT'
s.authors      = {'Mikejing' => '[email protected]'}
s.platform     = :ios, '6.0'
s.source       = {:git => 'https://github.com/DeftMKJ/balabala.git', :tag => s.version}
s.source_files = 'MKJTool/**/*.{h,m}'
s.requires_arc = true
end

這裡介紹下我這幾個的,網上介紹的太多太雜,用這一坨釋出基本的足夠了

  • s.name:名稱,pod search搜尋的關鍵詞,注意這裡一定要和.podspec的名稱一樣,否則報錯
  • s.version:版本號,to_s:返回一個字串  就是我們專案中剛才打的tag
  • s.author:作者
  • s.homepage:專案主頁地址
  • s.summary: 專案簡介
  • s.source:專案原始碼所在地址
  • s.license:許可證
  • s.platform:專案支援平臺
  • s.requires_arc: 是否支援ARC
  • s.source_files:需要包含的原始檔  這裡最好放在spec的同級目錄,然後指定目錄下所有h和m檔案
  • s.public_header_files:需要包含的標頭檔案
  • s.ios.deployment_target:支援的pod最低版本

其他一些非必要欄位

  • s.social_media_url:社交網址
  • s.resources:資原始檔
  • s.dependency:依賴庫,不能依賴未釋出的庫

3.打上0.0.2tag提交

mikejingdeMacBook-Pro:BlogLibTest MKJ$ git add .
mikejingdeMacBook-Pro:BlogLibTest MKJ$ git commit -m "publish"
mikejingdeMacBook-Pro:BlogLibTest MKJ$ git push -u origin master
mikejingdeMacBook-Pro:BlogLibTest MKJ$ git tag '0.0.2'
mikejingdeMacBook-Pro:BlogLibTest MKJ$ git tag
0.0.1
0.0.2
mikejingdeMacBook-Pro:BlogLibTest MKJ$ git push --tags
Enter passphrase for key '/Users/MKJ/.ssh/id_rsa': 
Total 0 (delta 0), reused 0 (delta 0)
To github.com:DeftMKJ/balabala.git
 * [new tag]         0.0.2 -> 0.0.2

4.註冊Cocoapods釋出許可權

首先執行

pod trunk me

如果看自己的註冊資訊和框架,那麼已經註冊過了,沒有的話就要執行

pod trunk register [email protected] 'password' --verbose

之後這個郵箱會收到一個郵件,驗證即可,雖有在執行pod trunk me查詢即可

有許可權之後看下我們編寫的spec時候可以正常釋出,一般情況下寫錯了就不能釋出了,所以預先看下是否合格

pod spec lint MKJTool.podspec  --verbose

之後會執行一坨東西,如果最後看到以下輸出說明OK了,不然你就跟著error改就好

5.釋出

pod trunk push MKJTool.podspec 

 

6.測試自己的cocoapods

pod search MKJTool

這個時候一般是搜尋不到的,因為釋出到網上,本地沒更新,我們可以如下操作刪除本地json檔案

mikejingdeMacBook-Pro:BlogLibTest MKJ$ rm ~/Library/Caches/CocoaPods/search_index.json
mikejingdeMacBook-Pro:BlogLibTest MKJ$ pod search MKJTool

幾分鐘左右就可以看到了

7.以上釋出的主要命令

git tag "0.0.1"

git push --tags

pod trunk register [email protected] 'password' --verbose

pod trunk me

pod spec create MKJTool //編輯 MKJTool.podspec

pod spec lint MKJTool.podspec

pod trunk push MKJTool.podspec

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

pod search MKJTool

8.新建個專案使用pod install 安裝剛才釋出的庫

Podfile如下

#Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'T1' do
  # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
  # use_frameworks!

  pod 'MKJTool'

  target 'T1Tests' do
    inherit! :search_paths
    # Pods for testing
  end

end

pod install安裝成功使用如下

 

Cocoapods本地私有庫

本地倉庫無非就是儲存在本地,本地作為伺服器,讓其他專案一起使用這個工具

1.新建工程,目錄還是一樣

2.建立上面目錄的podspec

這裡由於和上面釋出到網上不同,這個是本地庫,會有一些區別

Pod::Spec.new do |s|
s.name         = 'LibTool'
s.version      = '0.0.1'
s.summary      = 'Tool'
s.homepage     = 'https://github.com/DeftMKJ/TestLibMKJ'
s.license      = 'MIT'
s.authors      = {'Mikejing' => '[email protected]'}
s.platform     = :ios, '6.0'
s.source       = {:git => '', :tag => s.version}
s.source_files = 'LibTool/**/*.{h,m}'
s.requires_arc = true
end

source裡面git不需要寫了,其他還是根據具體資訊名稱填寫

隨後建立Podfile檔案

platform :ios, '9.0'

target 'Test' do
  # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
  # use_frameworks!

  # Pods for Test
  pod 'LibTool', :path=> '../'
  pod 'AFNetworking'

  target 'TestTests' do
    inherit! :search_paths
    # Pods for testing
  end

end

這裡有兩個例子,一個是本地的一個是AF,本地的後面跟的是podspec的目錄,這樣cocoapods就會根據本地路徑查詢工具安裝,會在對應的path下面查詢LibTool.podspec檔案進行安裝

裝了本地庫,專案的結構會變成這樣多了一個Development Pods

OK,私有庫和遠端釋出Demo就非常簡單的完成了

 

開了個篇,未完待續。。。。。。

 

參考文章

元件化文章一

釋出文章

釋出到Cocoapods