前段时间决定将自己用了三年多的Lumia 800正式退役,这是我用的时间最长的手机,虽然系统上有缺陷,但是好不妨碍他成为我最有感情的一部手机。由于之前是WinPhone 开发者的关系,这部手机是微软送的,眼睁睁的看着WinPhone系统从出生到长大,还没成熟时就蔫了的历程,心里很不是滋味。这篇文章先晒晒被我用过的Lumia手机,然后再分析下WinPhone发展成现在这样微软需要承担的责任。

 
先晒手机
  由于普遍反映篇幅较长,所以删去晒Lumia 800的部分,仅贴出使用过的部分WinPhone手机。
 
 
关于WinPhone
 
  首次接触WinPhone是在2011年下半年,当时刚刚毕业,没有赶上ios和android那趟船,也因为主要的工作语言是.net,所以对刚刚兴起的WinPhone寄予厚望。在开发了几个小软件,微软送了个手机后,我便以WPer自居,并且期望作为国内第一批的WinPhone开发者,享受到系统发展带来的红利。但是后来的事情大家都知道了,四年过去了,WinPhone在中国的市场份额是0.8%,甚至比三年前还要低。全球的WinPhone份额基本也就是在2%到3%之间,已经没有了和前两大系统叫板的底气。
        图:2014年手机操作系统市场份额图表
 
  作为一个WPer,对WinPhone的发展深感痛心,我们曾经幻想成为三大系统之一(虽然现在是第三,但是好意思和ios/android排一起么),而且当时的WP也的确有着成为三大系统的机会,但是微软没有抓住机会,带领着WinPhone一步步的走向没有未来的世界。。。
 
 
WinPhone系统诞生的过程
 
  很多人不知道为什么WinPhone的第一个版本,叫WinPhone 7,那是因为在WinPhone之前,微软还有个手机操作系统叫Windows Mobile,最后一个版本是Windows Mobile 6.5,所以新系统就顺势叫做WinPhone 7。当年那个Windows Mobile非常厉害,相当于Windows的手机版本,上面可以找到开始菜单,也可以玩和pc版本一致的纸牌。HTC在大陆的前身多普达则出过多款该系统的智能手机,那时候有一个Windows Mobile系统的手机是一件倍有面子的事情。
图:当年的多普达手机
 
  但是这一切都在苹果推出iPhone之后被打破,人们惊讶的发现,原来智能手机系统应该怎么玩,于是纷纷模仿起来。先是有Google的android,然后诺基亚也坐不住了,抛弃了之前的塞班 S60,和英特尔联合开发MeeGo系统。微软眼看着再没动作就要错失良机了,于是在2010年隆重推出了全新的WinPhone 7系统。还记得当时搞了个声势浩大的游行,举行葬礼宣判iPhone死刑,现在看来是多么的可笑。
    图:当时宣判iPhone死刑的游行
 
  在微软内部确定WinPhone取代Windows Mobile后,WinPhone项目就开始了。负责WinPhone 7界面的是微软的设计总监 Flora,他在WinPhone的设计上引入了Metro的设计风格,打造了在UI上完全不同于IOS和android的体验。当然对于这种设计风格褒贬不一,作为我个人的体验来说,虽然和当时主流的设计不是很相符,但是也是可接受的,当然如果你说它长得丑了点我也不反对。
图:左为WinPhone 7,又为WinPhone 8
 
  另外一个掌握了WinPhone 7生命的是微软移动设计团队主管,他主管了WinPhone 7的设计。不知道是因为时间上太紧迫还是其他方面的原因,最初版的WinPhone 7简直是个半成品。很多人可能不知道,最开始发布的WinPhone 7是完全的单任务,也就是说你每次打开一个应用都是重新加载的,无法继续你刚才的操作。因为这样的限制,微软强制要求开发者在发布程序时使用“墓碑机制”来重启时还原程序关闭前的状态,这不但降低了用户体验,也提高了应用程序的门槛。好在WinPhone 7.5就解决了这个问题,这是我印象中微软在WinPhone上动作最快的一次。还有其他的一些没有达到业界平均水平的点,深受诟病的有音量无法单独调节,重力感应不能关闭、没有文件夹、没有通知中心等等,槽点太多,无力吐槽。
  以上说的都是一些系统级别的缺陷,大部分应用级别的缺陷都可以通过第三方来解决,但是微软很多权限都没有放开,API少的可怜。所以你当时在市场上看不到流量控制的软件,也无法找到能显示来电归属地的软件,甚至找不到能显示通话记录的软件。。。
  当然刚才说的很多问题微软都在后续的版本中解决,但是这样就OK了么,你以为用户会为了通知中心等你24个月么。最好的时光已经过去,最佳的机会也已经溜走。
 
