开发者评论微软WP8.1/Win8.1通用应用
微软早前已经积极鼓励开发者们将开发方向迁移到通用应用上来,然而一些开发者并不情愿如此。日前,外媒WMP发表了一篇评论文章,针对一位通用应用开发人员的一段开发经历,评论了微软通用应用目前的开发现状。
“Windows Phone 8.1 XAML以及包含WinRT API的通用应用目前仍然存在许多问题,包括缺乏必要的解决方案等。然而首先最值得一提的就是“通用应用”这个名称,我认为这样命名似乎有些夸大,通用应用面向的是两个平台(Win/WP),但坦率地说其实并没有多少用户使用或关心这类应用。放眼Windows平台,这些通用应用目前还没有被广泛普及,因为它们并没有在最常用的Windows 7/XP版本系统上成为通用。
事实上,开发者提到的这一观点其实也是外媒WMP前段时间讨论过的问题。目前,无论是WP8.1还是win8.1平台都没有向开发者展示足够的价值去开发一款基于该两大平台的通用应用,毕竟“尽管Windows现在拥有庞大的用户群,但这些用户并不一定都需要应用。然而Windows Phone用户现在最缺的就是应用,但Windows Phone生态却没有可观的应用量供应。”
然而,用户并不是唯一阻止开发者迁移到8.1 Win RT应用开发的因素,其中还存在技术上的问题:
API
“除了目前最遭受诟病的Windows Phone 8.1背景音频播放API之外,当然还不乏许多同样糟糕的例子,比如后台下载器(BackgroundDownloader)。在Silverlight插件方案中,后台下载器受到的限制很多,但最基本还可以工作。但在通用应用中,虽然后台下载器能够支持新功能,但一些基本的功能却都遗失了。
举例来说,在Silverlight中每个下载可能都有一个标签,它可以存储任何数据,下载完成后你可以知道下了哪些东西(相关实体内容等)。但在通用应用中缺失的内容太多了,没有标签自不必说,你还得必须创建和管理所有下载内容的索引,以便匹配你的实体信息以便查询。虽然这只是小问题,但没有它你就无法管理,的确很麻烦。”
此外,通用应用平台上的相机API也不如Silverlight,因为8.1 API缺乏镜头特性集成。
“目前在WP8.1相机API中没有帧预览,这一点令人愤慨不已。然而在Silverlight API中,你可以订阅事件,通过多帧率情况下的ZXing来改善低分辨率帧。但在WinRT上你能做的就是拍许多照片,而最好的情况就是支持闪光灯以及以约0.8帧每秒的速率扫描。
(注:ZXing是一个开源Java类库用于解析多种格式的1D/2D条形码。目标是能够对QR编码、Data Matrix、UPC的1D条形码进行解码。Zxing可以实现使用手机的内置的摄像头完成条形码的扫描及解码。)”
性能
“在Silverlight中,我常用LongListSelector显示数据,而当需要创建一个两列布局时我会一起使用内建面板WrapPanel。但在通用应用中,LongListSelector控件消失了,你必须使用网格视图(GridView),而在Windows Phone也是如此。或者你也可以使用ListView配合定制的包装列表视图面板(可以使你自己编写的或下载来的),不过需要做适当的虚拟化。”
因此在Windows Phone 8.1和Windows 8.1平台上使用GridView时需要保证一致。添加十几个带有图片的条目后性能便开始明显受到影响。灰色占位符就会出现而且最重要的是它总是不会消失。如果不附带图片,在GridView中增加300项左右的纯文本内容,滚动的时候灰色占位符又开始出现。
总结
最后,外媒总结了本次引文评论,表示撰写本文的目的并不是要攻击微软,只是希望更加清楚的解释“为什么开发者目前仍然不愿意转向通用应用”。他们从亲身的实践经验中获知,这目前绝对还不是一个更好的方法,Windows Phone更是深知在一些地方升级而在另外一些地方又降级的滋味。
如果微软真正想吸引开发者,他们需要比现在付诸更快的行动,而不是再用“很快”和“在未来几个月”这类官方辞来吸引这些以开发应用为生的开发者,因为他们不可能会把未来压在“很快”上。值得庆幸的是,目前诸多迹象正在表明这种糟糕的情况有可能会改变。
WP8.1 GDR1带来了一些新的API,而且传闻WP 8.1 GDR2将允许开发者创建新的酷炫应用。微软可能会在不久的未来做出更大的改变,这显然是令人欣喜的。虽然许多开发者目前正在被鼓励开发通用应用,但相信未来他们将会变为主动出击。