麦斯科技 · 2021年04月02日

通过Windows on Arm在Windows on Arm上部署StaffPad音乐应用程序

向StaffPad学习:如何使用通用Windows平台部署应用

43f0bc60d095160f2743b734224f03b8_640_wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1.png

本·克拉克

2021年1月18日

Windows on Arm确实已经积蓄了动力,并且生态系统正在继续发展。现在,它具有支持工具,可以轻松移植Windows应用程序以使其本机运行。

这是值得的–与Win32应用程序的仿真相比,速度和电池寿命的增加非常重要,即使很难量化。

使用通用Windows平台(UWP),只需执行几个简单的步骤即可本地运行代码。UWP是Microsoft的现代框架,旨在简化跨平台开发。而且,随着越来越多的库,开源软件项目和其他依赖项移交给Arm64,现在比以往任何时候都更容易实现最后的障碍。

让我们看一个有关开发人员如何将其UWP应用移植到本机Arm64的案例研究。

30469b8cda9ee27e531df797ce7e692f_640_wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1.png

职员板

StaffPad是专为作曲家设计的屡获殊荣的音乐注释应用程序。您可以在屏幕上用笔书写音乐,对其进行编辑并收听播放。它背后有一些复杂的数学,将在后面简要说明,但首先让我们看一下应用程序的设置。

StaffPad由来自不同背景的国际开发音乐家团队构建。该应用程序基于UWP。之所以做出此决定,是因为团队希望跨平台,并且易于创建友好的便携式设备用户体验。

StaffPad开发人员使用Visual Studio Enterprise。该应用程序分为两层:1)纯C ++内核,以及2)处理用户界面和交互(即C#/ XAML)的“本地体验”层。

第三方依赖

移植时,最大的问题可能是第三方依赖性,尤其是在UWP解决了大多数其他跨平台问题的情况下。对于StaffPad,这也是事实。

这里有一个主要的阻止器–具有向量内在函数的第三方库,这些向量内在函数用于英特尔特定的硬件加速。这些主要用于音频引擎中的FFT(快速傅立叶变换)过程。

StaffPad的解决方案是构建自己的优化FFT代码。有其他可用的第三方库选项可以更快地提供解决方案。但是,只需编写StaffPad所需的内容,它就可以使其内部保持精简,快速。

没有其他依赖关系会导致StaffPad出现任何麻烦。

本地依赖

本地图书馆很容易。StaffPad只需要将其目标设置为Arm64并进行重建,并确保主项目指向本地的Arm库。尽管有一些内部音频编解码器库和其他功能,但这是在几个小时内完成的。

构建,测试和CI

StaffPad使用了许多UWP功能,例如Win2D,并且移植时没有任何问题。因此,就像本地依赖项一样,这只是针对Arm64和构建的问题。对依赖项进行排序之后,C ++核心和C#/ XAML UI层都可以很好地编译。

测试很关键,但是很简单。在设备上看到该应用以显示其在新环境中的外观至关重要。对于StaffPad,一旦在Microsoft Surface Pro X上查看了该应用程序,很快就会修复一些小错误。

Visual Studio 2019随附Windows on Arm调试,如果应用了15.9更新并随后下载了Arm64工具集,则Visual Studio 2017中也提供了Windows调试。它仅支持远程调试,并且需要执行几个步骤来进行设置。设备必须接受远程调试。这是通过转到“设置”窗口,选择“ Windows Update”>“对于开发人员”并打开“开发人员模式和设备发现”来实现的。打开设备发现时,您将能够将Windows on Arm设备与正在开发的计算机配对。

Visual Studio Code具有本地调试功能,但是库和编译器仍在移植中,因此根据您所使用的语言,可能无法实现。

对于其持续集成(CI)管道,StaffPad使用Azure DevOps。Windows on Arm可以轻松插入,可以像其他所有东西一样进行永久测试。

部署

有了经过良好测试的应用程序,下一个问题就是如何部署。

StaffPad无需通过安装程序,而是通过Windows Store部署给客户。该商店与UWP配合良好,可以在多种平台上轻松选择-您甚至可以使用StaffPad for Microsoft HoloLens。为了进行部署,新的平台版本刚刚上传,然后立即可用。

比较

仿真和本机之间的差异对于StaffPad而言是惊人的。该应用程序确实可以推送具有图形,音频,触摸,机器学习(ML)和联网功能的设备,所有这些都需要处理。特别是,音频引擎无法在仿真下执行,其启动速度很慢,内存使用率很高。

从本质上讲,UI敏捷,加载速度快,笔的使用无滞后–总体而言,使用起来很愉快。

很难比较机器,因为它们都有不同的规格,但是本机Arm64 StaffPad在Microsoft Surface Pro X上的启动时间要快得多。与类似的x64设备相比,使用中的应用程序的感觉也更流畅。对于StaffPad而言,速度,全天的电池寿命,即时接通和持续连接都是为什么要使用Windows on Arm的原因。在此案例研究中,您可以从StaffPad阅读更多内容。

结论

从本示例中可以看到,将UWP应用移植到Windows on Arm上通常很容易。依赖项和库可能存在一些问题,但是越来越多的问题正在产生Windows on Arm版本。许多开放源代码项目已经是兼容的,或者如果它们是依赖项的话,可能不需要花很多精力就可以使它们运行。

一旦对依赖项进行排序,从那里开始就很容易了。以Arm64为目标,构建和部署。

这是可行的,值得为提高性能而付出。

了解更多

以下资源提供了更多有关Arm on Windows和UWP的信息:

推荐阅读
关注数
5845
内容数
525
定期发布Arm相关软件信息,微信公众号 ArmSWDevs,欢迎关注~
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息