iOS元件化開篇(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:返回一個字串 就是我們專案中剛才打的tags.author:
作者s.homepage:
專案主頁地址s.summary:
專案簡介s.source:
專案原始碼所在地址s.license:
許可證s.platform:
專案支援平臺s.requires_arc:
是否支援ARCs.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就非常簡單的完成了
開了個篇,未完待續。。。。。。
參考文章