CocoaPodsでライブラリを公開する
プロジェクトを作成
まずはライブラリを作るためにプロジェクトを作成します。
XcodeでCreate new projectしてもいいのですが、CocoaPodsがテンプレートを公開しており、ターミナルから作成できるので今回はターミナルから作成していきます。
プロジェクト作成
以下のコマンドをターミナルで実行するとカレントディレクトリにプロジェクトが作成されます。
途中、幾つかの質問があるので、回答していきます。
pod lib create ライブラリ名
質問1 使用する言語はどちらですか?
What language do you want to use?? [ ObjC / Swift ] > ObjC or Swift で回答
質問2 デモアプリを同梱しますか?
Would you like to include a demo application with your library? [ Yes / No ] > Yes or No で回答
質問3 テストフレームワークを使いますか?
Which testing frameworks will you use? [ Quick / None ] > Quick or None(使わない) で回答
質問4 Viewのテストを行いますか?
Would you like to do view based testing? [ Yes / No ] > Yes or No で回答
成功するとXcodeが起動し、作成したプロジェクトが開きます。
ライブラリの作成
開いたプロジェクト内ソースツリーの[Pods]
->[Development Pods]
->[ライブラリ名]
->[ライブラリ名]
->[Classes]
にReplaceMe
というファイルがあるので、削除して自作ライブラリのファイルを配置します。
GitHubで公開
ライブラリのGitHubページを作成し、リポジトリのURLをコピーしておきます。
https://github.com/ユーザ名/ライブラリ名.git
プロジェクトファイル内のライブラリ名.podspec
を編集します。
s.source: コピーしたリポジトリのURL
s.summary: 短い説明
s.description: 長い説明
# # Be sure to run `pod lib lint ライブラリ名.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 http://guides.cocoapods.org/syntax/podspec.html # Pod::Spec.new do |s| s.name = 'ライブラリ名' s.version = '0.1.0' s.summary = 'A short description of ライブラリ名.' # This description is used to generate tags and improve search results. # * Think: What does it do? Why did you write it? What is the focus? # * Try to keep it short, snappy and to the point. # * Write the description between the DESC delimiters below. # * Finally, don't worry about the indent, CocoaPods strips it! s.description = <<-DESC TODO: Add long description of the pod here. DESC s.homepage = 'https://github.com/ユーザ名/ライブラリ名' # s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2' s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'ユーザ名' => 'メールアドレス' } s.source = { :git => 'https://github.com/ユーザ名/ライブラリ名.git', :tag => s.version.to_s } # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>' s.ios.deployment_target = '8.0' s.source_files = 'ライブラリ名/Classes/**/*' # s.resource_bundles = { # 'ライブラリ名' => ['ライブラリ名/Assets/*.png'] # } # s.public_header_files = 'Pod/Classes/**/*.h' # s.frameworks = 'UIKit', 'MapKit' # s.dependency 'AFNetworking', '~> 2.3' end
Xcode上からSource Control
→ブランチ名
→Configure ライブラリ名
を開き、Remote
からGitHubのリポジトリを追加します。
Source Control
→Commit
を選択し、左下のPush to remote
へチェックを入れたらCommit Files
を押下します。
バージョンの指定
CocoaPods上でのバージョンはGitのタグに対応するので、ターミナルから公開時のバージョンをタグで付けます
git tag 1.0.0
リモートに反映します
git push 1.0.0
確認
podspecに誤りがないか確認します。
ターミナルでプロジェクトのディレクトリへ移動し、以下のコマンドを実行します。
pod lib lint
エラー場表示される場合は修正します。
(僕は説明が短すぎると言うエラーが出ました
CocoaPods trunkへ登録する
ターミナルでコマンドを実行します
pod trunk register 公開するメール '公開する名前' --description='説明'
入力したメールアドレスへ確認メールが来るので記載されているリンクを押下します。
ターミナル上で以下のコマンドを実行して名前が表示されていれば登録が完了しています。
pod trunk me
CocoaPods trunkへ登録します。
以下のコマンドを実行
pod trunk push ライブラリ名.podspec
pod try ライブラリ名
を実行してサンプルプロジェクトが開けば登録できています。