7
Help us understand the problem. What are the problem?

posted at

updated at

Xcode11以降で「設定」アプリ内にバージョン・ビルド番号・ライセンスを表記する。[LicensePlist]

Xcode11以降で設定アプリ内に、にバージョン・ビルド番号・ライセンスの表記の仕方です。

Xcode11からVersionとBuildのRunScriptが変わったらしいです。

今回使用するライブラリは、LicensePlistです。

注意事項

・必ずバージョン番号とビルド番号を作業開始前にメモしておいてください。

ライセンスの表示

ライブラリのインストール

Cocoapodsでpod 'LicensePlist'を追加して、ライブラリをアップデート(pod update)します。

Run Scriptの追加

.xcworkspaceファイルを開いて、以下の画像の手順で新しいRun Scriptを作成します。
スクリーンショット 2020-05-27 16.03.48.png

※この記事では執筆の都合上、Run Scriptとなっている名前を変更し、『License Plist(Run Script)』としていますが、変更の必要はありません。

スクリーンショット 2020-05-27 16.08.25.png

ここまでできたら、以下のスクリプトをそのままコピペします。

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

スクリーンショット 2020-05-27 16.12.54.png

ここまでで、一旦ビルド(⌘+B)します。
問題がなければ、そのままアプリのビルドが通るはずです。

Root.plistを作成

次にRoot.plistを作成します。
スクリーンショット 2020-05-27 16.17.27.png

ここまでできたら、ファイル名はRoot.plistで作成します。
スクリーンショット 2020-05-27 16.22.17.png

Root.plistを編集

作成できたら、Root.plistをSource Codeで表示します。
スクリーンショット 2020-05-27 16.27.01.png

表示できたら、以下のコードをコピペします。

<?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>PreferenceSpecifiers</key>
    <array>
        <dict>
            <key>Type</key>
            <string>PSGroupSpecifier</string>
            <key>FooterText</key>
            <string>Copyright</string> <!--コピーライトを変更したい場合はこの部分を変更してください-->
        </dict>
        <dict>
            <key>Type</key>
            <string>PSTitleValueSpecifier</string>
            <key>DefaultValue</key>
            <string>1.0.0</string>
            <key>Title</key>
            <string>Version</string>
            <key>Key</key>
            <string>sbVersion</string>
        </dict>
        <dict>
            <key>Type</key>
            <string>PSTitleValueSpecifier</string>
            <key>DefaultValue</key>
            <string>1</string>
            <key>Title</key>
            <string>Build</string>
            <key>Key</key>
            <string>sbBuild</string>
        </dict>
        <dict>
            <key>Type</key>
            <string>PSChildPaneSpecifier</string>
            <key>Title</key>
            <string>Licenses</string>
            <key>File</key>
            <string>com.mono0926.LicensePlist</string>
        </dict>
    </array>
    <key>StringsTable</key>
    <string>Root</string>
</dict>
</plist>

Setting.bundleを追加

プロジェクトファイルの直下に生成されたSettings.bandleをXcodeにドラッグ&ドロップして同じ位置に読み込みます。
スクリーンショット 2020-05-27 16.32.18.png

さっき編集したRoot.plistSetting.bundleの中に移動させます。
スクリーンショット 2020-05-27 16.34.48.png

バージョン・ビルド番号を表示

新規Run Scriptを作成

先ほどRun Scriptをを作成した時と同じ要領で、もう一つ新しいRun Scriptを作成します。

作成したら、以下のスクリプトをコピペします。

APP_VERSION="$MARKETING_VERSION"
/usr/libexec/PlistBuddy -c "Set :PreferenceSpecifiers:1:DefaultValue ${APP_VERSION}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/Settings.bundle/Root.plist"

BUILD_NUMBER="$CURRENT_PROJECT_VERSION"
/usr/libexec/PlistBuddy -c "Set :PreferenceSpecifiers:2:DefaultValue ${BUILD_NUMBER}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/Settings.bundle/Root.plist"

※今回も執筆の都合上、Run Scriptの名前を変更していますが、特にその必要はありません。

スクリーンショット 2020-05-27 16.41.38.png

info.plistを編集

info.plistを先ほどと同じSource Codeで表示して、CFBundleShortVersionStringCFBundleVersionを以下のように書き換えます。

	<key>CFBundleShortVersionString</key>
	<string>$(MARKETING_VERSION)</string>
	<key>CFBundleVersion</key>
	<string>$(CURRENT_PROJECT_VERSION)</string>

プロジェクトのVersionとBuildを確認

VersionとBuildが空になっている(ことがある)ので、空になっていたら元の値を入力してあげましょう。
スクリーンショット 2020-05-27 17.12.19.png

いざビルド

では、ビルドして設定をみてみましょう!
このように表示できました!
ezgif-1-7519e6669b0c.gif

追記 (2021/02/06)

項目名を日本語にする

q_Xcode11以降で「設定」アプリ内にバージョン・ビルド番号・ライセンスを表記する。.001.jpeg

変更方法

変更方法は簡単で、Root.plistを以下のように変更するだけです。
q_Xcode11以降で「設定」アプリ内にバージョン・ビルド番号・ライセンスを表記する。.002.jpeg

参考記事

iOS13の設定アプリにつまずいた - Qiita
Xcode11でのsetting.bundleのバージョン更新スクリプト - Qiita
[iOS][Swift] 設定画面に【アプリのバージョン番号】【CocoaPods導入したライブラリのライセンス】を表示する - Qiita
[iOS] アプリの設定画面にバージョン表記と謝辞を自動で設定する - Developers.io
CocoaPodsでLicensePlistを使う - 野生のプログラマZ

サンプルプロジェクト

最後までご覧いただきありがとうございました☺︎

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
Sign upLogin
7
Help us understand the problem. What are the problem?