見出し画像

UnityでHoloLens2アプリをデプロイする手順とよくあるトラブルのまとめ

この記事はUnity 2021.3.0f1とMRTK 2.7.3を使ったHoloLens2アプリ開発の実機デプロイまでの記録である。- 2022/4/12
NEW! Unity2021.3.7fとMRTK2.8.2、Mixed Reality OpenXR Plugin1.4.3(1.4.4はNG)で確認 - 2022/8/9

※投げ銭スタイルで全文公開

🛠️今回の開発環境


基本的に公式の推奨以上のバージョンであれば問題ない。

と言えないのが現状。

⚠️重要⚠️Unity バージョンとパッケージの既知の問題 - Mixed Reality | Microsoft Docs

HoloLens2アプリ開発でなんかあったらUnityのバージョンを疑う。
現状公式が把握している問題点がまとめられたページはこちら。
@saka_itさん情報サンクス!)

2022/06/17現在 Unity 2020.3.35f1が鉄板

⚠️ハマりポイント⚠️

「Unityのバージョン」←マジでこれ
    ↑実機でFPSが出ないときはこれを疑え
  ↑
でもFPSが出ないことがある

あるバージョンのUnityや、特定のMRTKの組み合わせの場合、HoloLens2の実機デプロイがNGなパターンがある。
(症状としては、デプロイでエラーとかCubeだけなのにめちゃくちゃ重いFPSが全然でないとか)
https://issuetracker.unity3d.com/issues/app-doesnt-launch-on-hl2-uwp-after-update-to-2020-dot-3-32f1
一例)
Unity 2020.3.28f1⭕  2020.3.32f1❌ 2020.3.33f1⭕
Unity 2021.2.17f1❌  2021.3.0f1⭕
Unity 2022.1.0b15❌ 2022.1.0b16⭕
※NGでも大丈夫だったという話も。Unityのバージョン的にはOKでも他との組み合わせでダメとなるパターンもあり得る。

com.microsoft.mixedreality.openxr-1.4.4 でFPSが出ない症状に遭遇
(追記)2022年8月9日



📑手順 Unityで新規プロジェクト作成からHoloLens2デプロイまで


事前準備、開発環境構築(いくつかの前提については省略)
・Visual Studio Installerから必要コンポーネントなどを入れておく
必要なものは公式や参考資料のリンク先のページを参照

細かい手順のスクリーンショットを確認して進めたい方は、参考資料のリンク先がおすすめ。(バージョンが異なる場合や不要な手順があるけど)

HoloLens2デプロイまでに必須ではない手順は省略
(Unityプロジェクトに対して行う一般的な設定、Package nameなど)

1. (Unity) Unity 2021.3.0f1で3D(URP)を選んでプロジェクト作成

2. (MRFT) OpenXR PluginとMRTKを入れる

3. (Unity) MRTK Project Configureの指示通りに設定を行う

基本的に設定はPCとUWPのタブの両方。
⚠️などのマークが出たら押して直す。

4. (Unity) MRTKのサンプルをプロジェクトに追加する

5. (Unity) HandInteractionExamples を開く

・自動的に開くTMP ImporterウインドウからImport TMP Essentialsを押してTextMeshProをインポート(初回のみ)
・ピンクを修正。MRTKのシェーダーをURPに変換
MRTK.Toolsで追加されたツールバーのUpgrade MRTK Standard Shader for Universal Render Pipline

6. (Unity) Burst AOT SettingsをOFF

手順詳細のスクショは後述の「UnityでBuildしたらBurstAotCompilerでエラー」参照

7. (Unity) VisualStudioプロジェクトをビルド

・シーンをAdd
・Architecture = ARM 64-bit
・Minimum Platform Version = 10.0.18362.0

8. (Visual Studio) HoloLens2へDeploy

右端の三角アイコンが「デバッグなしで開始」


🔎トラブルシュート


基本

エラーメッセージをよく読む・全部ググる

英語がしんどかったらScreenTranslatorで。OCRした文字を翻訳だけではなくコピーもできる。
https://note.com/yuujii/n/n8be835c9062e#58892ae2-e251-465d-98e3-5ec3ce924f94

ログを確認する

Development Buildにすると出力されるログファイルなどでエラーを確認

ビルドのエラーは大体Visual Studio Installerから足りないコンポーネントを追加すると解決する

環境構築関係

MixedRealityFeatureToolのRefreshing catalog…が終わらない

Windowsのユーザー名がマルチバイトだとダメ。ネットワーク環境など

Mixed Reality Feature ToolでDiscover Featuresを押すとクラッシュする

UnityのモジュールにWindows Build Support(IL2CPP)がない。追加する。

表示がピンクになる

URPでプロジェクトを作成した場合に必要な手順。

Upgrade MRTK Standard Shader for Universal Render Piplineを実行。
MRTKのStandard Assetsなどに含まれるMRTKのマテリアルのシェーダーがURPのものに変換される。

