[UE4] Androidパッケージ作成失敗時に "Run with --stacktrace option to get the stack trace..." というエラーログが出力された時にすること


はじめに

UE4でAndroidパッケージを作成すると、以下のようなエラーログが出力されてパッケージングに失敗することがあります。

UATHelper: Packaging (Android (ASTC)):   FAILURE: Build failed with an exception.
UATHelper: Packaging (Android (ASTC)):   
UATHelper: Packaging (Android (ASTC)):   * What went wrong:
UATHelper: Packaging (Android (ASTC)):   Execution failed for task ':app:linkDebugManifestForAssetPacks'.
UATHelper: Packaging (Android (ASTC)):   > A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
UATHelper: Packaging (Android (ASTC)):      > Android resource linking failed
UATHelper: Packaging (Android (ASTC)):        Y:\app\build\intermediates\asset_pack_manifests\debug\out\assetpacks\on-demand\od-00\AndroidManifest.xml:1: AAPT: error: attribute 'split' in <manifest> tag is not a valid split name.
UATHelper: Packaging (Android (ASTC)):   
UATHelper: Packaging (Android (ASTC)):   
UATHelper: Packaging (Android (ASTC)):   * Try:
UATHelper: Packaging (Android (ASTC)):   Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
UATHelper: Packaging (Android (ASTC)):   
UATHelper: Packaging (Android (ASTC)):   * Get more help at https://help.gradle.org
UATHelper: Packaging (Android (ASTC)):   
UATHelper: Packaging (Android (ASTC)):   BUILD FAILED in 42s
UATHelper: Packaging (Android (ASTC)):   120 actionable tasks: 120 executed
PackagingResults: Error: attribute 'split' in <manifest> tag is not a valid split name.
UATHelper: Packaging (Android (ASTC)):   ERROR: cmd.exe failed with args /c "D:\P4\UE4.25\Build0425p\Intermediate\Android\gradle\rungradle.bat" :app:bundleDebug
PackagingResults: Error: cmd.exe failed with args /c "D:\P4\UE4.25\Build0425p\Intermediate\Android\gradle\rungradle.bat" :app:bundleDebug
UATHelper: Packaging (Android (ASTC)): Took 57.6097415s to run UnrealBuildTool.exe, ExitCode=6
UATHelper: Packaging (Android (ASTC)): UnrealBuildTool failed. See log for more details. (D:\P4\UE4.25\Engine\Programs\AutomationTool\Saved\Logs\UBT-Build0425p-Android-Debug.txt)
UATHelper: Packaging (Android (ASTC)): AutomationTool exiting with ExitCode=6 (6)
UATHelper: Packaging (Android (ASTC)): BUILD FAILED
PackagingResults: Error: Unknown Error

上記のエラーはUE4側ではなくGradle側から出力されているということもあり、上記ログだけでは問題が解決しないケースが少なからずあります。
そんな時に助けになるのが上記ログにもバッチリ書かれている以下の部分です。

* Try:
Run with --stacktrace option to get the stack trace. 
Run with --info or --debug option to get more log output. 
Run with --scan to get full insights.

PackagingResults: 
Error: cmd.exe failed with args /c "D:\P4\UE4.25\Build0425p\Intermediate\Android\gradle\rungradle.bat" :app:bundleDebug

そう、大事な事はログにちゃんと書かれているのです。
これらのオプションを使うことでエラーに関するより詳細な情報を取得することができます。

オプションの使い方

\Intermediate\Android\gradle や \Intermediate\Android\armv7\gradle などに生成されている rungradle.bat を各オプション付きで実行するだけでOKです。

上記の例の場合ですと

PackagingResults: 
Error: cmd.exe failed with args /c "D:\P4\UE4.25\Build0425p\Intermediate\Android\gradle\rungradle.bat" :app:bundleDebug

とあるので、

"D:\P4\UE4.25\Build0425p\Intermediate\Android\gradle\rungradle.bat" :app:bundleDebug --stacktrace --debug

という感じでbatを叩けばエラーに関する詳細情報を取得することができます。なお、:app:bundleDebugの部分はエラー内容によって異なります。そのため、上記をコピペするのではなく、ちゃんとログの内容を確認した上で入力する必要があります。

かなり便利なオプションなのでエラーが出た際は是非お試しください。

おまけ

エディタなどからAndroidパッケージを作成した際は UEDeployAndroiod.csMakeApk関数内にて呼ばれる RunCommandLineProgramWithExceptionAndFiltering 関数よりrungradle.batを叩く処理が呼ばれます。
そのため、もし常にオプションを有効にしたい場合は上記処理部分に手を入れることで実現可能です。

おしまい

参考

Android Studio の Run App を --stacktrace 付きで実行する
https://qiita.com/sekitaka_1214/items/cf6d5f4ec3df6ecd8a97