Help us understand the problem. What is going on with this article?

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

More than 5 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のページで検索してみてください。
表示された時はちょっと感動してしまいます。
まだ作ったばかりなので、これから色々とバージョンアップさせていく予定です!

  

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away