とあるプロジェクトで、CarthageとかCocoaPodsとかからSPMに管理移行するタスクをしていたので、その中でLicensePlistもSPMに移行することになったので備忘録。
Contents 非表示
LicensePlistのインストール
XcodeのAdd Package Dependenciesから追加、ビルドターゲットへの追加は不要。
Build Toolフローの追加

Pods管理自体は、Build Phaseでわちゃわちゃ書いて実行してましたが、SPMで入れるとBuild ToolフローにLicensePlistBuildToolを追加すればOKだそう。
ScriptCommandの自動追加

Xcode上でプロジェクトルート部分で右クリック、AddAcknowledgementsCopyScriptCommandを実行。
正常に実行されると、Build Phaseの最後に自動でスクリプトが追加されるので、これはいじらずにそのままにしておく。

license_plist.ymlの追加
プロジェクトルート直下に、license_plist.ymlを追加する。
中身は、プロジェクトがSPMオンリーなら以下でOK:
options:
xcodeprojPath: "*.xcodeproj"Podsなり、Carthageも混在している場合は、xcodeprojじゃなくてxcworkspacePathになる可能性があるので、この辺りのオプション指定はREADMEを読んで必要なものを入れておきましょう。
| オプション | デフォルト値 | 説明 |
|---|---|---|
--cartfile-path | Cartfile | Carthageの Cartfile のパスを指定 |
--mintfile-path | Mintfile | Mintの Mintfile のパスを指定 |
--nestfile-path | nestfile.yaml | nestfile.yaml のパスを指定 |
--pods-path | Pods | CocoaPodsの Pods ディレクトリのパスを指定 |
--package-path | Package.swift | SwiftPMの Package.swift のパスを指定。未指定時は Package.resolved を自動探索します。 |
--package-paths | なし | 複数の Package.swift がある場合に、スペース区切りで複数指定。 |
--package-sources-path | なし | クローン済みのSwift Packageのソースディレクトリを指定。指定するとGitHub APIの代わりにローカルファイルを使用。 |
--xcodeproj-path | "*.xcodeproj" | .xcodeproj のパスを指定して、そこから Package.resolved を読み込ませる。 |
--xcworkspace-path | "*.xcworkspace" | .xcworkspace のパスを指定して Package.resolved を読み込ませる(--xcodeproj-path より優先)。 |
--output-path | com.mono0926.LicensePlist.Output | 生成されるライセンスファイルの出力先パスを指定。 |
--github-token | なし | GitHub APIのレートリミットを回避するためのGitHubトークンを指定(環境変数 LICENSE_PLIST_GITHUB_TOKEN でも可)。 |
--config-path | license_plist.yml | 設定ファイルのパスを指定(手動追加や除外ライブラリの設定用)。 |
--prefix | com.mono0926.LicensePlist | デフォルトのファイル名に代わる、出力ファイルのプレフィックスを指定。 |
--html-path | なし | パスを指定すると、HTML形式の謝辞(Acknowledgements)ファイルを生成する。 |
--markdown-path | なし | パスを指定すると、Markdown形式の謝辞ファイルを生成。 |
--csv-path | なし | パスを指定すると、CSV形式の謝辞ファイルを生成。 |
--license-file-names | LICENSE, LICENSE.* | クローンされたSwift Packageのライセンスファイル名パターンを指定(--package-sources-path 併用時のみ有効)。 |
--force | false | 変更がない場合でも、プログラムを中断させずに強制的に再生成を実行する。 |
--add-version-numbers | false | 有効にすると、ライブラリ名にバージョン番号を付与(例: SomeLibrary (X.Y.Z))。 |
--add-sources | false | 有効にすると、ライブラリのソースURLが出力に含まれる場合にそれを追加する。 |
--suppress-opening-directory | false | ファイル生成・更新時にターミナルやFinderが自動で開く挙動を抑制する。 |
--single-page | false | 各ライセンスを別ページに分けず、1つのページにまとめてリスト化する。 |
--fail-if-missing-license | false | ライセンスが見つからないパッケージが1つでもある場合、終了コード 1 でエラーとする。 |
--silence-mode | false | ロガーの出力を完全に非表示(--verbose と同時指定時は verbose が優先)。 |
--verbose | false | 通常よりも詳細なログを出力する。 |
--no-color | false | ログ出力をモノクロにする。CI/CD環境での文字化け防止に有効です。 |
--color | false | ログ出力を常にカラーにする(--no-color と同時指定時は color が優先)。 |
--sandbox-mode | false | ネットワーク通信を行わないサンドボックスモードを有効にする。Swift Packageの解析には --package-sources-path が必須。 |
--no-sandbox-mode | false | サンドボックスモードを無効にする。 |
Settings.bundleの追加
XcodeからCommand + Nで追加してもよし、めんどくさければ公式RepoからSettings.bundleをそのまま貼り付けてもOKです。

en, jaはなくてもOK、表示する時のオプション要素ぽい。
ビルドして確認
一応Clean Build (Command + Shift + K)して、ビルドを実行。
設定アプリから対象のアプリ画面を選択して、LicenseセクションができていればOK。