微软是如何抛弃WinPhone 7的
  相信在所有早期的WinPhone用户和开发者的记忆中,微软宣布WinPhone 7不能升级的时候是毁灭性的。我是5月份刚拿到了Lumia 800,你要知道当时的Lumia行货价格接近3000,然后6月21日,微软推出了winPhone 8,并且宣布所有WinPhone 7系统手机不能升级到WinPhone 8,取而代之的是升级到一个安慰版本——WinPhone 7.8。
图:WinPhone 7不能升级得到了铺天盖地的宣传
 
  如果是一个有经验的公司,即使在不能升级的情况下,也可以将WinPhone7.8纳入到WinPhone 8中,作为一个特殊的版本。或者说WinPhone 7可以升级到WinPhone 8,但是需要硬件和内核支持的功能不可用,这样也会让WinPhone的老用户心里舒服很多。但是微软在宣传策略上直接说明“老用户只能升级7.8,不能升级8”,完全看不出一个老牌世界500强公司应有的宣传实力。相同的一个事件是IOS 6宣布支持iPhone 3GS,虽然很多功能不能用,但是很多苹果用户都大喊苹果良心。
 
  我们再看下为什么WinPhone 7不能升级到WinPhone 8,微软给出的解释是内核的转变。WinPhone 7使用的是Windows CE内核,这是一个有着十多年的老内核,所以对硬件的支持不够,比如不支持65536色以上,不支持多核处理器、NFC等,这也就是WinPhone 7清一色的单核处理器的原因。而Windows 8使用的是Windows NT内核,他是个新开发的内核,简单点讲就是它能支持非常牛逼的硬件,是不能运行在低端的硬件之上的。但是在技术上是不是真的无法实现升级呢,当然不是,民间就有高手将HD2刷成了WinPhone 8, 并且在论坛上放出了刷机包。所以不能升级的原因是在微软看来WinPhone 7的用户和销量都比较小,不值得为这么少的用户来大费周折的推出一个定制版的WinPhone内核。只能说微软是基于商业的考虑,而并非从用户的角度来考虑升级这件事情。
 
  结合第一段WinPhone的发展过程来看,其实在内核和技术上WinPhone 7并没有比Windows Mobile高出多少,而更像是改了一个UI的系统,而WinPhone 7到WinPhone 8才是真正的改变。而微软着急推出WinPhone 7是为了一个姿态,也让用户习惯Metro UI以及App的积累,虽然不能升级,但是App反正都是托管代码,Winphone 8还是可以运行WinPhone 7的应用的。从这个角度考虑,WinPhone 7从一开始就是一个仓促推出的短期版本,也就注定了它悲剧的命运。
  微软在宣布的时机选择上也是非常重要的,当时恰逢 Lumia 系列的销量上升,并且诺基亚在大陆趁势推出了更高端的Lumia 900手机,才推出一个多月,微软就宣布老款手机不支持升级。关键还在于当时离WinPhone 8正式推出还有四个多月的时间,这四个多月诺基亚是何等的尴尬,让消费者买不能升级的Lumia,还是劝我们买两百一个的功能机呢。
 
  不管不能升级是因为系统内核的原因、成本的考虑还是其他商业上的目的,微软这样的做法完全伤透了所有使用WinPhone 7产品的用户。虽然损失的这部分用户的份额不大,但是这部分早期用户实际上会有比表面上的市场份额更大的能量。早期的WinPhone 7产品并不便宜,而且系统上不是很完善,很多使用WinPhone都是对数码产品比较熟悉的用户,他们可能是周边同事朋友购机的顾问,这部分用户对其他人有强烈的带动作用,所以损失这部分用户其实是非常可惜且影响十分恶劣的。
  另外,不能升级也会对尚未购买WinPhone 手机的用户产生影响。我在使用Lumia 800过程中,公司有不同的同事表达对这款手机的喜爱,并且有意愿购买WinPhone 手机,但是自从不能升级之后,没有一个朋友准备购买WinPhone手机,并且对使用WinPhone手机的用户或多或少表现出一点不理解的眼神。几乎所有第一次发现我使用的是WinPhone手机的朋友,问出的第一句话就是,听说这个手机不能往上升级了。
 
微软对用户需求的无视
  从WinPhone推出的第一天起,就伴随着大量的吐槽,而微软在系统改进上的速度比蜗牛还要慢。我们看几个典型的例子:
 
