为什么android刷机rom不能通用?求解

 我来答
松岛枫啊啊131
2013-10-30 · TA获得超过109个赞
知道答主
回答量:133
采纳率:0%
帮助的人:141万
展开全部
处女答。非专业人士,有疑问有错误请指正。:P
一句话答案就是:硬件不同。
Android ROM 不通刷的原因显然是因为硬件的不同,而不同的硬件需要不同的驱动。驱动在 Android 内核中,通常由硬件商提供,转交 OEM 集成优化。这些驱动并未提交到主流 Linux 内核中,一是因为代码量巨大(想象一下市面上有多少家多少代手机设备硬件);二是因为主流内核接纳周期长(Google 为 Android 开发的代码至今仍在 staging 中)。所以在内核 GPL 协议的约束下,OEM 都选择单独发布适配具体机型的内核源代码。另外,各 OEM 商所采用的 bootloader 都各不相同,加载内核的基址即使出自同一家也不相同。很不幸,基址是在内核中写死的。所以如果刷了不同设备的内核镜像,你有 99% 的把握启动不了你的 Android 设备。xD
因为主板及各大附属硬件驱动实现不同,所以系统对应的抽象层驱动(即 HAL,用于用户空间与内核通讯,向内核申请资源等)也就不得不不同了。但关于 HAL 在不同版本的 Android 文档都有框架描述,即该 HAL 要实现什么接口,达到怎样的要求等。所以 HAL 代码结构大致都一样,细节不同而已。但 HAL 与内核联系紧密,也是不能通刷的。
而与硬件无关的部分(比如 dalvik 虚拟机或 frameworks 以及你能看到的 packages),除了一些优化或尺寸调整外,大体上是通用的。
所谓“先装系统后装驱动”的模式,据我所知,还没诞生呢。虽然 PC 上的硬件也有不同,但系统内核对硬件的驱动都有集成。PC 上的硬件发展时间长,相对稳定。就主流 Linux 内核而言,占多数代码量的驱动大多是为 PC 机而写,包括主板/处理器/显卡/声卡等。而 Android 嵌入式设备硬件更新换代过于迅猛,主流内核没办法“消化”,所以至今也未形成大一统的美好局面,而且也没有这个趋势。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式