据一份泄露的内部文档显示,谷歌计划推出新的Android版本及设备审批条例,限制硬件制造商推出Android 4.4 KitKat以下的旧版本硬件,来改变平台碎片化现象。如果厂商一意孤行,继续推出搭载老旧系统的设备,将被限制访问谷歌地图、商店等核心服务。

Android 4.4 KitKat覆盖率不佳

在新的审批条例中,谷歌将在新版Android系统推出9个月后关闭上一版本的授权。如果一个硬件厂商试图发售一款搭载旧版本的Android设备,那么用户将无法使用谷歌地图、Gmail、商店等服务。

那么谷歌为什么要这样做呢?显然是平台的碎片化问题日益严重。根据最新数据统计,目前市场中搭载Android 4.4版本的机型仅为2%,大约60%的机型仍为某种版本的Jelly Bean,更令人担心的是还有约20%的机型运行十分老旧的Android 2.3、2.2版本。

相比之下,苹果iOS 7目前已经获得了超过了80%的覆盖率,即便是很多iPhone 4用户,也都选择了升级。

显然,Android的高度开放性是一把双刃剑,在运行硬件厂商自定义ROM、添加独家服务的同时,也引来了软件版本升级困难、忽略官方更新的弊端。事实上,目前一些手机厂商推出的新款低端Android手机,依然运行非最新版本的系统,让用户难以获得最佳使用体验。

解决碎片化问题面临的困难

首先,大部分硬件厂商为了推广自家的服务体验,都对原生Android系统进行了巨大的修改,加入自家界面、软件服务等多种内容,同时,运营商定制机型会在这个基础上,继续添加新的运营商软件,一款原生Android机型要经过两次修改才能上市,花费的时间和精力显然是很多的,而苹果的iOS和微软Windows Phone由于对系统高度的限制,便不存在此类问题。

另外一个问题则是升级对厂商的价值。虽然用户肯定希望自己的手机能够一直使用最新的系统,但是硬件厂商需要考虑升级成本、新机型推广等多种问题,显然为了扩大销售利润,新款手机更值得企业投入更多资源。

目前,一款智能手机的平均寿命为一年左右,通常苹果iPhone可以获得两次重大更新(当然,iPhone 4升级iOS 7功能有所阉割、速度较慢),而Android手机平均的重大更新次数在一次以下。比如去年三星的旗舰手机Galaxy S4,上市之初搭载Android 4.2系统,而在Gear智能手表推出之后,才升级至4.3,4.4版本仍悬而未决。旗舰机型尚且如此,一些二三线手机厂商的低端机型,自上市至停产可能一次升级都无法实现。

碎片化影响Android品牌吸引力

对于谷歌来说,Android碎片化显然是一个令人头疼的问题,不仅仅是硬件厂商的界面和服务分裂了Android的整体性体验,甚至影响了Android的品牌发展。比如,三星、索尼的用户都不知道自己使用的是Android手机,厂商也仅在发布时宣传自家的界面而忽略Android,从长远来看,这对于谷歌来说是十分不利的。

同样不满的还有软件开发者。碎片化的系统分布让软件厂商疲于应对,需要耗费大量资源应对应用和游戏的多设备兼容性。同时,Android平台的盈利能力本就不如iOS,碎片化问题也让更多软件厂商倾向于在iOS率先发售游戏大作或是独占应用。

显然,谷歌要做得不仅仅是强制硬件厂商使用新版系统,还需要在很多方面对其进行辅助。比如推出更易用的系统开发工具、优化开发环境等等,平衡硬件厂商、软件开发商及自身的利益,同时尽力解决碎片化问题,才能解决隐患、让Android获得更长远的发展。

