为什么vivo会成为安卓系统生态当中最激进的手机厂商
2898
手机 2019-03-25 16:48:16 字数:3110

为什么vivo会“突然”成为安卓系统生态当中最激进的手机厂商?每年一次的科技大秀谷歌I/O大会如约举行,安卓系统的升级演进依然是最受关注的重头戏。不出所料,谷歌推出了安卓系统最新的升级版本安卓9.0——AndroidP。


0.jpg


这一版本的AndroidP将谷歌Tensorflow工具嵌入其中,大幅度提升了Android系统的端云协调机制,在AI功能日益重要的当下,AndroidP的这些升级意义非凡。


为什么vivo会成为安卓系统生态当中最激进的手机厂商


最出乎外界意料的是,此次首发AndroidP的手机厂商是在安卓系统升级方面一贯风格“稳健”的vivo。vivo时下热销主力机型X21,成为全球首批搭载AndroidP开发者预览版本的智能手机,X21以这种形式出现在了这次的谷歌 I/O大会的会场。此外,谷歌还将会向开发者提供vivo联合高通适配的AndroidP板级支持包(BSP)为开发者提供开发便利。

I/O大会上vivo的表现非常积极,这一策略其实与vivo在硬件方面追求引领的策略一致,过去一年当中,vivo率先在全面屏、屏幕指纹等硬件功能方面不断发力引领。

在率先推出AndroidP开发者预览版本之前,vivoX21已经是最先应用Android8.1系统的手机之一。vivo VP周围透露,接下来,vivo希望能引领、助推安卓兼容性升级,vivo会成为安卓系统升级中最积极的手机厂商。在激进策略的背后,是vivo在面临日益增长的安卓应用稳定性和兼容性生态难题时,步步求解的过程。

上万个APP的“炼狱”

据统计发现,2016年当中,vivo手机用户85%的使用异常发生在第三方应用使用场景。2017年当中,vivo手机用户投诉案例当中,绝大多数亦来自于第三方应用的问题。提高安卓生态的兼容性成为了vivo面临的重要课题。

与业内多数同行一样,vivo此前也是使用外部服务商的测试平台服务。但是,随着vivo越来越多开始追求在软硬件方面的产品创新,外部服务商已经无法满足vivo在研机型保密性,以及测试效果、测试效率等方面的要求。

vivo对于应用软件稳定的要求标准是:排名前10000的应用中,至少有90%的应用要通过vivo的兼容性测试。这样一个水准要求,通常也意味着vivo必须被动等待谷歌以及安卓生态的应用开发者们逐渐适配完善,这也势必影响到系统更新升级的速度。另一方面,随着销量、市场份额逐步提升,vivo已经不甘于这样的跟随策略,开始主动去帮助安卓社区解决兼容性问题。

2017年9月,vivo在深圳成立了自己的测试实验室,规模上是国内最大平台之一。在这样一个云测平台上,有几千台机器24小时测试各种应用,这个云测平台的测试能力,在异常拦截率指标上已经远远超过了外部服务商。

在vivo云测平台上,每周都有上万例应用在做测试,相关的测试结果不但反馈给应用开发商们,也会反馈给谷歌、高通和MTK这些系统以及平台厂商,成为他们升级改进的重要依据。

在自建的大规模云测平台帮助之下,vivo成为了中国第一批更新使用Android 8.1系统的手机厂商,在使用异形屏幕的前提下,依然保证了排名靠前的10000个应用当中的90%能够满足兼容性的要求。为此,vivo还有专门的团队,负责同步那些兼容性存在问题的应用开发者,尽快做好新系统的兼容性适配。

根据这一情况,vivo团队们增加了一个专门列表,在那些下载量、日活排名前10000家的应用之外,还有一些下载、日活都不大的几千个应用,是某些地域、人群用户的刚需应用,也需要纳入日常兼容性监控,并在发现异常时推动进行适配。

铁道游击队

2017年年初开始,每隔一天,总有一批特殊的旅客,每天一早就会从深圳高铁站登上前往岳阳的高铁。这些人身后背着厚重的特殊定制背包,背包中也不是普通的行李,有若干部不同型号的智能手机插在背包当中,一排一排,码放整齐,经专门的连接线与电脑相连。

