公司業(yè)務(wù)不斷的發(fā)展,需要各個(gè)業(yè)務(wù)部門配合開發(fā)相關(guān)模塊,公司不止有一個(gè)產(chǎn)品,當(dāng)項(xiàng)目達(dá)到兩個(gè)及以上的時(shí)候,就需要考慮代碼的共用(理想情況下)。由于我們公司特殊情況(懶),原來做項(xiàng)目的時(shí)候沒有考慮這么多,由于公司新項(xiàng)目與原來的項(xiàng)目有大量功能相似,當(dāng)時(shí)我們就采用了創(chuàng)建新分支的形式創(chuàng)建了新項(xiàng)目,導(dǎo)致代碼耦合性非常強(qiáng),平常開發(fā)中遇到很多問題,比如:
- 有些代碼可能這個(gè)項(xiàng)目需要,那個(gè)項(xiàng)目不需要
- 分支切換太過頻繁
- 創(chuàng)建了大量分支
- 在這個(gè)分支上開發(fā)的時(shí)候,測試需要另一個(gè)項(xiàng)目的包,需要來回切換
。。。等等
此時(shí)git 版本管理起來會(huì)顯得比較吃力,經(jīng)過研究我們可以通過創(chuàng)建cocoapods 私有庫來管理我模塊的代碼
創(chuàng)建私有 Spec Repo
- 首先我們需要在公司git服務(wù)上創(chuàng)建一個(gè)私有庫來托管Spec Repo,執(zhí)行命令
/*
xxx 私有spec repo 名稱
xxxx 創(chuàng)建的git 倉庫的地址
*/
pod repo add xxx xxxx
/*
查看所有spec repo 列表
*/
pod repo list
創(chuàng)建一個(gè)git 倉庫管理項(xiàng)目代碼
- 克隆項(xiàng)目到本地指定文件夾A
git clone xxxx
- 在文件夾A下創(chuàng)建工程,并進(jìn)入工程項(xiàng)目下,創(chuàng)建cocopods配置文件
pod spec create xxx
xxx.podspec 文件各字段含義
name:框架名
version:當(dāng)前版本(注意,是當(dāng)前版本,假如你后續(xù)更新了新版本,需要修改此處)
summary:簡要描述,在pod search ZCPKit的時(shí)候會(huì)顯示該信息。
description:詳細(xì)描述
homepage:頁面鏈接
license:開源協(xié)議
author:作者
source:源碼git地址
platform:支持最低ios版本
source_files:源文件(可以包含.h和.m)
public_header_files:頭文件(.h文件)
resources:資源文件(配置的文件都會(huì)被放到mainBundle中)
resource_bundles:資源文件(配置的文件會(huì)放到你自己指定的bundle中)
frameworks:依賴的系統(tǒng)框架
vendored_frameworks:依賴的非系統(tǒng)框架
libraries:依賴的系統(tǒng)庫
vendored_libraries:依賴的非系統(tǒng)的靜態(tài)庫
dependency:依賴的三方庫
- 在podspec寫好之后我們需要驗(yàn)證一下編寫的內(nèi)容是否有誤??梢栽诿钚械娜綆飚?dāng)前路徑下使用下面的命令:
pod lib lint (從本地驗(yàn)證你的pod能否通過驗(yàn)證)
pod spec lint (從本地和遠(yuǎn)程驗(yàn)證你的pod能否通過驗(yàn)證)
pod lib lint --verbose (加--verbose可以顯示詳細(xì)的檢測過程,出錯(cuò)時(shí)會(huì)顯示詳細(xì)的錯(cuò)誤信息)
pod lib lint --allow-warnings (允許警告,用來解決由于代碼中存在警告導(dǎo)致不能通過校驗(yàn)的問題)
pod lib lint --help (查看所有可選參數(shù),可選參數(shù)可以加多個(gè))
- 驗(yàn)證成功后,我們把代碼提交到git倉庫, 參考如下命令
git add .
git commit -m 'first add pod files'
git tag -a 0.0.1
git push --tags
git push master
- 我們將創(chuàng)建的podspec 提交到 spec Repository 執(zhí)行 命令
pod repo push xxx xxx.podspec
- 使用說明podifle文件
建立后修改 Podfile 文件內(nèi)容如下:
source 'https://github.com/CocoaPods/Specs.git' #官方倉庫地址
source ‘http://njGitrepo/wushuanghong/wshSpecs.git’ #私有倉庫地址
use_frameworks!
target 'TestPodDemo' do
pod ‘xxx’
end