前言
iOS開發(fā)者奸绷,會經(jīng)常使用CocoaPods管理第三方庫梗夸。但是,無論是組件化開發(fā)還是需要創(chuàng)建公司內(nèi)部的類庫号醉,我們都可以制作自己私有的CocoaPods庫反症。本文就是詳細說明私有庫創(chuàng)建流程。
創(chuàng)建流程
私有檢索庫的創(chuàng)建
我們創(chuàng)建CocoaPods公有庫時需要向公共的Spec庫進行注冊的扣癣。私有庫則需要我們自己來創(chuàng)建Spec倉庫惰帽。這個Spec庫存儲的是私有庫的檢索信息,版本信息等等父虑,一定要與私有庫本身區(qū)分開该酗。
1,創(chuàng)建遠程Spec倉庫
首先士嚎,我們需要創(chuàng)建一個存放Spec檢索庫的遠程倉庫
2呜魄,將Spec遠程倉庫添加到本地:
$ pod repo add JiaSpecRepo https://github.com/skykywind/JiaSpecRepo.git
然后我們可以在 /Users/jiafujia/.cocoapods/repos/JiaSpecRepo
找到clone的倉庫:
私有庫的創(chuàng)建
有了檢索庫,我們就可以創(chuàng)建私有代碼庫了莱衩。
創(chuàng)建代碼庫遠程倉庫
這里我們創(chuàng)建一個新的遠程倉庫爵嗅,名字為PrivateLib
:
創(chuàng)建支持CocoaPods的項目
我們可以在已經(jīng)存在的項目添加支持Cocoapods的文件,也可以新建項目笨蚁。打開終端睹晒,通過以下命令創(chuàng)建新的工程:
- Pod創(chuàng)建私有庫項目
$ pod lib create PrivateLib
然后會有如下幾個問題需要你自定義:
What platform do you want to use?? [ iOS / macOS ]
> iOS
What language do you want to use?? [ Swift / ObjC ]
> Swift
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 ]
> Yes
- 編輯
PrivateLib.podspec
文件
現(xiàn)根據(jù)自己項目的情況編輯版本信息,描述信息括细,以及其他內(nèi)容伪很,詳見CocoaPods官網(wǎng)文檔
#
# Be sure to run `pod lib lint PrivateLib.podspec' to ensure this is a
# valid spec before submitting.
#
# Any lines starting with a # are optional, but their use is encouraged
# To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html
#
Pod::Spec.new do |s|
s.name = 'PrivateLib'
s.version = '0.1.0'
s.summary = 'Here is Summary of PrivateLib.'
s.description = <<-DESC
Here is a long description of your private lib. we can write details of the lib.
DESC
s.homepage = 'http://www.reibang.com/u/0d7345536bf2'
# s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'skykywind' => '824214765@qq.com' }
s.source = { :git => 'https://github.com/skykywind/PrivateLib.git', :tag => s.version.to_s }
s.ios.deployment_target = '8.0'
s.swift_version = '4.2' // 指定Swift 版本
s.source_files = 'PrivateLib/Classes/**/*' // 項目代碼存放的文件路徑
end
編輯完成之后,我們來驗證一下是否能通過:
$ pod lib lint PrivateLib.podspec
如果不能通過驗證奋单,終端會提示你哪個字段信息有問題锉试,修改之后在進行驗證就好了。
- 添加代碼
打開PrivateLib.xcworkspace
, 我們刪除默認的ReplaceMe.swift
文件, 在PrivateLib->PrivateLib->Classes
文件夾下览濒,我創(chuàng)建了一個MyClass
類作為示例呆盖,這里也就是添加私有代碼的地方:
import Foundation
public class MyClass {
public init() {
}
public func sayHello() {
print("Hello world")
}
}
- 測試代碼
添加完我們的代碼后,可以在Example項目中進行測試贷笛。在Example目錄下应又,使用下面命令(每次修改私有庫代碼都需要重新pod install
):
$ pod install
然后在Example的中調(diào)用:
import UIKit
import PrivateLib
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let myClass = MyClass()
myClass.sayHello()
}
}
如果運行成功我們就可以繼續(xù)進行了。
- 提交本地代碼
打開終端乏苦,使用git指令提交代碼
# 關(guān)聯(lián)遠程倉庫
$ git remote add origin https://github.com/skykywind/PrivateLib.git
# 添加全部修改
$ git add .
# 提交修改
$ git commit -a -m "0.1.0"
# 拉取遠程倉庫代碼(先拉取一下遠程的代碼丁频,避免沖突)
$ git pull origin master
# 推送到遠程倉庫
$ git push origin master
# 制作Tag
$ git tag 0.1.0
# 發(fā)布Tag
$ git push origin 0.0.1
- 向私有Spec檢索庫注冊自己的spec,并驗證是否成功:
# JiaSpecRepo是我們最開始創(chuàng)建的檢索庫名稱
$ pod repo push JiaSpecRepo PrivateLib.podspec
//驗證遠程
$ pod spec lint PrivateLib.podspec
成功之后我們會在JiaSpecRepo文件夾看到我們發(fā)布的版本Users/username/.cocoapods/
目錄內(nèi):
同時,也可以在遠程倉庫去查看是否發(fā)布成功席里。
私有庫的使用
創(chuàng)建一個新的iOS項目 TestDemo
,在項目目錄下:
$ pod init
然后通過Xcode或者其他編輯器拢驾,編輯Podfile
文件奖磁,參考如下:
source 'https://github.com/skykywind/JiaSpecRepo.git'
# 如果需要引入公共資源的庫,也要添加下面的公共檢索庫地址
# source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
target 'TestDemo' do
pod 'PrivateLib', '~> 0.1.0'
end
私有庫的更新
如果是更新自己的私有庫繁疤,比如修改了代碼咖为,添加了新的依賴庫,我們需要重新更新.spec的版本稠腊,創(chuàng)建新的Tag號并push到檢索庫(重復發(fā)布步驟)躁染。
如果是更新自己本地檢索庫,可以執(zhí)行以下命令:
//更新所有repo
$ pod repo update
// 更新某個spec
$ pod repo [spec庫名]
// 添加新的檢索庫到本地
pod repo add [Specs Name] [Specs git倉庫地址]