OculusQuestの開発環境で「UnityEditor.BuildPlayerWindow+BuildMethodException: 2 errors」エラー

UnityEditor.BuildPlayerWindow+BuildMethodException: 2 errors
  at UnityEditor.BuildPlayerWindow+DefaultBuildMethods.BuildPlayer (UnityEditor.BuildPlayerOptions options) [0x00234] in C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindowBuildMethods.cs:190 
  at UnityEditor.BuildPlayerWindow.CallBuildMethods (System.Boolean askForBuildLocation, UnityEditor.BuildOptions defaultBuildOptions) [0x0007f] in C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindowBuildMethods.cs:96 
UnityEditor.EditorApplication:Internal_CallGlobalEventHandler()

というエラーが出るようになって、Build And Runができなくなった。Buildはできるしapkは作れる。
UniVRMが入っているプロジェクトだと出るような気がするが、以前はそれでも問題なくBuildAndRunできたし、ソースは全く変更していないのに出るようになったのでなにかの環境の問題……かと思ったら違った!



原因まとめ。
その1。
UniVRMがアップデートされて、OculusQuestにBuildAndRunするとき「VRM_STOP_ASSETPOSTPROCESSOR」定義を必須になったらしい。
過去はそれを行っていなくてもBuildAndRunできていたが動かなくなったようだ。
さらに言うと、本来は VRM_STOP_ASSETPOSTPROCESSOR が定義されていれば問題ないはずだが、定義していてもビルドに失敗することがある。その場合、VRM_STOP_ASSETPOSTPROCESSORによって生成が制限されるクラスを定義している以下ファイルを削除する。
"\Assets\VRM\UniVRM\Editor\Format\vrmAssetPostprocessor.cs"。
https://vrm.dev/univrm/univrm_install/ → AssetPostProcessorを止める。
その2。
旧バージョンのUniVRMを使ったシーン・VRMがある、またはそれを開いているとBuildAndRunでエラーになる。
File>NewSceneで空のシーンを開いたあと、一度アセットからシーン・VRMを削除して入れ直すとビルドできた。
その3。
上の問題と直接関係ないが、環境をまるごと入れ直そうとしてUnity2018.Xを入れると、以下エラーでビルドできなくなっていた……。Unity2019.Xなら行けた。

FormatException: Input string was not in a correct format.
(略)
System.Convert.ToInt32 (System.String value) (at <d7ac571ca2d04b2f981d0d886fa067cf>:0)
UnityEditor.Android.AndroidDeviceInfo.get_SDKVersion () (at <df7ba4d130594d168eec372b930522d4>:0)
(略)

以下愚痴。
環境の問題だとばかり思っており、Windows復元チェックポイントへ戻しても、AndroidSDKを消して入れ直しても、unityを完全に消してから再インストールしても駄目なのでもうWindowsドライブを工場出荷状態に戻してから再インストールした。



windowsを再インストールして、前にやった手順通りに以前と同じバージョンのunityをインストールしても上のエラーが出る。OculusQuestを工場出荷状態に戻しても出る。
それとは別に、前にunityインストールした手順でインストールしても別のエラーが出る。
上と違って「AndroidDeviceInfo.get_SDKVersion」でConvert.ToInt32を実行したときにFormatException: Input string was not in a correct format.エラーが出ていることが原因のようだ。(再インストール前は、上記エラーがいきなり出ていたし、エラーが発生するタイミングが今度はcheking compatible android deviceの段階で出るようになった。)
それについてはunity2019に変えることで治ったが、結局上のエラーは出る。
結局環境が問題じゃないのかよおお……。

最終的に原因はUniVRMにあることがわかった。
数日前のUniVRMがアップデートで、OculusQuestにBuildAndRunするとき、「VRM_STOP_ASSETPOSTPROCESSOR」定義を必須になったようだ。
https://github.com/vrm-c/UniVRM/releases
AssetPostProcessorを止めるために「VRM_STOP_ASSETPOSTPROCESSOR」定義が必要とのこと。
https://vrm.dev/univrm/univrm_install/
でもunivrm更新した覚えないんですけどねえーー。
エラーメッセージからも全くそれが予想できなかった。
あと、別のにUnity2018.Xではビルドできなくなっているという問題もあってそれにもひっかかった。