Xcode11以降で設定アプリ内に、にバージョン・ビルド番号・ライセンスの表記の仕方です。
Xcode11からVersionとBuildのRunScriptが変わったらしいです。
今回使用するライブラリは、LicensePlistです。
注意事項
・必ずバージョン番号とビルド番号を作業開始前にメモしておいてください。
ライセンスの表示
ライブラリのインストール
Cocoapodsでpod 'LicensePlist'
を追加して、ライブラリをアップデート(pod update
)します。
Run Scriptの追加
.xcworkspace
ファイルを開いて、以下の画像の手順で新しいRun Scriptを作成します。
※この記事では執筆の都合上、Run Scriptとなっている名前を変更し、『License Plist(Run Script)』としていますが、変更の必要はありません。
ここまでできたら、以下のスクリプトをそのままコピペします。
if [ $CONFIGURATION = "Debug" ]; then
${PODS_ROOT}/LicensePlist/license-plist --output-path $PRODUCT_NAME/Settings.bundle --github-token YOUR_GITHUB_TOKEN
fi
ここまでで、一旦ビルド(⌘+B
)します。
問題がなければ、そのままアプリのビルドが通るはずです。
Root.plist
を作成
ここまでできたら、ファイル名はRoot.plist
で作成します。
Root.plist
を編集
作成できたら、Root.plist
をSource Codeで表示します。
表示できたら、以下のコードをコピペします。
<?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にドラッグ&ドロップして同じ位置に読み込みます。
さっき編集したRoot.plist
はSetting.bundle
の中に移動させます。
バージョン・ビルド番号を表示
新規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の名前を変更していますが、特にその必要はありません。
info.plist
を編集
info.plist
を先ほどと同じSource Codeで表示して、CFBundleShortVersionString
とCFBundleVersion
を以下のように書き換えます。
<key>CFBundleShortVersionString</key>
<string>$(MARKETING_VERSION)</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
プロジェクトのVersionとBuildを確認
VersionとBuildが空になっている(ことがある)ので、空になっていたら元の値を入力してあげましょう。
いざビルド
では、ビルドして設定をみてみましょう!
このように表示できました!
追記 (2021/02/06)
項目名を日本語にする
変更方法
変更方法は簡単で、Root.plist
を以下のように変更するだけです。
参考記事
iOS13の設定アプリにつまずいた - Qiita
Xcode11でのsetting.bundleのバージョン更新スクリプト - Qiita
[iOS][Swift] 設定画面に【アプリのバージョン番号】【CocoaPods導入したライブラリのライセンス】を表示する - Qiita
[iOS] アプリの設定画面にバージョン表記と謝辞を自動で設定する - Developers.io
CocoaPodsでLicensePlistを使う - 野生のプログラマZ
サンプルプロジェクト
最後までご覧いただきありがとうございました☺︎