通知中心
  通知中心目前应该算是只能操作系统的标配,但是WinPhone却没有。所以可能会出现的场景是,有通知时在顶部一闪而过,没来得及点击后你就没法知道他通知的是什么,你永远不知道刚才是哪个应用通知了你。有些应用可能会在磁贴上有个小的数字提示有通知,但是前提是必须将这个应用固定到首页。
  那么为什么微软为什么不在WinPhone 7中就将通知中心做进去呢。微软的Metro的设计理念是动态磁贴(即Live Tiles)来实现通知中心的功能,有通知时实现通知的内容呈现在磁贴上。但是大部分应用都没有实现这样的功能,基本有消息时只会显示一个数字,没有通知的信息,如果想知道具体的内容仍然要启动应用才能看到。另外一个限制是必须固定到首页的应用才能实现动态磁贴,对于没有固定到首页的应用如果没有点中一闪而过的通知,那就没地方可以看到通知了。
  没有通知中心还有个特别不顺手的地方,无法一键开关Wifi,蓝牙、网络、GPS等功能,需要到找到设置里面的相应页面才能开关。直接的后果就是很长一段时间在微软的MarketPlace中相应的一键设置软件的下载量长期占据前十名中的好几名。
 
  微软在后期也确认将会增加通知中心,不过这已经是14年4月随着WinPhone 8.1才推出,离WinPhone的第一版已经过去了四年的时间。微软曾经给出解释称是资源不足,导致没有在WinPhone 8中搭载通知中心,但是我是不相信一个有着10万人的公司,会因为资源不足导致对市场的反应如此之慢,只能说明微软的官僚主义已经深入到骨髓。
 
音量无法单独调节
  WinPhone在相当长的时间内所有音量都只有一个值,就是说你的电话铃声和各种app的声音是一样的,无法实现铃声,应用,系统铃声音量的分开调节。在我实际的使用中,经常在玩游戏时静音,如果游戏结束时忘记把音量调回来的话,那么一整天手机都是出于静音状态,我也因此漏接过许多电话。这个问题也经过了漫长的等待之后,直到WinPhone 8 GDR3版本才修复,别问我为什么记得这么清楚,你们有过那种等待好几年终于如愿的感受么。
  仔细了解发现,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表情倒是收集了不少。
 
  对于WinPhone 10(可能就叫Win 10 Mobile)兼容IOS和Android应用的前景,我非常不看好。这种移植过来的应用本身是为其他平台设计的,交互方式和操作习惯都是其他平台的,用户体验上肯定要比原生应用差很多,所以对于移植过来的应用用户并不一定买账。而对于开发者来说,微软的这种做法已经伤透了他们的心,几乎仍然在坚持编写原生应用的开发者不多,而IOS和Android开发者,本来就看不上WinPhone的用户量,移植工具比较方便还好,如果操作比较麻烦甚至都不愿意花时间移植过来。所以极有可能造成自家开发者失望的离开,别人家的开发者反应冷淡,最后竹篮打水一场空。
 
结语
  WinPhone从2010年发布至今已经有五年的时间,版本也几经更替,曾经有着快速的发展和光明的前景,但是在微软的多次折腾下而慢慢倒下。纵观WinPhone的发展历程可以发现,几次重大的变革都是由于微软的举棋不定和动作缓慢造成的。如果最开始就坚定了大一统的理念,最开始就推出NT内核的WinPhone,最开始就坚持Windows Runtime,可能就不会有抛弃WinPhone 7,不会有开发方式的大改变,而等到生态好了,也就不大可能会兼容IOS和Android。
  虽然整篇文章是对微软的批判,但是WinPhone目前还是有机会的,机会在于Android还不够好。希望微软在新CEO的领导下,抛弃以往的官僚作风,坚持自己的风格,在后面的移动生态系统中占有自己的一席之地。
 
 
 
PS:可能想要说的话太多,写的有点乱。也没有提到单就系统来说,目前的WinPhone8.1已经是一个优秀的系统了,如果有时间的话我后面再写一篇WinPhone相比于其他两大系统的优点,以及目前比较好的应用,给准备转移到WinPhone平台的用户一些参考。
再次PS:部分是看了第三方的资料,如有错误,请指正。
 

