据一份泄露的内部文档显示,谷歌计划推出新的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. Getsystime()与Getlocaltime()函数 相差8个小时

    转自 http://xujinzeng.blog.163.com/blog/static/260083420086114747452/ 今天看一个有关时间的例程,发现Getsystime()与Getl ...

  2. ISO 18000-6c 访问标签--应用程序访问操作ISO 18000-6C标签的方法

    标签访问操作包含三部分: 1.标签选择.某些场景,应用程序只对特定的标签进行操作,Indy Host Library可以指定标签选择条件. 2.执行盘存操作.上报单化后标签EPC区的数据. 3.标签单 ...

  3. EasyDSS流媒体服务器Linux emerg getpwnam("xxx") failed解决办法

    本文转自EasyDarwin开源团队Alex的博客:http://blog.csdn.net/cai6811376/article/details/73770943 EasyDSS 流媒体服务器是什么 ...

  4. Python中基本的读文件和简单数据处理

    Python中基本的读文件和简单数据处理 暂无评论 DataQuest上面的免费课程(本文是Python基础课程部分),里面有些很基础的东西(csv文件读,字符串预处理等),发在这里做记录.涉及下面六 ...

  5. $.ajax 的速度要快于 angular 里 $http (个别情况)

    $.ajax: $http:

  6. MPI 学习

    一.编译MPI mpic++ test.cc -o test 二.启动MPI mpiexec -np 10 ./test 三.几个例子 第一个进程向第二个发一个数,第二个进程向第三个进程发送一个数.. ...

  7. from 验证

    /* 新版的页面控件值验证 @element 要验证的范围对象 @isValiMust 是否需要验证必填(临时保存的时候就不需要验证必填) @isByName 是否依赖name寻找控件 @return ...

  8. rem自适应原理

    rem自适应原理 rem是根据html的font-size大小来变化,正是基于这个出发,我们可以在每一个设备下根据设备的宽度设置对应的html字号,从而实现了自适应布局.更多介绍请看这篇文章:rem是 ...

  9. oracle数据库存储过程分页

    CREATE OR REPLACE PROCEDURE prc_query (p_tableName in varchar2, --表名 p_columnNames in varchar2, --字段 ...

  10. Unit05: WEB项目的开发模式 、转发 和 Unit09: EL、JSTL

    Unit05: WEB项目的开发模式 .转发   和  Unit09: EL.JSTL dao package dao; import java.io.Serializable; import jav ...