9月2日星期一,我的第一个HoloLens商店应用程序,AMS HoloATC的4.0.19版在微软商店中推出。此版本已完全重建使用混合现实工具包 2,并包括一些仅 HoloLens 2 功能:您现在可以实际触摸飞机,并使用凝视跟踪,它将显示实际飞机的图片(如果可用)。
您可能还喜欢:
梦幻般的按钮和在哪里可以找到它们 – 在MR工具包
要跳的霍普斯
您可能还记得,从前面的帖子中,当涉及到在 HoloLens 上实际部署应用程序时,情况已经发生了很大变化。现在,我们需要编译 Unity 生成的 C# 解决方案并将其提交到存储。尽管此过程看起来非常类似于我们过去在 .NET 后端上运行的 Unity 应用,但您可能会遇到三件事:
- 您的 WACK 测试很可能失败
- 如果以前已将应用作为捆绑包提交,请确保再次将其作为捆绑包提交。Unity 生成的 C# 解决方案没有此作为默认设置
- 如果您创建(像我一样)一个应用程序,应该运行在桌面(在沉浸式耳机),HoloLens 1和HoloLens 2,您可能会发现您的应用程序无法再由 HoloLens 1 下载 – 或 HoloLens 2 仿真器,对于什么重要
修复瓦克故障
在实际将应用提交到应用商店之前,首先执行 Windows 应用程序认证测试,以防止令人尴尬的易于预防的故障。对。(对吧?如果你这样做,你会看到它失败。它会向你吐出一些错误。
- Windows 安全功能测试将抱怨:
HolographicAppRemoting.dll
检查AppContainerCheck
失败。PerceptionDevice.dll
检查AppContainerCheck
失败。UnityRemotingWMR.dll
检查AppContainerCheck
失败。- 支持的 API 测试将列出 10 个有关
UnityRemotingWMR
调用不支持的 API 的错误 - 调试配置测试将告诉您 Unity 远程移动WMR 仅内置调试模式
- 如果您尝试为 x86 或 ARM 构建,包健全性测试将告诉您
HolographicAppRemoting.dll
PerceptionDevice.dll
, 并且仅适用于UnityRemotingWMR.dll
x64。
解决方案是有点奇怪,但可以找到这个Unity论坛帖子,涉及手动黑客的”Unity Data.vcxitems”文件,在你的商店项目内。在文本编辑器中打开它,然后 HolographicAppRemoting
搜索””。这将显示此部分 XML:
<None Include="$(MSBuildThisFileDirectory)HolographicAppRemoting.dll">
<DeploymentContent>true</DeploymentContent>
<ExcludeFromResourceIndex>true</ExcludeFromResourceIndex>
</None>
现在,只需将 中的值”true” DeploymentContent
更改为”false”:
重复此 PerceptionDevice
UnityRemotingWMR
这是消除这些错误所需的全部。
捆绑应用
我不知道到底发生了什么变化,但我使用以前的 Unity 版本创建的所有 HoloLens 应用程序都作为捆绑包上传。老实说,我从未过多地关注它。但是,生成的 C# 设置的默认设置是:
这将为每个平台生成一个应用(在我的案例中为三个:一个用于 x64,一个用于 x86,一个用于 ARM,顺序相同,WMR 沉浸式耳机、HoloLens 1 和 HoloLens 2)。如果您尝试将这些文件作为更新上载到以前作为捆绑包提交的应用,您将受到以下欢迎:
只需将设置”根据需要生成应用捆绑包”更改为”始终”即可修复:
使您的应用程序(仍然)可下载霍洛伦斯 1
说实话,4.0.19 并不是我提交的启用 HoloLens 2 的第一个版本。那是4.0.17。它获得了认证 – 作为第一个,如果不是第一个独立 HoloLens 2 应用程序之一。我很高兴, 约25秒.然后,我得到了一个非常不愉快的惊喜:我不能再下载它在HoloLens1。果然,你可以在商店找到它,但”安装”按钮是灰色的(嗯,浅蓝色代替深蓝色,但在任何情况下不工作)。奇怪的是,已经安装了的HoloLens确实得到了更新的版本。
这种行为的原因可以在这个帖子在Unity论坛中找到。基本上,Unity 放弃了对 DirectX 10 下任何内容的支持,现在该功能已列在应用的应用商店清单中。不幸的是,当 HoloLens 1 上的存储(和 HoloLens 2 仿真器,顺便说一句)检查 DirectX 10 时,设备显然报告”没有”,因此应用商店会阻止下载。
现在,我认为这将很快修复,但与此同时,如果您现在需要对提交执行以下操作,下面是解决方法:
首先,在文本编辑器中打开 Package.AppManifest.xml 文件。查找以下行:
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.16299.0" MaxVersionTested="10.0.18362.0" />
<TargetDeviceFamily Name="Windows.Holographic" MinVersion="10.0.16299.0" MaxVersionTested="10.0.18362.0" /
注释掉第二行。然后继续构建一个捆绑包,但仅针对 x64。
返回包.AppManifest.xml,取消注释第一行,然后重新激活第二行。现在,找到 StoreManifest.xml 文件 , 在文本编辑器中打开它。它应如下所示:
<?xml version="1.0" encoding="utf-8"?>
<StoreManifest xmlns="http://schemas.microsoft.com/appx/2015/StoreManifest">
<Dependencies>
<DirectXDependency Name="D3D11_HWFL_10_0" />
</Dependencies>
</StoreManifest>
只需删除行<DirectX 依赖性名称=”D3D11_HWFL_10_0″ />我不确定这是否必要,但我确保 x86/ARM 捆绑包有一个版本编号比 x64 高 1 点。
现在,继续将两个捆绑包上载到提交中,并根据需要设置复选框。在我的商店提交中,它看起来像这样:
现在,正如您所看到的,版本 4.0.17 仍然包含所有平台,但这不是必要的。但由于 4.0.19 具有更高的版本号,因此将首先提供给 HoloLens 1 和 2。
无论如何,现在你的应用程序,一旦认证,应该可以下载所有设备。在 x64 上,DirectX 10 检查将仍然有效;对于其他设备,它将被禁用。
结论
霍洛伦斯2(我构建我的应用程序,没有直接访问它),但我认为这是很酷的,有一个应用程序武装,并准备它。它需要一些摆弄XML文件来得到它的权利,但我相信事情很快就会好转,这些解决方法将不再需要。
享受构建下一代混合现实应用程序!