それでもピンクが残るようなら、Hierarchyビューでシーンを選択するか、Projectビューで当該マテリアルを選択してConvert Selected Build-in Materials to URPを実行。
これでMRTKのサンプルが参照しているUnity標準のマテリアルがURPのものに変換される。

もし自分で既存プロジェクトからのアセットを移行して自作シェーダー、マテリアルを追加している場合は自動変換対象外なので、各自URP対応を行う。

MRTK.ToolsのBuild WindowsでリモートのHoloLens2に接続できない
InvalidOperationException: Insecure connection not allowed

Microsoft Mixed Reality ToolkitのBuild WindowでTest Connectionボタンを押したとき

Edit -> Project Settings -> Player -> Other Settings -> Configuration -> Allow downloads over HTTP

MRTK.ToolsのBuild WindowのDeploy OptionsからInstall AppX実行時にエラーが出る

パッケージが見つかりました: C:\Unity\Projects\Holo21.3_MRTK2.7.3\Builds\WSAPlayer\AppPackages\Holo21.3_MRTK2.7.3\Holo21.3_MRTK2.7.3_1.0.1.0_ARM64_Master_Test\Holo21.3_MRTK2.7.3_1.0.1.0_ARM64_Master.msix
                                                                                                                        アプリをインストールしています...                                                                                       依存関係パッケージが見つかりました:                                                                                     C:\Unity\Projects\Holo21.3_MRTK2.7.3\Builds\WSAPlayer\AppPackages\Holo21.3_MRTK2.7.3\Holo21.3_MRTK2.7.3_1.0.1.0_ARM64_Master_Test\Dependencies\x86\Microsoft.VCLibs.x86.14.00.appx                                                              C:\Unity\Projects\Holo21.3_MRTK2.7.3\Builds\WSAPlayer\AppPackages\Holo21.3_MRTK2.7.3\Holo21.3_MRTK2.7.3_1.0.1.0_ARM64_Master_Test\Dependencies\x64\Microsoft.VCLibs.x64.14.00.appx
Add-AppxPackage : 次の HRESULT で展開に失敗しました: 0x80073D10, パッケージが対象としているプロセッサ
アーキテクチャが正しくないため、展開操作に失敗しました。

パッケージ com.unity.holo21.3MRTK2.7.3 にはアーキテクチャ ARM64
が必要であるものの、このコンピューターのアーキテクチャが x64 であるため、このパッケージをインストールできません。

注: 詳細については、イベント ログで [ActivityId] 5bf37d64-4e2f-0014-0e32-f55b2f4ed801 を検索するか、コマンド ラインの
Get-AppPackageLog-ActivityId 5bf37d64-4e2f-0014-0e32-f55b2f4ed801 を使用してください

発生場所 C:\Unity\Projects\Holo21.3_MRTK2.7.3\Builds\WSAPlayer\AppPackages\Holo21.3_MRTK2.7.3\Holo21.3_MRTK2.7.3_1.0.1.
0_ARM64_Master_Test\Add-AppDevPackage.ps1:522 文字:13
+             Add-AppxPackage -Path $DeveloperPackagePath.FullName -Dep ...
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (C:\Unity\Projec...M64_Master.msix:String) [Add-AppxPackage], Exception
    + FullyQualifiedErrorId : DeploymentError,Microsoft.Windows.Appx.PackageManager.Commands.AddAppxPackageCommand

エラー:  アプリをインストールできませんでした。
続行するには、Enter キーを押してください...:

USB接続したHoloLens2にLocal(127.0.0.1)でアクセスできない状態。
→ HoloLens2側で開発者モードとデバイスポータルをONにする。
→ Visual Studio Installerから「USB デバイスの接続」(USB Device Connectivity、旧Windows IP Over USB)を入れる。
または既に別のものに割り当てられている。ブラウザに127.0.0.1を入れてHoloLens2のデバイスポータルの画面が出るか確認。
別のローカル鯖のものが出た場合はそれを止めるか、なにも出ない場合はUSBケーブルを変える。
いっそRemoteでつなぐ。

MRTKインポート後

Visual StudioやUnityのプロジェクトでUnityEngineなどの参照がないエラー

ソリューションファイルが壊れている。Regenerate project filesを押す。

それでも解決しない場合、Unityプロジェクトをいったん閉じてTempやLibraryフォルダを削除して再度開きなおす。それでもダメならそもそもいろいろ壊れているので最初からやり直すかPC買いなおす。

ビルド時などでMRTKのPrefabがSaving Prefab to immutable folder is not allowed: エラー

Saving Prefab to immutable folder is not allowed: 
Packages/com.microsoft.mixedreality.toolkit.foundation/SDK/StandardAssets/Prefabs/SceneDescriptionPanelRev.prefab

UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

MRTK 2.7.2で発生。2.7.3を使うか、MRFTからUPMで入れるのではなくunitypackageで入れて、当該をdefaultで初期化する。

