LoginSignup
2
1

LicensePlistの実装方法[Swift]

Last updated at Posted at 2024-02-14

LicensePlistとは


『license-plistというCLIツールを実行すると、そのプロジェクトで依存しているライブラリを収集して、iOS設定アプリ上に載せられる形式のplist群を生成してくれます』(開発者記事抜粋)


リリースしたアプリにオープンソースのライセンスを表示させる実装方法です。
アプリの設定画面で企業で開発したなどで見ることができますが、個人アプリでも仕様したものは記載した方が良いです。
その際に必要なXcodeでの実装方法となります。
UIKitでもSwiftUIでも実装方法は一緒です。


アプリの設定画面を開くと『Licenses』と表示されるようになってタップすると使っているライブラリを全て表示してくれます。

アプリの設定画面に表示されるようになります。


開発者の方の記事内容

LicensePlist というiOSアプリ利用ライブラリのライセンス一覧を生成するツールを作りました

Qiita記事

GitHub

使用するためにのライブラリはCocoaPodsを使っています。


ここではCocoaPodsを使用した実装方法で記載します。
CocoaPodsの使い方はこちらに記載してあります。

詳しいやり方はこちらを参考にして下さい。


CocoaPodsインストールしており、かつPodfileを作っている前提での方法です。 Podfileを作るなどの方法はこちらの記事を参考にして下さい。


Podfileに書き込む

podfile.png

『Podfile』があります。
『Podfile』をテキストエディットかターミナルのVimコマンドで開いて以下を追記して下さい。
2.5.png

pod 'LicensePlist'

コピペできます。


pod install

そしてファイルのディレクトリでコマンド使用してインストールします。


12.png
白い『xcworkspace』ファイルに書き込んでいきます。

Xcodeのメインファイルを選択する

スクリーンショット 2024-02-05 0.17.50.png

ショートカットキーの『⌘+N』でファイルの新規作成画面を開きます。


1.png

『Filter』に『Setting』と入力して下さい。

Settings

コピペできます。


5.png
『Settings Bundle』が表示されたら『Next』をクリックして下さい。


SettingsP.png
ファイル名はそのまま『Settings』で「Create」をクリックして下さい。


enP.png
最初に作られている『en.lproj』と『Root』を削除します。
削除する時は『⌘ command』を押しながらクリックすると2つ選択して「Delete」をクリックして下さい。


move.png
右の「Move to Trash」を選択して削除します。


6.png
自分の設定でデスクトップのXcodeのファイルをiCloudに自動バックアップ設定をしてると削除出来ないポップが表示されます。
iCloudの設定を外すためにデスクトップ以外にファイルを移してからDeleteすると削除できるようになります。


7.png
次にもう一度メインファイルを選択します。
『⌘+N』で新規作成ファイル画面を再度開きます。


PropertyP.png
検索ボックスで『Property』と入力して下さい。

Property

コピペできます。
『Property List』が出たら「Next」をクリックして下さい。


RootP.png
ファイル名を『Root』に変えて下さい。

Root

ファイル名を変更したら「Create」をクリックして下さい。


SourceCodeP.png
Rootができたら『Root』→『Open As』→『Source Code』の順で選択して下さい。


Root.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
 <key>StringsTable</key>
 <string>Root</string>
 <key>PreferenceSpecifiers</key>
 <array>
        <dict>
            <key>Type</key>
            <string>PSChildPaneSpecifier</string>
            <key>Title</key>
            <string>Licenses</string>
            <key>File</key>
            <string>com.mono0926.LicensePlist</string>
        </dict>
 </array>
</dict>
</plist>

最初に入力されている内容は全て削除して下さい。
そして上記の内容をコピペします。

7.png
このようになります。


SettingsP.png
Root.plistに書き込んだら、RootをSettingsファイルの中に入れます。
カーソルで動かすと段落にプラスマークが表示されるので入れて下さい。


RootPP.png
ちなみにファイル左の矢印が右を向いていて下にRootが表示されている時はファイル内に入ってないです。


Build PhasesP.png
次に『プロジェクトを選択』→『TARGETS』→『Build Phases』→『+』をクリックして下さい。


New RunP.png
『New Run Script Phase』を選択して下さい。


ScriptP.png
最初に表示されている箇所を削除して以下を入力します。

if [ $CONFIGURATION = "Debug" ]; then
    ${PODS_ROOT}/LicensePlist/license-plist --output-path $PROJECT_NAME/Settings.bundle
fi

こちらを入力して下さい。

if [ $CONFIGURATION = "Debug" ]; then
cd $SRCROOT
/usr/local/bin/license-plist --output-path $PRODUCT_NAME/Settings.bundle
fi

自分の場合リリースしたアプリに最初のコードを入力してもエラーになってしまったので、こちらの『/usr/local/bin/』のパスが入っているコードを入力してビルドしたところ上手く出来ました。


スクリーンショット 2024-02-06 23.02.58.png

pod update

そしてファイルのディレクトリでコマンド使用してアップデートします。
これで実装は終了です。

ビルドする

ビルドしてみて下さい。
何も書いてない状態だとエラー表示にはなるもののビルドは出来て設定画面にLicenseが表示されています。


参考

LicensePlist というiOSアプリ利用ライブラリのライセンス一覧を生成するツールを作りました


iOSアプリのライセンス一覧のplistを半自動生成して設定画面にキレイに表示するプログラムをGo言語で作った


LicensePlist GitHub


【Swift】LicensePlistの使い方

2
1
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
2
1