【Xcode/Fastlane】バージョンとビルド番号を自動でインクリメントする方法!increment_version_number
この記事からわかること
- iOS/Xcodeの自動化ツール:Fastlaneの使い方
- 自動でビルドとバージョン番号をインクリメントする方法
- increment_build_numberアクションとincrement_version_numberの違い
- agvtool:Apple Generic Versioning Toolとは?
- Your current version () does not respect the format A or A.B or A.B.Cエラーの原因
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
環境
- Xcode:15.0.1
- watchOS:10.0
- Swift:5.9
- macOS:Sonoma 14.1
- fastlane:2.221.0
Xcode/iOSアプリでFastlaneを使用してビルド番号とバージョン番号をインクリメントする方法をまとめていきます。導入やセットアップの方法は以下の記事を参考にしてください。
ビルド番号とバージョン番号は「General」に表示されている以下の部分です。
ビルド番号をインクリメントする:increment_build_number
公式リファレンス:increment_build_number
Xcodeのビルド番号をインクリメントするにはincrement_build_number
アクションを使用します。build_app
アクションの前に記述することでビルド前に値を増加させることができます。
default_platform(:ios)
platform :ios do
desc "Create ipaファイル"
lane :build do
# ビルド番号インクリメント
increment_build_number
# 自動署名
automatic_code_signing(
use_automatic_signing: true,
team_id: XXXXXXXX # 自分のチームIDに置き換える
)
# ビルド(ipaファイル生成)
build_app(
scheme: "FastlaneTest",
output_directory: "./build", # 出力先ディレクトリ
output_name: "FastlaneTest.ipa", # 出力ファイル名
export_xcargs: "-allowProvisioningUpdates" # プロビジョニングプロファイルを自動的に更新
)
end
end
これでこのレーンを実行するたびにビルド番号が自動でインクリメントされるようになります。もしエラーが発生する場合は「Build Settings」>「Versioning」>「Versioning System」を「Apple Generic」に変更してみてください。
agvtool:Apple Generic Versioning Toolとは?
ビルド番号とバージョン番号をインクリメントする処理は内部的に「Apple Generic Versioning Tool」を使用しているようです。これはAppleが提供してるコマンドラインツールで、Xcodeプロジェクトのバージョン関連を管理する役割を持っています。
公式リファレンス:Automating Version and Build Numbers Using agvtool
そのためプロジェクトルートでagvtool
の以下コマンドを実行するとビルド番号とバージョン番号を同時にインクリメントすることができます。
$ agvtool next-version -all
引数に番号を指定すればその番号にすることも可能です。
$ agvtool new-version -all 1
バージョン番号をインクリメントする:increment_version_number
公式リファレンス:increment_version_number
Xcodeのバージョン番号をインクリメントするにはincrement_version_number
アクションを使用します。build_app
アクションの前に記述することでビルド前に値を増加させることができます。
default_platform(:ios)
platform :ios do
desc "Create ipaファイル"
lane :build do
# バージョン番号インクリメント
increment_version_number
# 自動署名
automatic_code_signing(
use_automatic_signing: true,
team_id: XXXXXXXX # 自分のチームIDに置き換える
)
# ビルド(ipaファイル生成)
build_app(
scheme: "FastlaneTest",
output_directory: "./build", # 出力先ディレクトリ
output_name: "FastlaneTest.ipa", # 出力ファイル名
export_xcargs: "-allowProvisioningUpdates" # プロビジョニングプロファイルを自動的に更新
)
end
end
Your current version () does not respect the format A or A.B or A.B.C
バージョン番号をインクリメントしようとすると以下のエラーが発生してしまいました。翻訳すると現在のバージョン () は形式 A、A.B、または A.B.C を尊重していません。
になるのですが、正しい形式になっていても発生しています。
Your current version () does not respect the format A or A.B or A.B.C
「Build Settings」>「Versioning」>「Versioning System」を「Apple Generic」に変更してみてもエラーは消えずagvtool
のコマンドを使用してバージョン番号をあげようとしてもうまく動作しませんでした。agvtoolがうまく動作していないのかも?
$ agvtool new-version -all 1
ちなみに上記の結果は以下でした。
Setting version of project FastlaneTest to:
1.
Also setting CFBundleVersion key (assuming it exists)
Updating CFBundleVersion in Info.plist(s)...
Cannot find "FastlaneTest.xcodeproj/../YES"
現状解決することができなかったので一旦見送っていますが、解決次第追記したいと思います。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。