MRTKを入れた直後のerror CS0165: Use of unassigned local variable

Assets\MRTK\SDK\Features\UX\Scripts\BoundsControl\BoundsControl.cs(939,54): error CS0165: Use of unassigned local variable 'colliderByTransform'
Assets\MRTK\SDK\Features\UX\Scripts\BoundsControl\BoundsControl.cs(947,54): error CS0165: Use of unassigned local variable 'rendererBoundsByTransform'
Assets\MRTK\SDK\Features\UX\Scripts\BoundingBox\BoundingBox.cs(1906,54): error CS0165: Use of unassigned local variable 'colliderByTransform'
Assets\MRTK\SDK\Features\UX\Scripts\BoundingBox\BoundingBox.cs(1914,54): error CS0165: Use of unassigned local variable 'rendererBoundsByTransform'

MRTK 2.7.2で再現。2.7.3を使うか、MRFTからUPMで入れるのではなくunitypackageで入れて、当該変数をdefaultで初期化する。
https://github.com/microsoft/MixedRealityToolkit-Unity/issues/7924

MRTKを入れた直後の error CS0269: Use of unassigned out parameter 'guid'

Assets\MRTK\Tools\MSBuild\Scripts\Utilities.cs(132,17): error CS0269: Use of unassigned out parameter 'guid'

MRTK 2.7.2で再現。2.7.3を使うか、MRFTからUPMで入れるのではなくunitypackageで入れて、当該メソッドを2.7.3の内容に書き換える。
https://github.com/microsoft/MSBuildForUnity/blob/70947bb02bb034d80c8380a0e7dc9909cc731c43/Source/MSBuildTools.Unity/Packages/com.microsoft.msbuildforunity/Editor/ProjectGenerator/Scripts/Utilities.cs#L162-L195

Audio Spatializer Pluginがない This application is not using the recommended Audio Spatializer Plugin. Go to Project Settings > Audio > Spatializer Plugin and select one of the following: MS HRTF Spatializer, Microsoft Spatializer.

MRFTからSpatial Audio > Microsoft Spatializerを入れる。

UnityEditorで実行するとカメラが荒ぶって勝手に回転する

ゲームパッドを接続していると発生。また3Dconnexionのコンパニオンアプリが起動していても発生する。
状況としては、シーンのMixedRealityToolkit > Input > Input Data ProvidersのInput Simulation Serviceで定義されているInputManagerの定義(Horizontal, Vertical, UpDown, AXIS_4, AXIS_5)に値が入ってきてしまっている。
対策としては、Project SettingsのInputManagerで、当該定義のJoy NumをGet Motion from all Joysticksから、Joystick 16などへ向き先を変更する。(または明示的に使いたいもの変更する)

Visual Studio書き出し時

