仔细了解发现,WinPhone的音频架构是非常完善的,实现音量控制的分离是非常容易的一件事情。WinPhone的音频APIs是通用音频架构UAA的一套API,可以独立处理每个进程下的音频API请求,也就是说每个应用的音量都可以单独控制。这么牛逼的架构,微软却一直不在其基础上实现单独调节音量,如果不是官僚主义,就是完全对用户需求的漠视。
图:高手发的音频架构图
还有一些像屏幕旋转、没有桌面文件夹我就不一一列举了,随便一个功能的推出时间都被 IOS 和 Android 甩开好几年。
微软对开发者的“虐待”
这里我用了“虐待”这个词,可能很多人觉得有点过头,但是这是我真实的感受。没有一家厂商敢这么儿戏的对待开发者,没有一家平台会如此频繁的变更架构。
微软的C#语言是一个非常容易入门的语言,Visual Studio 也是一个很好很强大的工具,加上微软的号召力,所以在中国有非常庞大的C#程序员,规模甚至可以和Java相比。所以在WinPhone刚发布时,有很多像我一样的 C# 程序员希望搭上WinPhone的顺风车,当时的个人开发者数量其实并不少。WinPhone 7 的应用基于Silverlight for Windows Phone(普通应用) 和XNA (游戏应用)开发,虽然微软开放的API比较少,但是还是有不少个人开发者或者团队出了不少不错的应用,也出现了一些以WinPhone为主的游戏分发公司。同时微软也时不时的举办开发者活动,虽然收集了很多垃圾应用,但是客观上还是增加了应用的数量。这段时期WinPhone的生态正在慢慢建立,并且有着向好的方向发展的趋势。
当微软宣布退出WinPhone 8,抛弃WinPhone 7时,顺便也大幅修改了API,增加了Windows Phone Runtime,也支持了C++的开发。这个时候其实微软已经有将WinPhone和Windows的开发模式合并的想法了,但是可能是时间不够,这个时候并没有完全的统一,给WinPhone的Windows Phone Runtime也是Windows Runtime的大幅度严格版本。对于普通应用来说,这期的版本变化不大,都是基于Silverlight的,迁移时稍作修改即可。但是对于游戏应用,WinPhone 8支持Native的DirectX开发,所以WP7的游戏开发者基本抛弃了xna,这个的一直工作量还是有点的。
对于开发者来说,真正大的改变是WinPhone 8.1的发布,这时候微软统一了WinPhone和Windows 的开发架构,推出了新的基于Windows Runtime的所谓Universal App,当然同时也保留了之前的Silverlight,只是升级到了Silverlight 8.1,不过所有人都能看得出来Windows Runtime app才是未来。但是既然Windows Runtime是未来,竟然不支持部分Sliverlight 的API,比如VOIP、锁屏、相机启动器。而WinPhone 8.1的Windows Runtime 和 WinPhone 8有多大区别呢,下面是其他开发者列举的几条:
还有很多没有列举,所以如果需要移植的话几乎要重写和系统交互的部分。这也就是为什么到目前为止很多开发者都没有升级为Universal App的原因。
上面每一次的改变都会流失一部分开发者,这让本身优秀开发者就不多的平台渐渐的失去了崛起的基础。当然还有一部分死忠仍然在坚守,压死他们的最后一根稻草是兼容IOS和Android。微软这样的举措事实上和之前黑莓公司宣布兼容安卓软件一样,已经承认了WinPhone生态系统的失败,也就意味着放弃了此前一直坚守的WinPhone开发者。目前我所知道的WinPhone开发者几乎都是在抱怨,因为他们发现,就算现在继续坚持下去,到最后依然会被微软抛弃。所以我加入的几个Winphone开发者群几乎都是在闲聊和各种段子,偶尔有个技术问题出来,也是半天没人讨论,一段时间下来,QQ表情倒是收集了不少。