動作環境
当方の環境です。iOSに限ったお話です。
Version | |
---|---|
MacOS | 10.9.1 |
Xcode | 5.0.2 |
発端
個人でも会社でもですが、いろんなアプリ出してるとアプリ毎に同じメソッドやクラスやら定数
などを使ったりしているかと思います。
これらいろんなアプリで使っているものを1つの共用ライブラリにしてしまって、
一元管理しようと思ったのが事の発端です。
もちろん部外者には共用ライブラリへアクセス出来ない仕組みで。
(別に見られても良い方はGithubで公開するなりCocoaPodsに登録してもらって下さい)
導入のメリット
・共通部分はPodsプロジェクトに移って、プロジェクト固有のコードのみになるので見やすい。
・新規でプロジェクト作るとき楽チン。
・共用部分の更新の反映が楽チン。
・会社だと、プロジェクト毎で同じ事してんのに微妙にコード違うものを減らせる。
(会社のように複数人でいろんなプロジェクトやってる時の効果はかなり大きいと思います)
最近はこの構想を実現出来るうる環境が整ってきました。使うのは以下です。
(Xcode等、通常のiOS開発で使うものは割愛)
・[CocoaPods] (http://cocoapods.org/)
・[Bitbusket] (https://bitbucket.org/)
別にGithubでもGitlabでも問題ないですが、Bitbusketが一番楽に無料でプライベートリポジトリを使えるので。。
・[SourceTree] (http://www.sourcetreeapp.com/)
必須ではないです。お好みで。
前準備
詳細は割愛します。皆さんならなんら問題ないでしょう。
・使用する端末でCocoaPodsが使える状態にする
・Bitbusketへログインしてプライベートリポジトリを作れる状態にしておく
・gitに関して初歩的でもいいので基礎知識を身につける
手順1
Bitbusket上に共用ライブラリ用のプライベートリポジトリを作っておく。
手順2
Xcodeで共用ライブラリ用のプロジェクトを作成し、共用ライブラリを構築。
手順3
上記プロジェクトにCocaPods用のpodspecファイルを作成する。内容はこんな感じ
Pod::Spec.new do |s|
s.name = "共用ライブラリ名"
s.version = "バージョン"
s.summary = "説明"
s.license = { :type => 'MIT', :file => 'LICENSE.txt' }
s.homepage = "Bitbusketの共用ライブラリのURL"
s.author = { "SOMTD" => "自分のメールアドレス" }
s.source = { :git => "Bitbusketの共用ライブラリのgitのURL", :tag => "#{s.version}" }
s.platform = :ios, '7.0' ←対象iOS下限を指定
s.requires_arc = true ←ARCの指定
s.prefix_header_contents = '#import "xxxDefine.h"' ←インポートするものがあれば書く
s.source_files = "xxx/xxx/*.{m,h}" ←ソースファイルを指定
s.frameworks = 'QuartzCore' ←必要なフレームワークを指定
s.xcconfig = { 'HEADER_SEARCH_PATHS' => '(inherited)′,′LIBRARYSEARCHPATHS′=>′(inherited)', 'OTHER_LDFLAGS' => '$(inherited)' }
s.dependency 'AFNetworking' ← 既にPodfile使って他のライブラリ入れてるなら指定
end
以下、本家サイトを見たらだいたいわかるかと。
http://docs.cocoapods.org/specification.html
上記podspecファイルがあるディレクトリ上に上に「README.md」と「LICENSE.txt」も
作って入れておく。これないとCocoaPodsに怒られる。
手順4
上記プロジェクトをコミットし、Bitbusket上に作った共用ライブラリ用の
プライベートリポジトリへプッシュする。
その際、podspecファイルのversionで指定したversion番号をgitのtagで打っておく。
手順5
ここからは共用ライブラリを使用するプロジェクト側。
そのプロジェクトの「xxx.xcodeproj」があるディレクトリ上にPodfileを作成する。
内容はこんな感じ
platform :ios, '7.0' ←プロジェクトの対象iOS下限を指定
pod '共用ライブラリ名', :git => 'https://xxx@bitbucket.org/xxxx/xxxxxx.git' ←Bitbusketの共用ライブラリのgitのURL
手順6
ターミナルより上記ディレクトリ上まで移動してから、下記を実行。
pod install
Bitbusketのパスワードを聞かれるので答える。
手順7
CocoaPodsによりxxxx.xcworkspaceが作られるので、今後はここからプロジェクトを開くようにする。
プロジェクトのTargetのBuild Setting内、「Other Linker Flags」と「Header Search Paths」に「$(inherited)」が
入ってなかったら入れておく。
これで共用ライブラリが使えるようになっているはず。
この後、共用ライブラリで事足りる部分を移行してスッキリさせます。
共用ライブラリの更新
更新内容をBitbusket上のリポジトリへ反映してから、利用しているプロジェクトのディレクトリで下記を実行すれば反映。
pod update
共用ライブラリ使用以降の注意点
・共用ライブラリを使ってるプロジェクトから共用ライブラリを変更しない。
・会社なら、共用ライブラリを勝手にいじらせない(レビューする)、更新したら通知する等の運用ルールを決める。