这些旅客行程的目的不是为了欣赏古岳阳、巴州美景,而是在执行vivo手机的高铁场景测试,测试vivo手机在高铁场景的应用稳定性和兼容性。从深圳到岳阳,1000公里4个小时路程,上午出发,中午抵达岳阳,下午再坐上岳阳到深圳的高铁,每隔一天就这样在深圳和岳阳之间往返来回。旅途中,这些特殊旅客背包中的手机会自动不间断地打电话,接电话,不停地上网,就像vivo用户使用手机时一样。

这些特殊旅客就是来自vivo的路测团队。一次旅程当中,所有的测试数据都会被记录监测下来。vivo网络团队会着重分析研究这些手机“通话”、“上网”过程的表现,分析其中的通话接通率,上网过程中的真实的速率。

路测团队会去排查高铁上容易产生电话掉线,影响上网速度的各种因素,再去寻找针对性解决方案。在这个路测团队组建后不久,他们便发现了一个长期影响高铁手机通话接通率的大故障。

一家国际手机芯片公司的平台方案存在设计缺陷,在高铁环境的通信信号切换过程中,会导致调制解调器的死机或复位,进而导致高铁上手机通话掉线。这一缺陷存在多年,横跨多个芯片平台,影响到的手机不只是vivo。

vivo网络团队找到芯片公司,一同设计了解决方案,使得整个高铁的通话率提升了7%,最终受益的不仅仅是vivo自己,也包括了其他的手机厂商。


为什么vivo会成为安卓系统生态当中最激进的手机厂商


这些测试团队,不只是在岳阳深圳间的高铁上巡航。全国的14个城市当中,vivo都有固定的路测团队,监测评估用户使用场景下,包括高速、隧道等,vivo手机的使用情况。

同时,vivo还有一只临时机动的团队,针对用户抱怨较多的路段、应用,临时出动,去巡航、监测,vivo会将整个过程中的应用使用,以及伪基站等问题反馈给应用开发商、运营商,甚至是警方。

周围透露,vivo测试团队的工作使得整个行业应用稳定性和兼容性以及续航能力得到了巨大的改善提升,因为兼容性问题导致的严重故障的数量和影响的范围都在大幅缩减。

拉上对手一起跑

Android官方公布的最新数据显示,2016年推出的Android 7仍是用户使用最多的安卓系统版本,占比达到了30.8%,其次是2015年推出的Android 6为26%,而此前最新Android 8的使用率仅有4.6%。

兼容性适配的问题已经影响到了谷歌安卓生态的一致性,这被视为是安卓生态的头号敌人。Android的最新版本通常都会滞后一两年才会成为市场中的主流版本,而整个Android生态中的版本也比较分散。

2017年,谷歌安卓兼容性团队就主动找到vivo,双方共同召开了一个开发者会议,决心共同去推动解决安卓系统的兼容性问题。恰在此时,vivo也一改此前在产品技术方面过于稳健的策略,无论是硬件、系统还是软件,vivo开始在软硬件领域追求创新和领先。

在推动兼容性适配以及Android P首发方面,双方一拍即合。2017年11月,几方确定,vivo将联合高通和Google一起推进Android P板级应用包的开发测试工作,确定在vivo即将上市的X21手机中,使用高通芯片平台,做Android P的开发适配。

当vivo、高通和谷歌一起将Android P的板级支持包发完成之后,谷歌预计将会在2018年的8月正式发布给其他的手机厂商以及开发者。

为什么vivo愿意做助推生态,甚至是帮助到直接竞争对手的事情?“就像两个人的长跑一样,两个人竞争不是把自己封闭起来,或者给对手设置障碍。我完全可以让你和我一起跑,在这个过程当中,会让我自己持续跑得更快。” 周围认为,“vivo如果把某项技术率先规范开放出来,看似便利了竞争对手,其实更多的是便利了整个行业,整个生态”。


2898站长资源平台网站排行榜:http://www.2898.com/ranklist.htm


0人参与回答
  • 未添加任何数据~~


提示信息

