要件
Unityバージョン:2022.3.16f1
Addressables:1.21.19
はじめに
Addressable Asset Systemを使用したプロジェクトをビルドしたところ
以下のエラーが発生しました。
Failed to compile player scripts UnityEditor.AddressableAssets.Settings.AddressableAssetSettings:BuildPlayerContent (UnityEditor.AddressableAssets.Build.AddressablesPlayerBuildResult&) AddressablesPlayerBuildProcessor:PrepareForPlayerbuild (UnityEditor.AddressableAssets.Settings.AddressableAssetSettings,UnityEditor.Build.BuildPlayerContext,bool) (at ./Library/PackageCache/com.unity.addressables@1.21.19/Editor/Build/AddressablesPlayerBuildProcessor.cs:101) AddressablesPlayerBuildProcessor:PrepareForBuild (UnityEditor.Build.BuildPlayerContext) (at ./Library/PackageCache/com.unity.addressables@1.21.19/Editor/Build/AddressablesPlayerBuildProcessor.cs:80) UnityEngine.UIElements.UIEventRegistration:ProcessEvent (int,intptr) UnityEng
SBP ErrorError UnityEditor.AddressableAssets.Settings.AddressableAssetSettings:BuildPlayerContent (UnityEditor.AddressableAssets.Build.AddressablesPlayerBuildResult&) AddressablesPlayerBuildProcessor:PrepareForPlayerbuild (UnityEditor.AddressableAssets.Settings.AddressableAssetSettings,UnityEditor.Build.BuildPlayerContext,bool) (at ./Library/PackageCache/com.unity.addressables@1.21.19/Editor/Build/AddressablesPlayerBuildProcessor.cs:101) AddressablesPlayerBuildProcessor:PrepareForBuild (UnityEditor.Build.BuildPlayerContext) (at ./Library/PackageCache/com.unity.addressables@1.21.19/Editor/Build/AddressablesPlayerBuildProcessor.cs:80) UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) (at /Users/bokken/build/output/unity/unity/Modules/IMGUI/GUIUtility.cs:190)
Addressable content build failure (duration : 0:00:02.769) UnityEditor.AddressableAssets.Settings.AddressableAssetSettings:BuildPlayerContent (UnityEditor.AddressableAssets.Build.AddressablesPlayerBuildResult&) AddressablesPlayerBuildProcessor:PrepareForPlayerbuild (UnityEditor.AddressableAssets.Settings.AddressableAssetSettings,UnityEditor.Build.BuildPlayerContext,bool) (at ./Library/PackageCache/com.unity.addressables@1.21.19/Editor/Build/AddressablesPlayerBuildProcessor.cs:101) AddressablesPlayerBuildProcessor:PrepareForBuild (UnityEditor.Build.BuildPlayerContext) (at ./Library/PackageCache/com.unity.addressables@1.21.19/Editor/Build/AddressablesPlayerBuildProcessor.cs:80) UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) (at /Users/bokken/build/output/unity/unity/Modules/IMGUI/GUIUtility.cs:190)
Failed to build Addressables content, content not included in Player Build. "SBP ErrorError" UnityEngine.Debug:LogError (object) AddressablesPlayerBuildProcessor:PrepareForPlayerbuild (UnityEditor.AddressableAssets.Settings.AddressableAssetSettings,UnityEditor.Build.BuildPlayerContext,bool) (at ./Library/PackageCache/com.unity.addressables@1.21.19/Editor/Build/AddressablesPlayerBuildProcessor.cs:104) AddressablesPlayerBuildProcessor:PrepareForBuild (UnityEditor.Build.BuildPlayerContext) (at ./Library/PackageCache/com.unity.addressables@1.21.19/Editor/Build/AddressablesPlayerBuildProcessor.cs:80) UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) (at /Users/bokken/build/output/unity/unity/Modules/IMGUI/GUIUtility.cs:190)
エラーの内容からAddressableのビルドエラーということはわかりますが、
具体的に何が悪さをしているのかわかりません。
("SBP ErrorError"ってなんなのよ・・・)
結果的には以下のコードが書かれていたことが原因でした。
using Palmmedia.ReportGenerator.Core.Parser.Analysis;
このコードは意図せず書かれていたため
この一行を削除したところビルドが通りました。
今回は、このコードが原因であるとわかった方法をご紹介します。
方法
方法は簡単でAddressables単体でビルドするだけです。
これを行うことでより詳細なエラーが表示されます。
ビルド画面は次の手順で開けます。
→ウインドウ
→アセット管理
→Addressables
→グループ
Addressables Groups画面が開くので
上段の「Build」メニューから以下でビルドします。
→New Build
→Default Build Script
以上でエラー内容の詳細が表示されるはずです。
今回の場合、ビルド実行後に冒頭のエラーに加えて以下のエラーが発生しました。
Assets/Scripts/GameInitializer/GameInitializer.cs(8,7): error CS0246: The type or namespace name 'Palmmedia' could not be found (are you missing a using directive or an assembly reference?)
こちらのエラーは私が作成したスクリプト「GameInitializer」の
8行目に異常があることを示しています。
8行目に書かれていたコードは
using Palmmedia.ReportGenerator.Core.Parser.Analysis;であり、
こちらが悪さをしていることがわかったわけです。
補足
気になったのでメモ
Addressables Groups画面でビルドしたファイルはどこにあるの?
以下のスクリプトを実行することでファイルの場所がわかります。
Debug.Log(Addressables.BuildPath);
私の場合はこのパスでした。(プラットフォーム設定:Android) Library/com.unity.addressables/aa/Android
「Default Build Script」でAddressablesのビルドをした後も実機確認は普通にビルドすればいいの?
良いです。特別な操作はありません。
Build Settings画面の「ビルド」、「ビルドして実行」ボタンを押した場合でも
上記「Addressables.BuildPath」のパスのフォルダが更新されることを確認しました。
デフォルト設定ではAddressablesのビルドも一緒に実行されますので
「Default Build Script」でビルドしたからといって何か作業が必要になるということはありません。
おわりに
なにかお役にたてましたら幸いです。