如何在同一应用程序中同时定位Windows 10 UWP和Windows Phone 8.1?


18

背景

从开发人员的角度来看,Windows 10的主要卖点是其新的Universal * Windows Platform(UWP)

*如果“万能”的真正含义“万能到运行Windows 10的所有设备”,而不是“普及到运行不仅限于Windows 10的设备,但也是Windows 8.1和可能的Windows 7”。因此,如果您要构建UWP应用程序,则实际上只是在构建“ Windows 10应用程序”。UWP应用程序甚至无法在Windows 8.1和Windows Phone 8.1设备上运行,即它们根本不向后兼容。

从2015年第三季度开始,Windows 10可用于PCIoT设备。至少要再过几个月才能向公众发布Windows 10移动版,但可能不会超过一年。这意味着Windows Phone 8.1将保留一段时间。

我将开始开发Windows Phone应用程序,由于它是一个相当简单的应用程序,因此我计划在下个月左右发布它。由于Windows 10移动版不会很快面世,更不用说升级的设备了,我现在必须瞄准Windows Phone 8.1。但是,由于它不会是那个视窗10没过多久手机的推出,我想知道,如果它会是明智的准备我的部署解决方案到Windows 10 UWP 以及 Windows Phone的8.1(这也会让我在需要时继续支持8.1)。

我看到我可以在同一解决方案中将UWP项目和8.1项目分组,并且可以像Visual Studio中的Windows 8.1 Universal模板一样通过共享项目共享源文件和资产。我在正确的轨道上吗?如果是这样,我是否应该遵循任何其他准则来确保所有功能(包括XAML,理想情况下,我希望在两个平台上都具有相同或至少相似的UI)在两个平台上均能正常工作(考虑到任何不一致性)?

另外,我现在不必担心Windows 10移动版并从8.1项目开始,然后再将其迁移到UWP,但是由于我不打算放弃8.1,所以我仍然必须维护我的两个版本。用户立即。在这种情况下,我仍然需要担心功能/ XAML奇偶校验。


3
作为更新,我继续创建了一个由共享项目,UWP项目和WP8.1项目组成的解决方案。我确定知道自己在做什么后,将在稍后的答复中详细介绍...
BoltClock

您要分享有关此特定主题的发现的任何最新信息吗?我真的很想知道这种方法如何为您工作。
尼尔森·里斯

3
@Nelson Reis:我正在为WP8.1交付我的应用程序(太好了!),所以我还没有开始使用UWP应用程序。但是我会很快。到目前为止,WP8.1方面的运行情况还不错。
BoltClock

我只是对更新感兴趣。WP8.1和UWP的发展如何?(我的得分不到50分,因此我无法评论)。原因是我开始开发一个跨平台应用程序,并且我目前正在决定使用哪种技术。(programmers.stackexchange.com/questions/314850/...
makons

2
嘿,对不起,这花了这么长时间。我的UWP应用正在开发中,因此我将在接下来的几周内分享一些东西。
BoltClock '16

Answers:


2

正如您在评论中说的那样,实现此目标的最佳方法是使用一个共享项目并为其添加多个标题。您的情况是Windows Phone 8.1头和uwp头。这一立场也有人在杰里·尼克松和安迪·威格利(我认为的MVA 是它,但由于它已更新),在约8.1移植应用程序来UWP部分。

在您的共享项目中,您可能必须使用条件编译指令来区分在uwp和phone 8.1中运行的代码。(就像创建通用Windows 8.1 / phone 8.1应用程序时一样)


1

根据您的应用程序需要Windows功能的具体情况,您可以使用Xamarin之类的平台,该平台不仅允许您为Windows编写程序,还可以在同一代码库中编写iOS和Android。


1

根据我的经验:值得在PCL库中放置一些辅助程序/逻辑/等。然后,您可以创建两个项目(分别用于UWP和WP8),这些项目可以利用PCL进行零更改。此外,您可以共享服务,查看模型和模型(只有很少的#if条条件编译行)。

唯一不值得分享的是与UI相关的人员,因为必须切换/调整太多的内容(因此,即使UWP和WP8几乎相同,也要为其分别准备独立的布局要容易得多)。

PS我为UWP和WP8.1 Silverlight做到了

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.