しっぽを追いかけて

ぐるぐるしながら考えています

Unity と猫の話題が中心   掲載内容は個人の私見であり、所属組織の見解ではありません

【不具合回避】MRTK vNext アルファ版の HoloLens 用ビルドを試してみる

※ これは 2018/08/18 Unity 2018.2.5f1、Mixed Reality Toolkit vNext Alpha v2018.7.0.0 時点の情報です

最新版では動作が異なる可能性がありますのでご注意ください

前回はアルファ版の次世代 Mixed Reality Toolkit で HoloLens にインストールしたところでエラー!

Windows cannot install package Microsoft.MixedReality.Toolkit_2018.0.11.0_x86__ph1m9x8skttmg because this package depends on a framework that could not be found. Provide the framework "Microsoft.VCLibs.140.00.Debug" published by "CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US", with neutral or x86 processor architecture and minimum version 14.0.26726.0, along with this package to install. The frameworks with name "Microsoft.VCLibs.140.00.Debug" currently installed are: {Microsoft.VCLibs.140.00.Debug_14.0.25830.2_x86__8wekyb3d8bbwe}
Package failed updates, dependency or conflict validation.

UnityEngine.Debug:LogError(Object)
Microsoft.MixedReality.Toolkit.Internal.Utilities.WindowsDevicePortal.<GetInstallStatusAsync>c__asyncB:MoveNext() (at Assets/MixedRealityToolkit/_Core/Utilities/WindowsDevicePortal/DevicePortal.cs:468)
System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1:SetResult(Response)
Microsoft.MixedReality.Toolkit.Internal.Utilities.WebRequestRest.<GetAsync>c__async0:MoveNext() (at Assets/MixedRealityToolkit/_Core/Utilities/WebRequestRest/Rest.cs:66)
System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1:SetResult(Response)
Microsoft.MixedReality.Toolkit.Internal.Utilities.WebRequestRest.<ProcessRequestAsync>c__async8:MoveNext() (at Assets/MixedRealityToolkit/_Core/Utilities/WebRequestRest/Rest.cs:246)
System.Runtime.CompilerServices.MoveNextRunner:Run()
Microsoft.MixedReality.Toolkit.Internal.Utilities.Async.AwaiterExtensions:RunOnUnityScheduler(Action) (at Assets/MixedRealityToolkit/_Core/Utilities/AsyncUtility/AwaiterExtensions.cs:151)
Microsoft.MixedReality.Toolkit.Internal.Utilities.Async.SimpleCoroutineAwaiter`1:Complete(AsyncOperation, Exception) (at Assets/MixedRealityToolkit/_Core/Utilities/AsyncUtility/AwaiterExtensions.cs:195)
Microsoft.MixedReality.Toolkit.Internal.Utilities.Async.<ReturnSelf>c__Iterator2`1:MoveNext() (at Assets/MixedRealityToolkit/_Core/Utilities/AsyncUtility/AwaiterExtensions.cs:387)
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

これを何とかしたい

なんか HoloLens に必要なフレームワーク VCLibs が入ってない的なエラーメッセージ

because this package depends on a framework that could not be found. Provide the framework "Microsoft.VCLibs.140.00.Debug"

とりあえず Unity 2018.2.5f1 が出ていたのでアップデートして再度ビルドからやり直し

D:\1_Tools\VisualStudio\2017\MSBuild\Microsoft\VisualStudio\v15.0\AppxPackage\Microsoft.AppXPackage.Targets(2753,5): error APPX0702: �y�C���[�h �t�@�C�� 'D:\2_Documents\2_Sources\MRSamples\vNextAlpha\UWP\MixedRealityToolkit\Assets\SplashScreen.png' �����݂��܂���B [D:\2_Documents\2_Sources\MRSamples\vNextAlpha\UWP\MixedRealityToolkit\MixedRealityToolkit.vcxproj]
UnityEngine.Debug:Log(Object)
Microsoft.MixedReality.Toolkit.Internal.Extensions.<StartProcessAsync>c__AnonStorey3:<>m__2(Object, DataReceivedEventArgs) (at Assets/MixedRealityToolkit/_Core/Extensions/ProcessExtensions.cs:87)
System.Threading._ThreadPoolWaitCallback:PerformWaitCallback()

おーい!今度はこの時点でエラーだよー!

スプラッシュスクリーン画像がないとか・・・なんでこんなエラーになるのか?!

MRTK の Issue 見に行ったら中の人のコメントが

え・・・と思いつつも UnityEditor の Build Window、Unity Build Options タブから「Open in Visual Studio」ボタンを押下

Visual Studio を開いたら Mixed Reality Toolkit のプロジェクト内、Assets/SplashScreen.scale-200.pngSplashScreen.png に改名

そして ビルドプラットフォームを x86、配置先を Device にして F5 実行!

すると配置エラーが起こらず、「不足していたフレームワークをインストールしています...」のログが!

しばらくそのまま待っていると、今度こそ HoloLens 実機で起動できたー!

なんとなーく Unity 側が悪そうではありますが、こういう不具合が起きないように MRTK チームと Unity 側で密に連携をとってもらいたいですね・・・