#目次
CocoaPodsでインストールできるオリジナルライブラリを作成する(1)
CocoaPodsでインストールできるオリジナルライブラリを作成する(2)
CocoaPodsでインストールできるオリジナルライブラリを作成する(3)
CocoaPodsでインストールできるオリジナルライブラリを作成する(4)
注意
この話を書く上の例として、
自作ライブラリの名前として"NeroBlu"
という名前をつけていますこれは自分の屋号から取ってきた名前なので、ただの「サンプル名」としてご認識ください
名前は各自でご自由につけなおしてくださいね
#まえがき
ライブラリである以上、メンテナンスすることは絶対あります
それはバグ修正であったり、機能追加であったり、、
なので、ライブラリの中身を修正すれば
それを使用しているプロジェクトは最新のものをインストールしていきたいものですが、
単純にそういうわけにもいかないこともありますねぇ
ライブラリの中身の修正により
今まで動いていたものが動かなくなることもあります
なので、CocoaPods
の利点であるバージョン指定でそれを解決したい
手段としては、
- タグを使う方法
- リリースを使う方法
が、あると思いますが、今回はタグを使う方法を書きたいと思います
#タグ付け
前回までのコミットに対して、git上でタグを付けます
タグ名は "1.0.0"
としておきます
で、
前項で作った String+Echo.swift
を少し書き換えます
import UIKit
public extension String {
public func echo() {
print("ver 1.1: \(self)")
}
}
podspec
も 1.0.0
ではなく、1.1.0
に書き換えてみます
d::Spec.new do |s|
s.name = "NeroBluTemp"
s.version = "1.1.0"
s.summary = "NeroBlu: Library for iOS."
s.description = ""
s.frameworks = "Foundation", "UIKit"
s.source = { :git => "https://github.com/xxxx/NeroBlu" }
s.source_files = "NeroBlu/*"
end
これで git push
します
すると、NeroBluTemp
ライブラリは、1.1.0
が最新となり
使用する側で pod install してやると
-> Installing NeroBluTemp (1.1.0)
と、見事に 1.1.0
がインストールされると思います
さて、これで前項で実装した
import UIKit
import NeroBluTemp
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
"Hello".echo()
}
}
のソースコードそのままで実行してみると
ver 1.1: Hello
コンソールにこのように1.0.0
にはなかった出力がなされました
#バージョン指定
さて、次はバージョンを 1.1.0
にはしたくない場合です
Podfile
にこのように書きなおします
use_frameworks!
pod 'NeroBluTemp', :git => 'https://github.com/xxxxx/NeroBlu', :branch => 'temporary’, :tag => ‘1.0.0’
:tag => ‘1.0.0’
を追記しました
これで、さきほどタグ付けしたコミットが、バージョン1.0.0
として扱われます
試しに pod install
を行います
-> Installing NeroBluTemp 1.0.0 (was 1.1.0)
1.1.0
だったものが 1.0.0
に差し戻されたことがログで確認できます
再度実行してみると
Hello
と、バージョン1.0.0
時の挙動でコンソール出力されたかと思います
修正ごとに面倒ですがバージョンを切っていけば、
後々に影響を受ける自分のプロジェクトは少なくなりますね
#あとがき
最初にも書きましたが、本来はリリースによってバージョン管理したいところ
自分のためだけに使うならタグの方法でいいのですけど
誰かに公開、共有するなら
Podfile
に ~>1.0
という書き方でバージョン指定ができればと思うんですが・・・
ちょっとそこまで研究できてないので
今回は割愛します
また試したら書きます・・・。