CocoaPods 自作ライブラリを公開する - shirajira/family-account-ios GitHub Wiki

CocoaPods 自作ライブラリを公開する

CocoaPods の概要やツールのインストール方法はこちらを参照。
CocoaPods インストール方法

やりたいこと

自作のライブラリを CocoaPods に公開したい。

操作手順

0. 準備するもの

  • GitHub などのアカウント
  • Xcode
  • CocoaPods
  • CocoaPods のアカウント登録に使うメールアドレス

1. パッケージを作成

Xcode を起動し,メニューバー -> File -> New -> Swift Package... を選択する。

  • Save as: 公開するライブラリの名称
  • Tags: 任意
  • Where: 保存先ディレクトリ

Source Control では Create Git Repository on my Mac にチェックを入れるか,または手動で git init するかはお好みで。
筆者はすでに git init 済みのディレクトリに保存したので Source Control はグレーアウトしてました。

2. ライブラリを実装

ライブラリを実装していきましょう。
どこに何を書くかは以下を参照。

Package.swift

メタデータを記載するファイル。

Sources/

ライブラリのコードを格納するディレクトリ。
外部からアクセス可能なクラスや関数には openpublic 修飾子を忘れずに。

Tests/

ライブラリのテストコードを格納するディレクトリ。

テストの書き方などについては以下を参照してください。
Xcode テスト環境を設定する

3. Podspec ファイルを作成

ライブラリの実装が終わったら,プロジェクトのルートに移動して以下コマンドを実行する。

$ cd your_project/
$ pod spec create YourLibraryName

YourLibraryName は自作ライブラリの名前に置き換えてください。

こんなメッセージが出れば成功。

Specification created at YourLibraryName.podspec

4. Podspec ファイルをカスタマイズ

プロジェクトのルートに podspec ファイルが生成されているはずである。
このファイルを開き,ファイル内のコメントに従ってライブラリの情報を記載していく。

文法に関する公式ドキュメント:
CocoaPods Guides - Podspec Syntax Reference

記載した内容が正しいかどうかは,以下コマンドで確認できる。
ちょっとだけ時間がかかるようなので少し待つ。

$ pod lib lint

5. ユーザ登録(初回のみ)

以下コマンドで CocoaPods にユーザ登録する。
登録したメールアドレス宛に本人確認用の URL が届くので,アクセスして Confirm してください。

$ pod trunk register [email protected] yourname

メールアドレスとユーザ名はご自身のものに置き換えてください。

登録後,自分の登録情報は以下コマンドで確認できる。

$ pod trunk me

6. 公開する

podspec ファイルに記載した spec.version と同じタグを main (master) ブランチに push しておいてください。
形式は 1.0.0 などの三桁区切りである必要がある。

その後,以下コマンドで登録。

$ pod trunk push YourLibraryName.podspec

登録が完了すると,CocoaPods の URL が発行される。

CocoaPods Web ページから検索できるようになるには数日ほどかかるっぽい。

https://cocoapods.org/pods/YourLibraryName

登録したライブラリは以下コマンドで削除することもできる。

$ pod trunk delete YourLibraryName 1.0.0

削除するバージョンは自身のものに置き換えてください。

トラブルシューティング

筆者環境では GitHub の認証情報を .netrc に記載していたが,ユーザ登録の際にエラーが発生。

Netrc::Error - Permission bits for '/Users/username/.netrc' should be 0600, but are 644

エラーメッセージによると .netrc は 644 じゃなくて 600 にしてねってことなので,以下コマンドで変更した。

$ chmod 600 /Users/username/.netrc

参考:
Error on pod trunk push · Issue #7555 · CocoaPods/CocoaPods


参考:
CocoaPodsでiOSのライブラリーを作ってみる - Qiita
Swiftで自作ライブラリを公開する手順 - Qiita