33
33

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【iOS】非公開の共用ライブラリ構築手順

Last updated at Posted at 2013-11-08

動作環境

当方の環境です。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

共用ライブラリ使用以降の注意点

・共用ライブラリを使ってるプロジェクトから共用ライブラリを変更しない。
・会社なら、共用ライブラリを勝手にいじらせない(レビューする)、更新したら通知する等の運用ルールを決める。

33
33
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
33

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?