Posted at

AsReader用ライブラリをCocoaPodsで公開するまで

More than 3 years have passed since last update.


はじめに

株式会社アスタリスクでは、iPhone/iPod Touchで使える {barcode | RFID} スキャナー AsReaderをリリースしました。SDK自体は、自社ページで公開していますが、便利なラッパークラスを提供したかったのと、何よりPodFileを用意してターミナルから1行コマンドを実行するだけで準備できるのがうれしい。

ASRManager の CocoaPods

ASRManager の Github

AsReaderの紹介


テンプレートから作る

次のコマンドを入力します。

pod lib create MyLibrary

MyLibraryはライブラリ名を入力して下さい。

途中で色々と質問されるので回答していきます。

このコマンドを実行すると CocoaPodsが推奨するテンプレートが作成されて

自動でXcodeが起動してプロジェクトが開きます。


デモプロジェクトを作る

テンプレートで作成されたプロジェクトに、CocoaPodsで公開予定のライブラリを使ったデモアプリを作成していきます。

Exampleディレクトリに作成されます。


公開予定ファイルの設置場所

ASRManagerの場合は、Example/Pods/Classesディレクトリを作成して公開予定のファイルを置きました。

デモアプリはここに設置したファイルを使用するようにしました。


PodSpecを作成する

既に作成されている MyLibrary.podspec を修正します。

ASRManager の場合はこうなってます。


ASRManager.podspec

Pod::Spec.new do |s|

s.name = "ASRManager"
s.version = "0.1.10"
s.summary = "ASRManager make app easier to use AsReader."
s.homepage = "https://github.com/asx-co-jp/ASRManager"
s.license = 'MIT'
s.author = { "Asterisk.inc Technical Team" => "tech@asx.co.jp" }
s.source = { :git => "https://github.com/asx-co-jp/ASRManager.git", :tag => s.version.to_s }
s.platform = :ios, '7.0'
s.requires_arc = true
s.source_files = 'Example/Pods/RcpLib/*.{h,mm}'
s.ios.vendored_library = 'Example/Pods/RcpLib/libAreteUart.a'

s.resource_bundles = {
'ASRManager' => ['Pod/Assets/*.png']
}
s.frameworks = 'ExternalAccessory'
end


特に難しいところはないと思いますが。。。

ここでハマってしまったのが、公開ライブラリ自体が .a のようなライブラリを含んでいる場合です。

その場合、次のように記述する必用がありましたが、なかなか気づけませんでした。

s.ios.vendored_library = 'Example/Pods/RcpLib/libAreteUart.a'

また、Github で管理されていない場合は、リポジトリを作成してURLを入力して下さい。


Github で tag の作成

ここまで出来たら、Github に push しましょう。

このとき、podspec で入力した s.version と同じバージョン番号でタグを作成する必用があります。


確認

ターミナルから次のコマンドを実行すると、podspec のチェックをしてくれます。

エラーが出たら修正してください。

pod lib lint


最後に CocoaPods にアップロード

まずは、cocoapods に登録を依頼します。

pod trunk register EMAIL [NAME]

(これは初回だけです。)

メールが届くので確認します。

次のコマンドを実行すると正式にCocoaPodsで公開されることになります。

pod trunk push ASRManager.podspec

CocoaPodsのページで検索してみてください。

表示された時はちょっと感動してしまいます。

まだ作ったばかりなので、これから色々とバージョンアップさせていく予定です!