UnityでBuildしたらBurstAotCompilerでエラー

Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly: 'Windows.Foundation, Version=255.255.255.255, Culture=neutral, PublicKeyToken=null'
   �ꏊ Mono.Cecil.BaseAssemblyResolver.Resolve(AssemblyNameReference name, ReaderParameters parameters)
   �ꏊ zzzUnity.Burst.CodeGen.AssemblyResolver.Resolve(AssemblyNameReference name)
   �ꏊ Burst.Compiler.IL.AssemblyLoader.Resolve(AssemblyNameReference name)
   �ꏊ Mono.Cecil.MetadataResolver.Resolve(TypeReference type)
   �ꏊ Mono.Cecil.TypeReference.Resolve()
   �ꏊ Burst.Bcl.BclApp.CollectGenericTypeInstances(TypeReference type, List`1 types, HashSet`1 visited)
   �ꏊ Burst.Bcl.BclApp.CollectGenericTypeInstances(AssemblyDefinition assembly, List`1 types, HashSet`1 visited)
   �ꏊ Burst.Bcl.BclApp.FindExecuteMethods(List`1 rootAssemblyPaths, Boolean includeRootAssemblyReferences)
BuildFailedException: Burst compiler (1.7.0) failed running

(Unity)Project Settings > Burst AOT Settings
Enable Burst Compilation [OFF]
Enable Optimisations [OFF]

Burstコンパイラに対応していないものがあるため。

UnityException: Failed to run reference rewriter with command

UnityException: Failed to run reference rewriter with command "--target=Temp\StagingArea\Data\Managed\App.Modules.dll" "--target=Temp\StagingArea\Data\Managed\Unity.VisualScripting.State.dll" "--target=Temp\StagingArea\Data\Managed\Unity.XR.ARFoundation.dll" "--target=Temp\StagingArea\Data\Managed\Unity.XR.ARSubsystems.dll" "--target=Temp\StagingArea\Data\Managed\Unity.XR.Management.dll" "--target=Temp\StagingArea\Data\Managed\Unity.XR.OpenXR.dll" "--target=Temp\StagingArea\Data\Managed\Unity.XR.OpenXR.Features.ConformanceAutomation.dll" "--target=Temp\StagingArea\Data\Managed\Unity.XR.OpenXR.Features.MockRuntime.dll" "--target=Temp\StagingArea\Data\Managed\Unity.XR.OpenXR.Features.OculusQuestSupport.dll" "--target=Temp\StagingArea\Data\Managed\Unity.XR.OpenXR.Features.RuntimeDebugger.dll" "--target=Temp\StagingArea\Data\Managed\Unity.VisualScripting.Flow.dll" "--target=Temp\StagingArea\Data\Managed\UnityEngine.SpatialTracking.dll" "--target=Temp\StagingArea\Data\Managed\Unity.VisualScripting.Core.dll" "--target=Temp\StagingArea\Data\Managed\Unity.Timeline.dll" "--target=Temp\StagingArea\Data\Managed\Microsoft.MixedReality.Toolkit.Providers.WindowsSceneUnderstanding.dll" "--target=Temp\StagingArea\Data\Managed\Microsoft.MixedReality.Toolkit.Providers.WindowsVoiceInput.dll" "--target=Temp\StagingArea\Data\Managed\Microsoft.MixedReality.Toolkit.Providers.XRSDK.dll" "--target=Temp\StagingArea\Data\Managed\Microsoft.MixedReality.Toolkit.Providers.XRSDK.WindowsMixedReality.dll" "--target=Temp\StagingArea\Data\Managed\Microsoft.MixedReality.Toolkit.SDK.dll" "--target=Temp\StagingArea\Data\Managed\Microsoft.MixedReality.Toolkit.SDK.Experimental.Interactive.dll" "--target=Temp\StagingArea\Data\Managed\Microsoft.MixedReality.Toolkit.Services.CameraSystem.dll" "--target=Temp\StagingArea\Data\Managed\Microsoft.MixedReality.Toolkit.Services.DiagnosticsSystem.dll" "--target=Temp\StagingArea\Data\Managed\Microsoft.MixedReality.Toolkit.Services.InputAnimation.dll" "--target=Temp\StagingArea\Data\Managed\Microsoft.MixedReality.Toolkit.Services.InputSimulation.dll" "--target=Temp\StagingArea\Data\Managed\Microsoft.MixedReality.Toolkit.Services.InputSystem.dll" "--target=Temp\StagingArea\Data\Managed\Microsoft.MixedReality.Toolkit.Services.SceneSystem.dll" "--target=Temp\StagingArea\Data\Managed\Microsoft.MixedReality.Toolkit.Services.SpatialAwarenessSystem.dll" "--target=Temp\StagingArea\Data\Managed\Microsoft.MixedReality.Toolkit.Services.TeleportSystem.dll" "--target=Temp\StagingArea\Data\Managed\Microsoft.MixedReality.Toolkit.Tests.Utilities.dll" "--target=Temp\StagingArea\Data\Managed\Microsoft.MixedReality.Toolkit.Providers.WindowsMixedReality.Shared.dll" "--target=Temp\StagingArea\Data\Managed\Microsoft.MixedReality.Toolkit.Providers.OpenXR.dll" "--target=Temp\StagingArea\Data\Managed\Microsoft.MixedReality.Toolkit.Gltf.dll" "--target=Temp\StagingArea\Data\Managed\Microsoft.MixedReality.Toolkit.Extensions.Tracking.dll" "--target=Temp\StagingArea\Data\Managed\App.Modules.UniRxTrigger.dll" "--target=Temp\StagingArea\Data\Managed\Assembly-CSharp.dll" "--target=Temp\StagingArea\Data\Managed\AVProVideo.Demos.dll" "--target=Temp\StagingArea\Data\Managed\AVProVideo.Extensions.Timeline.dll" "--target=Temp\StagingArea\Data\Managed\AVProVideo.Extensions.UnityUI.dll" "--target=Temp\StagingArea\Data\Managed\AVProVideo.Extensions.VisualEffectGraph.dll" "--target=Temp\StagingArea\Data\Managed\AVProVideo.Runtime.dll" "--target=Temp\StagingArea\Data\Managed\Microsoft.MixedReality.Toolkit.Tools.Runtime.dll" "--target=Temp\StagingArea\Data\Managed\IngameDebugConsole.Runtime.dll" "--target=Temp\StagingArea\Data\Managed\Microsoft.MixedReality.OpenXR.dll" "--target=Temp\StagingArea\Data\Managed\Microsoft.MixedReality.Toolkit.Async.dll" "--target=Temp\StagingArea\Data\Managed\Microsoft.MixedReality.Toolkit.Demos.UX.Interactables.dll" "--target=Temp\StagingArea\Data\Managed\Microsoft.MixedReality.Toolkit.dll" "--target=Temp\StagingArea\Data\Managed\Microsoft.MixedReality.Toolkit.Examples.dll" "--target=Temp\StagingArea\Data\Managed\Microsoft.MixedReality.Toolkit.Extensions.HandPhysics.dll" "--target=Temp\StagingArea\Data\Managed\Microsoft.MixedReality.Toolkit.Extensions.SceneTransitionService.dll" "--target=Temp\StagingArea\Data\Managed\InputSystem.Samples.Visualizers.dll" "--target=Temp\StagingArea\Data\Managed\Microsoft.SpatialAudio.Spatializer.dll" "--target=Temp\StagingArea\Data\Managed\netstandard.dll" "--target=Temp\StagingArea\Data\Managed\Unity.RenderPipelines.Universal.Runtime.dll" "--target=Temp\StagingArea\Data\Managed\Unity.RenderPipelines.Universal.Shaders.dll" "--target=Temp\StagingArea\Data\Managed\Unity.Services.Core.Analytics.dll" "--target=Temp\StagingArea\Data\Managed\Unity.Services.Core.Configuration.dll" "--target=Temp\StagingArea\Data\Managed\Unity.Services.Core.Device.dll" "--target=Temp\StagingArea\Data\Managed\Unity.Services.Core.dll" "--target=Temp\StagingArea\Data\Managed\Unity.Services.Core.Environments.dll" "--target=Temp\StagingArea\Data\Managed\Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary.dll" "--target=Temp\StagingArea\Data\Managed\Unity.Services.Core.Environments.Internal.dll" "--target=Temp\StagingArea\Data\Managed\Unity.Services.Core.Networking.dll" "--target=Temp\StagingArea\Data\Managed\Unity.Services.Core.Registration.dll" "--target=Temp\StagingArea\Data\Managed\Unity.Services.Core.Scheduler.dll" "--target=Temp\StagingArea\Data\Managed\Unity.Services.Core.Telemetry.dll" "--target=Temp\StagingArea\Data\Managed\Unity.Services.Core.Threading.dll" "--target=Temp\StagingArea\Data\Managed\Unity.Subsystem.Registration.dll" "--target=Temp\StagingArea\Data\Managed\Unity.TextMeshPro.dll" "--target=Temp\StagingArea\Data\Managed\Unity.Services.Core.Internal.dll" "--target=Temp\StagingArea\Data\Managed\UnityEngine.XR.LegacyInputHelpers.dll" "--target=Temp\StagingArea\Data\Managed\Unity.RenderPipelines.Core.ShaderLibrary.dll" "--target=Temp\StagingArea\Data\Managed\Unity.RenderPipeline.Universal.ShaderLibrary.dll" "--target=Temp\StagingArea\Data\Managed\ProtoMock.dll" "--target=Temp\StagingArea\Data\Managed\UniRx.dll" "--target=Temp\StagingArea\Data\Managed\UniTask.Addressables.dll" "--target=Temp\StagingArea\Data\Managed\UniTask.dll" "--target=Temp\StagingArea\Data\Managed\UniTask.DOTween.dll" "--target=Temp\StagingArea\Data\Managed\UniTask.Linq.dll" "--target=Temp\StagingArea\Data\Managed\UniTask.TextMeshPro.dll" "--target=Temp\StagingArea\Data\Managed\Unity.RenderPipelines.Core.Runtime.dll" "--target=Temp\StagingArea\Data\Managed\Unity.Burst.dll" "--target=Temp\StagingArea\Data\Managed\Unity.InputSystem.dll" "--target=Temp\StagingArea\Data\Managed\Unity.InputSystem.RebindingUI.dll" "--target=Temp\StagingArea\Data\Managed\Unity.Mathematics.dll" "--target=Temp\StagingArea\Data\Managed\nunit.framework.dll" "--target=Temp\StagingArea\Data\Managed\Unity.Burst.Unsafe.dll" "--target=Temp\StagingArea\Data\Managed\Unity.VisualScripting.Antlr3.Runtime.dll" "--target=Temp\StagingArea\Data\Managed\Newtonsoft.Json.dll" "--target=Temp\StagingArea\Data\Managed\Unity.Burst.Cecil.Pdb.dll" "--target=Temp\StagingArea\Data\Managed\Unity.Burst.Cecil.Mdb.dll" "--target=Temp\StagingArea\Data\Managed\Unity.Burst.Cecil.dll" "--target=Temp\StagingArea\Data\Managed\Unity.Burst.Cecil.Rocks.dll" "--additionalreferences=Temp\StagingArea\Data\Managed,Temp\StagingArea\Data\Managed\Plugins\X86,Temp\StagingArea\Data\Managed\Plugins\ARM64,Temp\StagingArea\Data\Managed\Plugins\ARM,Temp\StagingArea\Data\Managed\Plugins\X64,Temp\StagingArea\Data\Managed\Plugins\X64,Temp\StagingArea\Data\Managed\Plugins\ARM,Temp\StagingArea\Data\Managed\Plugins\ARM64,Temp\StagingArea\Data\Managed\Plugins\X64,Temp\StagingArea\Data\Managed\Plugins\X86,Temp\StagingArea\Data\Managed\Plugins\ARM,Temp\StagingArea\Data\Managed\Plugins\ARM64,Temp\StagingArea\Data\Managed\Plugins\X64,Temp\StagingArea\Data\Managed\Plugins\X86,Temp\StagingArea\Data\Managed\Plugins\ARM64,Temp\StagingArea\Data\Managed\Plugins\ARM,Temp\StagingArea\Data\Managed\Plugins\X64,Temp\StagingArea\Data\Managed\Plugins\X86,Temp\StagingArea\Data\Managed\Plugins\X64,Temp\StagingArea\Data\Managed\Plugins\ARM64,Temp\StagingArea\Data\Managed\Plugins\ARM,Temp\StagingArea\Data\Managed\Plugins\ARM,Temp\StagingArea\Data\Managed\Plugins\X64,Temp\StagingArea\Data\Managed\Plugins\ARM64" "--platform=C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.22000.0\Facade\Windows.winmd" "--dbg=pdb" "--framework=Temp\StagingArea\Data\Managed" "--alt=Microsoft.Win32.SafeHandles,mscorlib;System,mscorlib;System,System;System,System.ComponentModel.Composition;System,System.Core;System.CodeDom.Compiler,System;System.Collections,mscorlib;System.Collections.Concurrent,mscorlib;System.Collections.Concurrent,System;System.Collections.Generic,mscorlib;System.Collections.Generic,System;System.Collections.Generic,System.Core;System.Collections.ObjectModel,mscorlib;System.Collections.ObjectModel,System;System.Collections.Specialized,System;System.ComponentModel,System;System.ComponentModel.DataAnnotations,System.ComponentModel.DataAnnotations;System.ComponentModel.DataAnnotations.Schema,System.ComponentModel.DataAnnotations;System.Data,System.Data;System.Data.Common,System.Data;System.Diagnostics,mscorlib;System.Diagnostics,System;System.Diagnostics.CodeAnalysis,mscorlib;System.Diagnostics.Contracts,mscorlib;System.Diagnostics.Tracing,mscorlib;System.Dynamic,System.Core;System.Globalization,mscorlib;System.IO,mscorlib;System.IO,System;System.IO,System.Core;System.IO,System.Runtime.WindowsRuntime.UI.Xaml;System.IO.Compression,System;System.IO.Compression,System.IO.Compression.FileSystem;System.IO.IsolatedStorage,mscorlib;System.Linq,System.Core;System.Linq.Expressions,System.Core;System.Net,System;System.Net.NetworkInformation,System;System.Net.Security,System;System.Net.Sockets,System;System.Numerics,System.Numerics;System.Reflection,mscorlib;System.Reflection.Emit,mscorlib;System.Resources,mscorlib;System.Runtime,mscorlib;System.Runtime.CompilerServices,mscorlib;System.Runtime.CompilerServices,System.Core;System.Runtime.ExceptionServices,mscorlib;System.Runtime.InteropServices,mscorlib;System.Runtime.InteropServices,System;System.Runtime.InteropServices,System.Core;System.Runtime.InteropServices.ComTypes,mscorlib;System.Runtime.InteropServices.ComTypes,System;System.Runtime.InteropServices.WindowsRuntime,mscorlib;System.Runtime.Serialization,mscorlib;System.Runtime.Serialization,System.Runtime.Serialization;System.Runtime.Serialization.Json,System.Runtime.Serialization;System.Runtime.Versioning,mscorlib;System.Runtime.Versioning,System;System.Security,mscorlib;System.Security.Authentication,System;System.Security.Authentication.ExtendedProtection,System;System.Security.Claims,mscorlib;System.Security.Principal,mscorlib;System.ServiceModel,System.ServiceModel;System.ServiceModel.Channels,System.ServiceModel;System.ServiceModel.Description,System.ServiceModel;System.ServiceModel.Dispatcher,System.ServiceModel;System.ServiceModel.Security,System.ServiceModel;System.ServiceModel.Security.Tokens,System.ServiceModel;System.Text,mscorlib;System.Text.RegularExpressions,System;System.Threading,mscorlib;System.Threading,System;System.Threading,System.Core;System.Threading.Tasks,mscorlib;System.Threading.Tasks,System.Core;System.Windows.Input,System;System.Xml,System.Runtime.Serialization;System.Xml,System.Xml;System.Xml.Linq,System.Xml.Linq;System.Xml.Schema,System.Xml;System.Xml.Serialization,System.Xml;<winmd>,Windows.winmd;<winmd>,Windows.AI.MachineLearning.MachineLearningContract.winmd;<winmd>,Windows.AI.MachineLearning.Preview.MachineLearningPreviewContract.winmd;<winmd>,Windows.ApplicationModel.Calls.Background.CallsBackgroundContract.winmd;<winmd>,Windows.ApplicationModel.Calls.CallsPhoneContract.winmd;<winmd>,Windows.ApplicationModel.Calls.CallsVoipContract.winmd;<winmd>,Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingContract.winmd;<winmd>,Windows.ApplicationModel.SocialInfo.SocialInfoContract.winmd;<winmd>,Windows.ApplicationModel.StartupTaskContract.winmd;<winmd>,Windows.Devices.Custom.CustomDeviceContract.winmd;<winmd>,Windows.Devices.DevicesLowLevelContract.winmd;<winmd>,Windows.Devices.Printers.PrintersContract.winmd;<winmd>,Windows.Devices.SmartCards.SmartCardBackgroundTriggerContract.winmd;<winmd>,Windows.Devices.SmartCards.SmartCardEmulatorContract.winmd;<winmd>,Windows.Foundation.FoundationContract.winmd;<winmd>,Windows.Foundation.UniversalApiContract.winmd;<winmd>,Windows.Gaming.XboxLive.StorageApiContract.winmd;<winmd>,Windows.Graphics.Printing3D.Printing3DContract.winmd;<winmd>,Windows.Networking.Connectivity.WwanContract.winmd;<winmd>,Windows.Networking.Sockets.ControlChannelTriggerContract.winmd;<winmd>,Windows.Security.Isolation.IsolatedWindowsEnvironmentContract.winmd;<winmd>,Windows.Services.Maps.GuidanceContract.winmd;<winmd>,Windows.Services.Maps.LocalSearchContract.winmd;<winmd>,Windows.Services.Store.StoreContract.winmd;<winmd>,Windows.Services.TargetedContent.TargetedContentContract.winmd;<winmd>,Windows.Storage.Provider.CloudFilesContract.winmd;<winmd>,Windows.System.Profile.ProfileHardwareTokenContract.winmd;<winmd>,Windows.System.Profile.ProfileRetailInfoContract.winmd;<winmd>,Windows.System.Profile.ProfileSharedModeContract.winmd;<winmd>,Windows.System.Profile.SystemManufacturers.SystemManufacturersContract.winmd;<winmd>,Windows.System.SystemManagementContract.winmd;<winmd>,Windows.UI.UIAutomation.UIAutomationContract.winmd;<winmd>,Windows.UI.ViewManagement.ViewManagementViewScalingContract.winmd;<winmd>,Windows.UI.Xaml.Core.Direct.XamlDirectContract.winmd;<winmd>,Windows.ApplicationModel.Activation.ActivatedEventsContract.winmd;<winmd>,Windows.ApplicationModel.Activation.ActivationCameraSettingsContract.winmd;<winmd>,Windows.ApplicationModel.Activation.ContactActivatedEventsContract.winmd;<winmd>,Windows.ApplicationModel.Activation.WebUISearchActivatedEventsContract.winmd;<winmd>,Windows.ApplicationModel.Background.BackgroundAlarmApplicationContract.winmd;<winmd>,Windows.ApplicationModel.Calls.LockScreenCallContract.winmd;<winmd>,Windows.ApplicationModel.FullTrustAppContract.winmd;<winmd>,Windows.ApplicationModel.Preview.InkWorkspace.PreviewInkWorkspaceContract.winmd;<winmd>,Windows.ApplicationModel.Preview.Notes.PreviewNotesContract.winmd;<winmd>,Windows.ApplicationModel.Resources.Management.ResourceIndexerContract.winmd;<winmd>,Windows.ApplicationModel.Search.Core.SearchCoreContract.winmd;<winmd>,Windows.ApplicationModel.Search.SearchContract.winmd;<winmd>,Windows.ApplicationModel.Wallet.WalletContract.winmd;<winmd>,Windows.Devices.Portable.PortableDeviceContract.winmd;<winmd>,Windows.Devices.Printers.Extensions.ExtensionsContract.winmd;<winmd>,Windows.Devices.Scanners.ScannerDeviceContract.winmd;<winmd>,Windows.Devices.Sms.LegacySmsApiContract.winmd;<winmd>,Windows.Gaming.Input.GamingInputPreviewContract.winmd;<winmd>,Windows.Gaming.Preview.GamesEnumerationContract.winmd;<winmd>,Windows.Gaming.UI.GameChatOverlayContract.winmd;<winmd>,Windows.Gaming.UI.GamingUIProviderContract.winmd;<winmd>,Windows.Globalization.GlobalizationJapanesePhoneticAnalyzerContract.winmd;<winmd>,Windows.Management.Deployment.Preview.DeploymentPreviewContract.winmd;<winmd>,Windows.Management.Deployment.SharedPackageContainerContract.winmd;<winmd>,Windows.Management.Workplace.WorkplaceSettingsContract.winmd;<winmd>,Windows.Media.AppBroadcasting.AppBroadcastingContract.winmd;<winmd>,Windows.Media.AppRecording.AppRecordingContract.winmd;<winmd>,Windows.Media.Capture.AppBroadcastContract.winmd;<winmd>,Windows.Media.Capture.AppCaptureContract.winmd;<winmd>,Windows.Media.Capture.AppCaptureMetadataContract.winmd;<winmd>,Windows.Media.Capture.CameraCaptureUIContract.winmd;<winmd>,Windows.Media.Capture.GameBarContract.winmd;<winmd>,Windows.Media.Devices.CallControlContract.winmd;<winmd>,Windows.Media.MediaControlContract.winmd;<winmd>,Windows.Media.Playlists.PlaylistsContract.winmd;<winmd>,Windows.Media.Protection.ProtectionRenewalContract.winmd;<winmd>,Windows.Networking.NetworkOperators.LegacyNetworkOperatorsContract.winmd;<winmd>,Windows.Networking.XboxLive.XboxLiveSecureSocketsContract.winmd;<winmd>,Windows.Perception.Automation.Core.PerceptionAutomationCoreContract.winmd;<winmd>,Windows.S<message truncated>

原因はAssembly Definition Referencesの設定漏れやロード順の問題
解決方法は一例として、
- 直近で入れたアセットをいったん消したりなどしてそれが本当に原因かを特定
- その後入れ直し
- 追加アセットを参照するコードが関係するAssembly Definition AssetのReferencesへ、追加アセットのAssembly Definition Assetを追加 or 順番を上にする。

HoloLens2実機デプロイ時

Visual Studioのソリューションエクスプローラーに自分のプロジェクトが見当たらない

Unityでビルドしたプロジェクトじゃなくて、間違えてUnityのプロジェクトの.slnファイルを開いている。

DEP0600: 配置が失敗しました。新しい配置パイプラインを通して配置できませんでした。

原因1
アプリパッケージが大きすぎるとたまに発生。HoloLens2を再起動したりUSB接続しなおしたり、Wi-Fiでデプロイしてみる。
またよくあるパターンのStreamingAssets以下のものを他においてアプリパッケージの外に出す。

原因2
それかPackage Nameが同じアプリをデバイスポータルのアプリパッケージ経由やストアからインストールした場合にも以下のエラーが同時にでて失敗する。
自分のプロジェクトのPackage Nameを変更するか、HoloLens実機のインストール済みのアプリを一度アンインストールを行ってから再度実施する。

RemoteCommandException: Another user has already installed a packaged version of this app. An unpackaged version cannot replace this. The conflicting package is パッケージ名 and it was published by CN=インストールしたユーザー名.


実機にデプロイしたアプリの起動時

HoloLens2にデプロイしたアプリが3つの丸がくるくる回って読み込み中の表示のまま起動しない場合

他のバージョンのUnityを試す。

実機のアプリの表示がされないなど

HoloLens2にデプロイしたアプリの表示がない。Gazeや手の線のみ表示される

OpenXRに切り替える必要があるパターン
(Unity.Hierarchy)MixedRealityToolkit
OpenXRConfigurationProfileに切り替える

Project SettingsのXR Plug-in ManagementのUWPタブでInitialize XR on Startupのチェックを入れる

環境認識で生成されるSpatial Meshに埋まってるパターン
(Unity.Hierarchy)MixedRealityToolkit > Spatial Awareness > OpenXR Spatial Mesh Observer > General Settings/Startup Behavior = Manual Start

Build Settingsに登録し忘れているパターン

追加する。沼ってて疲れてくるとよくある。一休みだ。

起動直後にアプリがクラッシュして落ちているパターン

Editorでは動いているのに実機では動かない。ログなどを確認。
一例としてコンポーネントの参照にMissingがあると落ちたりもする。
UnityのプロジェクトからMissingだけでなく何かしらの問題となるようなものをサクッと調べて直してくれる有料アセットのMaintainerが超おすすめ。
https://assetstore.unity.com/packages/tools/utilities/maintainer-32199?locale=ja-JP

何かがおかしいパターン

UnityからBuildしたVisual Studioのフォルダを丸ごと消してやり直しするか、Unityのバージョンを変えてプロジェクトを作り直す。
それでもダメならばVisual Studioの個別コンポーネントの入れ漏れがある可能性などがある。

アプリパッケージの作成時

アプリパッケージの作成手順

(Visual Studio)プロジェクト>公開>アプリパッケージの作成
※アプリパッケージの作成がグレーアウトして選べない場合は、

アプリパッケージのインストール手順

HoloLens2のDevice PortalのViews>Apps
デバッグなしで実行などで既にインストール済みの場合はいったん消してから入れなおす。

自動更新について

※更新についてはできたが、新規インストールができなかった。
情報お持ちの方は上記ツイートまで。

ここから先は

1,953字 / 1画像

¥ 100

この記事が気に入ったらチップで応援してみませんか?