联系电话:
1585150508*
QQ交谈:
小编
站长微信:
站长邮箱: service@qingjiuzhubei.com
264.64msRequest Duration2MBMemory UsageGET zixun/detail/{id?}.htmlRouteAuth status
    • Booting (8.95ms)
    • Application (257.56ms)
      6 templates were rendered
      • site.zixun.detail (resources/views/site/zixun/detail.blade.php)8blade
        Params
        0
        prevArticle
        1
        nextArticle
        2
        newDetail
        3
        comment
        4
        hotnews
        5
        t
        6
        d
        7
        k
      • layouts.site.layout (resources/views/layouts/site/layout.blade.php)18blade
        Params
        0
        obLevel
        1
        __env
        2
        app
        3
        device
        4
        isMobile
        5
        errors
        6
        prevArticle
        7
        nextArticle
        8
        newDetail
        9
        comment
        10
        hotnews
        11
        t
        12
        d
        13
        k
        14
        __empty_1
        15
        __currentLoopData
        16
        loop
        17
        hotnewsVal
      • layouts.site.top (resources/views/layouts/site/top.blade.php)18blade
        Params
        0
        obLevel
        1
        __env
        2
        app
        3
        device
        4
        isMobile
        5
        errors
        6
        prevArticle
        7
        nextArticle
        8
        newDetail
        9
        comment
        10
        hotnews
        11
        t
        12
        d
        13
        k
        14
        __empty_1
        15
        __currentLoopData
        16
        loop
        17
        hotnewsVal
      • layouts.site.bottom (resources/views/layouts/site/bottom.blade.php)18blade
        Params
        0
        obLevel
        1
        __env
        2
        app
        3
        device
        4
        isMobile
        5
        errors
        6
        prevArticle
        7
        nextArticle
        8
        newDetail
        9
        comment
        10
        hotnews
        11
        t
        12
        d
        13
        k
        14
        __empty_1
        15
        __currentLoopData
        16
        loop
        17
        hotnewsVal
      • common.upgrade_vip (resources/views/common/upgrade_vip.blade.php)18blade
        Params
        0
        obLevel
        1
        __env
        2
        app
        3
        device
        4
        isMobile
        5
        errors
        6
        prevArticle
        7
        nextArticle
        8
        newDetail
        9
        comment
        10
        hotnews
        11
        t
        12
        d
        13
        k
        14
        __empty_1
        15
        __currentLoopData
        16
        loop
        17
        hotnewsVal
      • kefu.kefu (resources/views/kefu/kefu.blade.php)18blade
        Params
        0
        obLevel
        1
        __env
        2
        app
        3
        device
        4
        isMobile
        5
        errors
        6
        prevArticle
        7
        nextArticle
        8
        newDetail
        9
        comment
        10
        hotnews
        11
        t
        12
        d
        13
        k
        14
        __empty_1
        15
        __currentLoopData
        16
        loop
        17
        hotnewsVal
      uri
      GET zixun/detail/{id?}.html
      middleware
      web
      controller
      App\Http\Controllers\Site\ZixunController@detail
      namespace
      App\Http\Controllers
      prefix
      /zixun
      where
      as
      zixunDetail
      file
      app/Http/Controllers/Site/ZixunController.php:105-132
      7 statements were executed243.4ms
      • select * from `news` where `news`.`id` = '31325' and `news`.`deleted_at` is null limit 11.66ms/app/Http/Controllers/Site/ZixunController.php:109zzshuju
        Metadata
        Bindings
        • 0. 31325
        Hints
        • Use SELECT * only if you need all columns from table
        • LIMIT without ORDER BY causes non-deterministic results, depending on the query execution plan
        Backtrace
        • 14. /app/Http/Controllers/Site/ZixunController.php:109
        • 22. /vendor/silber/page-cache/src/Middleware/CacheResponse.php:38
        • 56. /public/index.php:53
      • select * from `new_cates` where `new_cates`.`id` in ('47') and `new_cates`.`deleted_at` is null410μs/app/Http/Controllers/Site/ZixunController.php:109zzshuju
        Metadata
        Bindings
        • 0. 47
        Hints
        • Use SELECT * only if you need all columns from table
        Backtrace
        • 19. /app/Http/Controllers/Site/ZixunController.php:109
        • 27. /vendor/silber/page-cache/src/Middleware/CacheResponse.php:38
        • 61. /public/index.php:53
      • select * from `news` where `news`.`deleted_at` is null order by `browse` desc limit 10232.75ms/app/Http/Controllers/Site/ZixunController.php:110zzshuju
        Metadata
        Hints
        • Use SELECT * only if you need all columns from table
        Backtrace
        • 12. /app/Http/Controllers/Site/ZixunController.php:110
        • 20. /vendor/silber/page-cache/src/Middleware/CacheResponse.php:38
        • 54. /public/index.php:53
      • update `news` set `browse` = `browse` + 1, `updated_at` = '2025-05-14 17:09:25' where `id` = '31325' and `news`.`deleted_at` is null6.42ms/app/Http/Model/News/News.php:170zzshuju
        Metadata
        Bindings
        • 0. 2025-05-14 17:09:25
        • 1. 31325
        Backtrace
        • 12. /app/Http/Model/News/News.php:170
        • 13. /app/Http/Controllers/Site/ZixunController.php:111
        • 21. /vendor/silber/page-cache/src/Middleware/CacheResponse.php:38
        • 55. /public/index.php:53
      • select * from `news` where `id` < '31325' and `newscate_id` = '47' and `news`.`deleted_at` is null order by `id` desc limit 1910μs/app/Http/Controllers/Site/ZixunController.php:115zzshuju
        Metadata
        Bindings
        • 0. 31325
        • 1. 47
        Hints
        • Use SELECT * only if you need all columns from table
        Backtrace
        • 13. /app/Http/Controllers/Site/ZixunController.php:115
        • 21. /vendor/silber/page-cache/src/Middleware/CacheResponse.php:38
        • 55. /public/index.php:53
      • select * from `news` where `id` > '31325' and `newscate_id` = '47' and `news`.`deleted_at` is null order by `id` asc limit 1730μs/app/Http/Controllers/Site/ZixunController.php:116zzshuju
        Metadata
        Bindings
        • 0. 31325
        • 1. 47
        Hints
        • Use SELECT * only if you need all columns from table
        Backtrace
        • 13. /app/Http/Controllers/Site/ZixunController.php:116
        • 21. /vendor/silber/page-cache/src/Middleware/CacheResponse.php:38
        • 55. /public/index.php:53
      • select * from `comments` where `news_id` = '31325'520μs/app/Http/Controllers/Site/ZixunController.php:117zzshuju
        Metadata
        Bindings
        • 0. 31325
        Hints
        • Use SELECT * only if you need all columns from table
        Backtrace
        • 12. /app/Http/Controllers/Site/ZixunController.php:117
        • 20. /vendor/silber/page-cache/src/Middleware/CacheResponse.php:38
        • 54. /public/index.php:53
        web
        array:2 [ "name" => "Guest" "user" => array:1 [ "guest" => true ] ]
        api
        array:2 [ "name" => "Guest" "user" => array:1 [ "guest" => true ] ]
          _token
          xmfTCtyxiHm8EH2BwFEDkxOGqiQdWvtGQHysr35r
          _previous
          array:1 [ "url" => "http://data.winndoo.cn/zixun/detail/31325.html" ]
          PHPDEBUGBAR_STACK_DATA
          []
          format
          html
          content_type
          text/html; charset=UTF-8
          status_text
          OK
          status_code
          200
          request_query
          []
          request_request
          []
          request_headers
          array:10 [ "accept-encoding" => array:1 [ 0 => "gzip, deflate" ] "accept" => array:1 [ ...
          request_server
          array:33 [ "USER" => "apache" "HOME" => "/usr/share/httpd" "HTTP_ACCEPT_ENCODING" => "gzip, de...
          request_cookies
          []
          response_headers
          array:5 [ "cache-control" => array:1 [ 0 => "no-cache, private" ] "date" => array:1 [ ...
          path_info
          /zixun/detail/31325.html
          session_attributes
          array:3 [ "_token" => "xmfTCtyxiHm8EH2BwFEDkxOGqiQdWvtGQHysr35r" "_previous" => array:1 [ "u...