25
16

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 3 years have passed since last update.

iOSアプリのライセンス生成ツール「LicensePlist」のセットアップ&操作方法

Last updated at Posted at 2020-02-04

はじめに

ライセンス表示を手動で実装するのが手間なので、導入することにしました。

「LicensePlist」とは?

CarthageとCocoaPods、SwiftPMで管理しているライブラリのライセンス表示を自動的に生成するツールです。
設定ファイルを用意することで、任意のライブラリに対しても生成できるようです。

環境

  • OS:macOS Mojave 10.14.6
  • Swift:5.1.3
  • Xcode:11.3.1 (11C504)
  • LicensePlist:2.12.0

セットアップ

LicensePlistのインストール

Mintからインストールします。

Mintfile
+ mono0926/LicensePlist@2.12.0
$ mint bootstrap

その他の方法でインストールするには、公式ドキュメントをご参照ください。
https://github.com/mono0926/LicensePlist#installation

Settings Bundleの追加

プロジェクトに Settings.bundle がない場合、こちらの記事を参考に追加してください。
記事の内容と異なり、製品ターゲットのフォルダ内に作成していいと思います。

Settings Bundleの編集

まず、こちらの記事を参考に、デフォルトで配置されている内容を削除します。

以下のItemを追加
スクリーンショット_2020-02-04_17_08_43.jpg

Key Type Value
Type String Child Pane
Title String Licenses
Filename String com.mono0926.LicensePlist

TitleValue は任意の値でOKです。

デフォルトだと3つ目は Filename でなく Key となっているので、忘れずに変更します。
変更が漏れると設定画面にライセンスが表示されません。

操作方法

ライセンスファイルの生成

Cartfile ファイルや Pods フォルダがあるフォルダで license-plist コマンドを実行します。

$ mint run LicensePlist license-plist --output-path ${PRODUCT_NAME}/Settings.bundle

以下の3ファイルが Settings.bundle 内に生成されます。
スクリーンショット_2020-02-04_17_23_53.jpg

XcodeGenを使っている場合、プロジェクトファイルを再生成した方がいいと思います。

私はMakefileを作成し、 make generate-license を実行すると「ライセンスファイルの生成→プロジェクトファイルの生成→CocoaPods用ワークスペースの生成」を一括で行うようにしています。

Makefile
PRODUCT_NAME := CurrencyConversion

.PHONY: generate-licenses
generate-licenses:
	mint run LicensePlist license-plist --output-path ${PRODUCT_NAME}/Settings.bundle
	$(MAKE) generate-xcodeproj

.PHONY: generate-xcodeproj
generate-xcodeproj:
	mint run xcodegen xcodegen generate
	$(MAKE) install-cocoapods

.PHONY: install-cocoapods
install-cocoapods:
	bundle exec pod install

ライセンス表示までの画面遷移

ライセンスが表示されているか確認します。

[設定]アプリを起動
Simulator_Screen_Shot_-_iPhone_11_Pro_Max_-_2020-02-04_at_17_47_50.jpg

対象のアプリをタップ
Simulator_Screen_Shot_-_iPhone_11_Pro_Max_-_2020-02-04_at_17_47_55.jpg

「Licenses」をタップ
Simulator_Screen_Shot_-_iPhone_11_Pro_Max_-_2020-02-04_at_17_47_58.jpg

「Moya」をタップ
Simulator_Screen_Shot_-_iPhone_11_Pro_Max_-_2020-02-04_at_17_48_00.jpg

Moyaのライセンスが表示されます。
Simulator Screen Shot - iPhone 11 Pro Max - 2020-02-04 at 17.48.04.png

設定画面にライセンスが表示されない場合、 Root.plist の指定に誤りがある可能性があるので、公式のサンプルを参考に見直してください。
https://github.com/mono0926/LicensePlist/blob/master/Settings.bundle.zip

バージョン管理から無視する(任意)

生成されたライセンスファイルをバージョン管理の対象外にします。

Gitを使っている場合、以下を「.gitignore」に追加するのみでOKです。

.gitignore
+ com.mono0926.LicensePlist/
+ com.mono0926.LicensePlist.latest_result.txt
+ com.mono0926.LicensePlist.plist

こちらの設定は任意です。
バージョン管理するのもありだと思います。     

おまけ:ライブラリのバージョン番号を表示する

--add-version-numbers オプションを付けることで、ライブラリのバージョン番号を表示できます。
https://github.com/mono0926/LicensePlist#--add-version-numbers

おわりに

これでライセンス表示を実装する手間が省けます!
ただし、ライブラリの使用前にライセンスを確認するのは忘れないようにしましょう。

参考リンク

25
16
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
25
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?