掲題の2つのバージョン番号について、UnrealBuildToolのソースなどで確認したところ、デフォルトでは以下のような挙動、というところまでは把握できました:
- Android
→ ProjectSettingsで設定した値が使用される
- iOS
→ 前回の番号(StageBuildのキャッシュから取得する?)をインクリメントした値が使用される
さらに、ビルド時のコマンドラインパラメータにbuildmachineを指定することで、両Platformとも、Engineビルド時のChangelist番号を使用することができる様でした。(Androidは別途Engine.Iniでの設定が必要)
ただし、Engineビルド時の情報なので、アプリビルド時に必ずしも値が更新されるわけではないのでは?という疑問がわきました。また、このバージョン番号がどのようなプロセスで設定されるのかも不明瞭です。
以上を踏まえて、以下の二点をご確認いただけると助かります:
- buildmachineを有効にしてビルドする場合の挙動に関して、詳しい説明(もしくはチュートリアル・サンプルなど)は存在しますでしょうか?
- buildmachine設定を使用しなくても、iOSの場合はデフォルトでも自動でインクリメントされるので目的は達せています。あとは、Androidもビルド前にEngine.iniの値を読み取って、+1した値にINIを書き換えるようにすればよいように思います。このような対応をおこなった場合、特に懸念されることや、認識違いはありますでしょうか?
お手数をおかけしますが、宜しくお願いします。
追記です:
buildmachineオプションはうまく動作させる方法がわからなかったので、ひとまず、iOSはUE4のデフォルト挙動を利用し、Androidは別途カウンタ保存用のファイルを用意し、ビルド開始前にインクリメントした値をDefaultEngine.iniに書き込むことで目的の挙動を達成できました。
(なお、iOSのBundleVersionのカウンタ保存用に.PackageVersionCounterファイルが生成され、そこに記録される、ということも把握できました)
もし他に良い方法があれば教えていただけると助かります。
お世話になっております。
回答が遅くなり大変申し訳ありません。
まず弊社タイトルのAndroid版では /Script/AndroidRuntimeSettings.AndroidRuntimeSettings
における bUseChangeListAsStoreVersion
と IsBuildMachine
を有効にすることでStoreVersionの設定を行っています。すでに確認済みかもしれませんが、 UEDeployAndroid.cs の GetStoreVersion にてその処理が実装されています。
そして、BuildMachineがうまく動作しなかった理由に関しましては、おそらくですがバージョン情報を格納している Engine\Build\Build.version は以下の方法でしか更新されないことが原因かと思います。
- 手動編集
- コマンドレット「UpdateLocalVersion」
- UnrealGameSync
参考:Versioning of Assets and Packages in Unreal Engine | Unreal Engine 5.1 Documentation
Build.version内に格納されているバージョン情報に関しましては、コマンドレット「UpdateLocalVersion」における各処理をご確認頂くのが良いかと思います。具体的には、Engine\Source\Programs\AutomationTool\Scripts\UpdateLocalVersion.Automation.cs における処理です。
上記を踏まえて質問1,2への回答1,2は以下の通りです。
回答1:大変申し訳ないのですが用意されていません。
回答2:おそらく問題ないかと思います。
すでにご対応済みの対応で問題ないかとは思いますが、もしBuildMachineを使用する形に切り替えることになりその過程でご不明な点などが発生した場合はご質問頂けますと幸いです。
よろしくお願いいたします。
お世話になっております。
回答が遅くなり大変申し訳ありません。
まず弊社タイトルのAndroid版では /Script/AndroidRuntimeSettings.AndroidRuntimeSettings
における bUseChangeListAsStoreVersion
と IsBuildMachine
を有効にすることでStoreVersionの設定を行っています。すでに確認済みかもしれませんが、 UEDeployAndroid.cs の GetStoreVersion にてその処理が実装されています。
そして、BuildMachineがうまく動作しなかった理由に関しましては、おそらくですがバージョン情報を格納している Engine\Build\Build.version は以下の方法でしか更新されないことが原因かと思います。
- 手動編集
- コマンドレット「UpdateLocalVersion」
- UnrealGameSync
参考:Versioning of Assets and Packages in Unreal Engine | Unreal Engine 5.1 Documentation
Build.version内に格納されているバージョン情報に関しましては、コマンドレット「UpdateLocalVersion」における各処理をご確認頂くのが良いかと思います。具体的には、Engine\Source\Programs\AutomationTool\Scripts\UpdateLocalVersion.Automation.cs における処理です。
上記を踏まえて質問1,2への回答1,2は以下の通りです。
回答1:大変申し訳ないのですが用意されていません。
回答2:おそらく問題ないかと思います。
すでにご対応済みの対応で問題ないかとは思いますが、もしBuildMachineを使用する形に切り替えることになりその過程でご不明な点などが発生した場合はご質問頂けますと幸いです。
よろしくお願いいたします。
回答有り難うございます!
Changelistの値は別途更新する必要があるということですね。
参考になるリンクもお知らせいただきありがとうございます。
ひとまず現在独自にバージョン情報を用意して運用できるようになっているので、そちらで管理しようとおもいます。