从Lumia退役看为什么WP走向没落的更多相关文章

  1. 从Lumia退役看为什么WP走向没落(从程序员与市场开发的角度,讲的真棒!)

    http://www.cnblogs.com/zhangkai2237/p/4856880.html

  2. 【转帖】驳Jan Baan关于BPM是ERP走向没落起点的说法

    驳Jan Baan关于BPM是ERP走向没落起点的说法 Jan Bean在接受畅享网访问的时候提到“BPM是ERP走向没落的一个起点”.“BPM终将取代ERP”,让笔者这样一个在ERP行业待了接近十年 ...

  3. 经验之谈:Swing的开发工作会非常的累,而且这项技术正在走向没落。避免从事有这种特征的工作。

      经验之谈:Swing的开发工作会非常的累,而且这项技术正在走向没落.避免从事有这种特征的工作. AWT也即将被取代. Module8—Module11所使用的技术都将被JSF技术所取代. JSF是 ...

  4. Linux在中国正在走向没落

    在中国,Linux正在走向没落,一片萧条景象. 在这样的大背景下.居然有人愿意接手中科红旗,令人佩服! 在中国,没有一个关于国际Linux的官方刊物(或站点)反映国际Linux运动的真实声音.Linu ...

  5. 这些年,在wp平台打拼的日子

    最近经常胃疼,在当地的镇医院看了几次都没有改善,只好去市医院照胃镜检查,发现有胃炎,虽然是很普通和常见的毛病,但这种毛病一但沾上,就很难根治,一喝酒或者吃饭不定时.熬夜.吃酸辣冷冻等食物都容易引起复发 ...

  6. 面试官问PHP四大主流框架的优缺点,看这篇就够了!

    本篇文章我们来讲讲PHP四大框架的优缺点都有哪些,让你们在开发中更好的去选择使用哪款PHP框架去完成项目,废话不多说,我们一起来看看吧!! ThinkPHP ThinkPHP(FCS)是一个轻量级的中 ...

  7. MRCTF 2020 WP

    MRCTF 2020 WP 引言 周末趁上课之余,做了一下北邮的CTF,这里记录一下做出来的几题的WP ez_bypass 知识点:MD5强类型比较,is_numeric()函数绕过 题目源码: I ...

  8. bugkuCTFWEB部分WP

    前言 之前做的今天整理下 这个有点乱不建议大家参考我的wp 这个主要是自己看的.部分的我做的时候打不开就没写. 练手地址:https://ctf.bugku.com 矛盾 矛盾考察的是PHP弱类型首先 ...

  9. 2022第五空间-web部分wp+复盘总结

    打了一天,麻了,大佬tql,这次get到了不少东西,一是一个不太常见的宽字节注入,我是真的没想到,而且后面也是看了wp理解了好一会才弄明白. 0x01: 题目是一个登录框,但是基本上是过滤掉了所有的常 ...

随机推荐

  1. 数据库相关 sql 语句

    1.操作某数据库 use 数据库名称,然后可以操作该数据库下的某张表 2.$res=mysql_query($sql); 该语句如果用在封装的函数体里,则不用传入第二个参数$conn来指定连接,这样才 ...

  2. 线程本地存储TLS(Thread Local Storage)的原理和实现——分类和原理

    原文链接地址:http://www.cppblog.com/Tim/archive/2012/07/04/181018.html 本文为线程本地存储TLS系列之分类和原理. 一.TLS简述和分类 我们 ...

  3. 阿里云数据库RDS环境搭建

    前言 现在云数据库越来越流行,国外的亚马逊AWS微软Azure,国内的BAT和京东都推出了自己的云数据库服务,各自优劣不表,个人推荐国外的用AWS,国内的用阿里云,这是我这几天刚申请的阿里云的过程的一 ...

  4. yum命令不能使用的相关错误

    使用yum安装软件时,出现下面报错 [root@localhost ~]# yum install -y lrzszLoaded plugins: fastestmirror, securityLoa ...

  5. 第九篇 :微信公众平台开发实战Java版之如何实现自定义分享内容

    第一部分:微信JS-SDK介绍 微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包. 通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照.选图.语音.位置等手机系统 ...

  6. Spring学习笔记之 Spring IOC容器(一)之 实例化容器,创建JavaBean对象,控制Bean实例化,setter方式注入,依赖属性的注入,自动装配功能实现自动属性注入

    本节主要内容:       1.实例化Spring容器示例    2.利用Spring容器创建JavaBean对象    3.如何控制Bean实例化    4.利用Spring实现bean属性sett ...

  7. 烂泥:ubuntu中使用virt-manager图形化新建虚拟机

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 上一篇文章介绍了,如何在ubuntu下安装KVM的虚拟机管理器virt-manager,这篇文章我们来介绍,如何在图形界面下使用virt-manager ...

  8. hdu 2196 Computer(树形DP)

    Computer Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  9. 学习嵌入式Linux-选择iTOP-4412开发板

    部分视频观看地址: [视频教程]iTOP-4412开发板之学习方法--致初学者 http://v.youku.com/v_show/id_XNzQ5MDA4NzM2.html [视频教程]三星Exyn ...

  10. 学完STM32开发板,就选4412开发板让你有目标的学习嵌入式开发

    600余页用户使用手册 linux实验手册(资料不断更新)100期配套零基础高清视频教程 轻松入门 (资料不断更新)2000人售后认证群 在线支持 售后无忧 源码全开源  原厂技术资料经典学习书籍推荐 ...