毫无疑问,XDA用户熟悉Android上关于手机更新延迟的常见抱怨。通常会看到用户急切地等待最新的安全更新以保护他们免受Stagefright之类的威胁,或者等待下一次修订要修复一些AOSP错误。而且,大约每年一次,用户等待发现自己心爱的设备是否将获得到下一个主要版本的Android的主要版本升级(当前示例为Marshmallow)。
虽然主要的OEM厂商应宣布每月的安全更新(通过运营商协议并协助加快进展)来解决第一种(也可能是第二种)更新,但最后一种更新仍然是一个挑战。想要发布更好的方法,进行重大更新是一场噩梦。让我们看看为什么会这样。
重大变化
第一点很可能在评论中引起明显的分歧和愤怒,但必须说,因为这实际上是最大的因素之一。Android的主要版本经常会发生很大变化。实际上,原始设备制造商和运营商对于发布更新感到不满意。查看Android从2.3版本升级到4.0,然后从4.0版本升级到4.4的过程。最后,看看从4.4到5.0和5.1的进展。我们正在为用户谈论相当重要的用户体验更改。
尽管XDA用户渴望尽快获得最新更改,并尝试(并批判)最新的UI更改,但不幸的是,这对于运营商和OEM来说是一个主要问题。他们面向客户的支持团队需要更新的脚本(是的,正如您现在可能已经猜到的那样,您在电话上与之交谈的任何人通常都不熟悉听筒,而只是从脚本中读取内容)。
“客户支持是一项大业务,需要花费时间来构建新脚本并对其进行测试”
这些支持的脚本和过程需要更新。客户支持是一项大业务,需要花费时间来构建新脚本并对其进行测试,以确保即使是最不熟练的用户也可以理解通过电话给出的说明。
这个“任何”钥匙在哪里?
想象这的最好方法是考虑一下您尝试通过电话提供相对IT支持的时间–您告诉他们按“开始”,他们说他们看不到开始按钮。您和我都知道“开始”是左下角的按钮,但是现在并没有,因为现在缺少了文本“开始”。同样,当您告诉他们按“任何键”时,他们走了大约一分钟,只是说他们找不到“ 任何键 ”。
考虑到Android中最近UI范式的变化(进入Holo,然后从Holo转向Material),这意味着需要大量的客户支持更改。在发布更新之前,需要完成并测试完整的支持文档。
这会花费时间并花费金钱–仅不发布更新或计划设备仅接收单个更新通常会更便宜。
如果Google正确设置用户界面,对其进行全面测试,征求反馈意见然后停止更改它,那么对于希望更新手机的运营商和OEM厂商将是真正的帮助。但是,如果情况一直在变化,那么总会有人不愿推出重大更新。如果发生重大变化,OEM经常需要修改AOSP以恢复以前的行为。看一下每个OEM如何修改Android 5.0批量系统,以避免用户丢失“静音模式”功能。普通用户并不关心支持或反对它的理由–他们只是希望手机在进行此更新之前,今天能像昨天一样工作。因此,对Android进行的重大更改使更新发布的可能性降低,因为这意味着需要更多的工程来“修复”损坏的用户界面或用户体验更改。
如果情况不断变化,总会有人不愿推出重大更新。
因此,是的,如果您正在阅读Google,那么如果您能够获得并坚持使用UX范例,那将是一个很大的帮助。多年来,iOS几乎没有改变,但Android似乎无法适应超过一两年的要求。对于喜欢不断变化的人来说真棒,而对于OEM和运营商所迎合的普通用户而言,真棒。
硬件支援
Android的每个主要发行版都支持一些新硬件。这几乎是既定的-每年约有主要版本发布,上一年OEM不可避免地会使用他们自己的API添加一些硬件。为了减少这种分散,Google倾向于将此功能引入核心的Android API。其中的一些示例包括低功耗蓝牙(BLE),最初由供应商特定的API支持,而Android 4.3 带来了跨供应商的API支持。
20150824143905697同样,Android 5.0 添加了对OpenGL ES 3.1的支持,新的Camera2硬件API,以及一些新的媒体和音频处理支持。它还增加了对检测其他硬件功能的支持,例如经过验证的启动,环境温度和湿度以及用户的心律。
Android 5.1 添加了对设备上多个SIM卡的支持以及许多运营商集成服务。虽然没有5.0那么大,但请记住5.1是一个较小的更新。
不过,在Android 6.0中,我们将看到API中加入了指纹身份验证支持,因此设备可以通过指纹对用户进行身份验证,并将其他应用程序中的指纹用作标准身份验证方式。还有大量语音交互代码,可与硬件集成并与用户建立对话式语音服务。还通过API支持蓝牙触控笔,并且对BLE扫描进行了调整以节省功耗。还支持4K显示器,并且更改了许多音频协议,以与专用音频硬件和MIDI设备接口。(最终)有一个特定的API用于设备的手电筒/手电筒,以及相机模块上的相机图像重新处理。
ew 好多啊。这些对API的重大更改的问题在于,OEM和运营商需要开发和测试更多的工作量。听起来像在扫描过程中对BLE节能进行小的更改,将需要进行一些详尽的测试,以确保不引入回归。通过Android API添加指纹支持意味着三星(以及已经发布了带有指纹读取器的其他任何人)将(很好,应该)围绕这个新API重写其支持,并确保该API与驱动程序保持良好的联系,并更新其驱动程序与这些新API交互的userland软件。
那是工作量。对于不再是您优先考虑的设备。遗憾的是,您可能会不同意,已发布的任何电话都不再是供应商或OEM的优先级–他们的工程部门已经在努力开发下一个产品,并通过与上次完全相同的流程来尝试在发布前清除尽可能多的错误。将其扩展到像三星这样的公司(可能带有一种“旗舰”设备的18种变体,以满足每个美国运营商对消费者压迫的异想天开))。而且我们甚至还没有开始谈论中档设备(它们仍然是新产品,例如其J-range)。然后我们有了音符范围,边缘范围和边缘+。以及针对发展中市场的核心产品系列。及其“微型”变体。以及“主动”旗舰衍生产品系列。我想你应该已经明白了…
是谁的错
哈尔
戴夫,不能让你更新它。
在这一点上,您完全有资格质疑本文的标题,并说应归咎于OEM释放过多的设备。这绝对是一个因素。但在此之下,我们应该考虑定制ROM可以实现的目标–一群专门的业余爱好者通过使用更明智的产品开发方法来管理大量设备的固件,使它们在每个手机上都运行相同的代码,并且最小化为了使某些内容在设备上运行而需要进行的更改。
我们可能会看到OEM这样做吗?不……直到地狱冻结为止–这将阻碍产品在软件功能方面的差异化,这意味着“新”功能可能会在下一个产品发布之前在现有设备上看到。
但是,原始设备制造商也面临着挑战-当出现新的主要版本时,每个人都急于重新同步其代码,并合并他们所做的任何更改,而Google在AOSP中是没有的。然后,由于硬件更改,任何操作均无效。尽管没有太多关于此的公开信息,但是由于它是PDK或平台开发工具包的一部分,因此仅开放手握式联盟(OHA)的合作伙伴可以使用。Google会在PDK上宣布对硬件支持和驱动程序的更改,这些更改需要与基础硬件抽象层(HAL)的更改相匹配。
抽象?
抽象的目的是使通用(标准化)接口可用于其他对象。我们在现实生活中每天都看到抽象-抽象使我们能够了解“为某物付费”的概念,并有多种支付方式。我们正在完成相同的基础任务,但是我们认识到它以不同的方式发生。我们围绕其制定一般任务和政策(离开商店前付款),独立于付款方式(现金,支票,借记卡,信用卡,NFC非接触式)。这意味着,当出现一种新的支付技术时,我们都已经了解“支付”的工作原理,并且只需添加一种新型的支付方式即可。
哈尔Android同样,HAL对硬件及其驱动程序执行此操作。创建HAL并不是处理每个不同的相机模块打开闪光灯LED以获得手电筒/手电筒功能的方式。该HAL是面向外部接口的定义(即,公开一个带有1个整数参数(即Flash状态)的函数。将0表示关闭Flash,1表示打开Flash)。这比Android操作系统需要直接向相机模块直接发送I2C命令的负载要小,在Android模块中,该命令对于特定型号的每个特定制造版本都是唯一的-某些设备具有不同的相机模块版本,因此三星的18 “每部手机的型号”可耻!哎呀,同一型号上的不同硬件甚至都不是新东西!
问题在于,抽象层在Android版本之间确实会发生变化。有时明显。而且,大多数情况下,OEM无法访问驱动程序源代码,以更新公开的抽象层代码。这意味着OEM需要等待SoC(片上系统)开发人员提供的新的,更新的Blob。通常是高通公司,或者可能是联发科或英特尔。该公司总是希望为这些更新付费(因为否则他们将“免费”从事这项工作)。您最好希望您的OEM为此预算。我从经验中知道(尽管您只需要对此信任我,因为我不会透露具体细节),这是直接原因导致一些特定的手机无法获得进一步的更新-OEM没有与SoC提供商达成更新板支持包的协议,并且他们没有为此预算。这意味着没有新的板级支持驱动程序包,因此没有该设备的更新。