谷歌强制厂商升级KitKat 仍无法改善安卓碎片化的更多相关文章

  1. android.os.NetworkOnMainThreadException 在4.0之后谷歌强制要求连接网络不能在主线程进行访问

    谷歌在4.0系统以后就禁止在主线程中进行网络访问了,原因是: 主线程是负责UI的响应,如果在主线程进行网络访问,超过5秒的话就会引发强制关闭, 所以这种耗时的操作不能放在主线程里.放在子线程里,而子线 ...

  2. Gitlab 安装、升级、备份、恢复、汉化等

    一.Gitlab安装 1. 基于yum方式安装Gitlab 安装步骤如下 (1)配置yum源 # vim /etc/yum.repos.d/gitlab-ce.repo (2)复制如下内容并保存(注意 ...

  3. Nexus 5完全拆解

    Nexus 5,由LG制造,配备高通骁龙四核处理器,4.95英寸1080P显示屏,支持4G LTE,运行最新的Android 4.4 KitKat原生操作系统.国外著名拆解网站iFixit第一时间带来 ...

  4. Kubernetes 集群无损升级实践 转至元数据结尾

    一.背景 活跃的社区和广大的用户群,使 Kubernetes 仍然保持3个月一个版本的高频发布节奏.高频的版本发布带来了更多的新功能落地和 bug 及时修复,但是线上环境业务长期运行,任何变更出错都可 ...

  5. 深夜扒一扒Android的发展史

    说道,Android的发展史,我们就不得不先来了解一下手机的发展史 Android之前的时代 1831年英国的法拉第发现了电磁感应现象,麦克斯韦进一步用数学公式阐述了法拉第等人的研究成果,并把电磁感应 ...

  6. 2016iweb峰会参会总结

    2016年8月27日去国家会议中心参加iweb峰会. 8点半开始签到入场,8点20分排队签到的人已经排到另一个门口,人超级多啊. 9点一如既往的由h5女神娜姐开场. 上午场 基本是各公司的大佬们介绍各 ...

  7. Android Linker简介

    简单介绍Android linker的基础知识,基于Android 10分支. linker的作用 考虑简单的HelloWorld程序. $ tree . . |-- jni | |-- Androi ...

  8. Android与Linux内核的对应关系

    1. Android各版本和Linux版本对应关系 Android Version |API Level |Linux Kernel in AOSP ------------------------- ...

  9. 三年同行,质造未来,腾讯WeTest五大服务免费体验

    WeTest 导读 2018年10月26日,腾讯WeTest将正式迎来三周岁生日.三周年庆典期间,只要在WeTest平台注册的用户,均可免费体验标准兼容.云真机.压测大师.手游安全扫描.应用安全扫描等 ...

随机推荐

  1. 【PL/SQL编程】变量和常量

    1. 变量格式 <变量名><数据类型>[(长度):=<初始值>]; v_countryname varchar2(50):='中国'; 2. 常量格式 <常量 ...

  2. Tomcat 环境安装

    本文以Tmcat 7版本在Windows Server 2012 64位系统下安装讲解,JAVA环境安装配置参见:http://www.cnblogs.com/fklin/p/6670760.html ...

  3. css移动元素的几种方法

    一.当然是元素设定为postion: absolute, 然后控制 left, top 位置 二.元素增加overflow属性,然后设置元素的scrollLeft, scrollRight当做滚动条来 ...

  4. python中类变量,成员变量

    参考文献:http://www.jb51.net/article/54286.htm 转载.引用请附上参考文献的链接. (1)位置的区别 先看看下面这段代码: class TestClass(obje ...

  5. EP-N8530S USB WIFI 驱动移植

    /*********************************************************************** * EP-N8530S USB WIFI 驱动移植 * ...

  6. Atcoder Beginner Contest 118

    A: B +/- A 签到题. B: Foods Loved by Everyone 签到题. C: Monsters Battle Royale 怪物的血量一直两两相减,类似于辗转相减法. 可以证明 ...

  7. BZOJ2154 Crash的数字表格 【莫比乌斯反演】

    BZOJ2154 Crash的数字表格 Description 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a和b,LCM(a, b) ...

  8. MAC OS环境下搭建基于Python语言的appium自动化测试环境

    #1 安装JDK java -version #2 下载SDK http://adt.android-studio.org/ 下载adt #3 配置sdk环境变量 打开终端,依次输入命令 vim .b ...

  9. mfc 鼠标、键盘响应事件

    一.基本目标 1.有一个基本的MFC程序,点击“关闭”则“关闭”这个程序,这点没什么好讲的,把自带的“取消”按钮,右键->属性的Caption改成“关闭”二字就可以了 2.鼠标在对话框中移动,则 ...

  10. Java--数组转成list,list转数组

    数组转成list: 方法一: String[] userid = {"aa","bb","cc"}; List<String> ...