详细介绍android rom移植知识普及

最近接到很多兄弟们的求助,也回答过无数个和下面这个问题类似的问题:

如何编译android 原生代码得到一个rom,然后跑到某某手机上。

鉴于很多兄弟对这块不清楚,我这里一并简单回答之。

1 ROM包含两个基本的image,一个是boot.image,这个image中主要是kernel和文件系统/目录下的一些东西。kernel我就不说了,/目录下主要是init和相关的配置文件

system.image是android系统的userpace的核心,包括/system/bin,system/lib,system/app下的一些东西。

2 手机,不同手机,其内部使用的芯片,配置等等都不同。另外,android源码中并不包含硬件相关的代码。也就是说拿标准源码编译出来的仅仅在模拟器上跑跑还可以,

拿到真机上,跑也许能跑起来,但也就把手机当个模拟器使,电话,audio,wifi等等和硬件相关的都不能用。没有什么为什么会这样,硬件相关的驱动是厂商的闭源代码,

绝对不可能放出来。 不过,android中自带一些htc/sumsing的二进制HAL层so,也是在编译对应device的时候拷贝到system.image中去的。

所以,基于上面的认识,兄弟们就不要想着拿标准源码搞出一个能正儿八经跑的rom了。除此之外,手机还有AP/BP之分,BP的代码是另外一套,相当于另外一个OS,用于

modem通信的。即使你能搞定AP,BP也不要想了

3 CM是怎么搞出来的?CM不是神仙,它的工作我估计分下面几个来完成:

1 boot.image,有可能是直接基于厂商的。例如在HTC G7移植中,直接使用了G7官方的ROM

2 system,image中,跟硬件无关的(也就是非HAL层代码),爱怎么改怎么改。

3 system.image中,跟硬件相关的,先通过adb pull把官方的so弄出来,然后放到自己的ROM中。这里的工作比较难,但理论上是可以做到二进制兼容的。

从上面可知,如果官方没有提供4.0的ROM,CM也歇菜。(我个人觉得其实是可以在4.0中使用2.3的so的,方法可以通过dlopen方式加载,中间再做一层隔离。但如果

依赖的头文件发生变化了,那工作量就大了去了)

4 MIUI,点心OS,是CM之上的二次开发。国人的拿来主义造就了MIUI和点心等其叫嚣着做ROM的公司。

综上,兄弟们不要想着凭一己之力搞个牛叉的ROM了,没必要,没意义。

1 想搞rom的,建议在CM基础上做二次开发,和硬件相关的统统都不要动。

2 想改ui的,也可以基于现有的system.image,换换图片,然后再打包成image。这个网上有很多做法。技术含量不高,玩玩可以了。

ANY WAY,谢谢兄弟们的信任。欢迎高手就上述知识点和大家argue。

详细介绍android rom移植知识普及的更多相关文章

  1. 学习笔记:APP切图那点事儿–详细介绍android和ios平台

    学习笔记:APP切图那点事儿–详细介绍android和ios平台 转载自:http://www.woofeng.cn/articles/168.html   版权归原作者所有 作者:亚茹有李 原文地址 ...

  2. Android manifest之manifest标签详细介绍

    AndroidManifest详细介绍 本文主要对AndroidManifest.xml文件中各个标签进行说明.索引如下: 概要PART--01 manifest标签PART--02 安全机制和per ...

  3. 或许是介绍Android Studio使用Git最详细的文章

    欢迎访问我的个人博客转发请注明出处:http://www.wensibo.top/2017/03/12/GitOnAS/ 前言 本文较长,图片很多很多,流量党慎入 使用Git已经有一段时间了,但是之前 ...

  4. Android 蓝牙开发(3)——蓝牙的详细介绍

    前面的两篇文章,主要是在 Android 官网关于蓝牙介绍的基础上加上自己的理解完成的.主要针对的是 Android 开发中的一些 API 的使用. 第一篇文章 Android 蓝牙开发(1) 主要是 ...

  5. Android Bitmap详细介绍(转)

    转自: Bitmap详细介绍 package com.testbitmapscale; import java.io.File; import java.io.FileInputStream; imp ...

  6. Android SQLite 数据库详细介绍

    Android SQLite 数据库详细介绍 我们在编写数据库应用软件时,需要考虑这样的问题:因为我们开发的软件可能会安装在很多用户的手机上,如果应用使用到了SQLite数据库,我们必须在用户初次使用 ...

  7. 给 Android 初学者的 Gradle 知识普及

    给 Android 初学者的 Gradle 知识普及:http://gold.xitu.io/entry/5778f8bd165abd0054b443b0/promote?utm_source=bai ...

  8. android之ListView,详细介绍实现步骤,举例,自定义listview适配器

    android之ListView,详细介绍实现步骤,举例,自定义listview适配器 本文来源于www.ifyao.com禁止转载!www.ifyao.com android中如何使用listVie ...

  9. thinkPHP 模板中的语法知识 详细介绍(十二)

    原文:thinkPHP 模板中的语法知识 详细介绍(十二) 本章节:介绍模板中的语法,详细的语法介绍 一.导入CSS和JS文件    ==>记住常量的是大写 1.css link .js  sc ...

随机推荐

  1. 使程序能够引入.json文件, 为网站添加 MIME 映射

    确认启用了 MIME 映射,或使用命令行工具 appcmd.exe 为网站添加 MIME 映射. 若要设置 MIME 类型,请在 IIS Express 安装目录中运行以下命令: appcmd set ...

  2. 秒味课堂Angular js笔记------$scope.$watch和$scope.$apply

    $scope.$watch(watchFn , watchAction , deepWatch) 其中,watchFn是带有angular表达式或函数字符串: watchAction是一个函数或者表达 ...

  3. 用MS自带的VS构建joint语句

    在其中一个表上,右键,选择"New Query",弹出"Add Table"对话框,将待joint的两个表Add,并选择相应字段,则会自动构建joint语句,其 ...

  4. XP系统取消开机硬件检查

    非正常关机后进行磁盘检查,主要用于检查磁盘错误等.非法关机后会丢失一些文件或产生一些文件错误,而硬盘自检恰恰就是来检查这些错误并对之进行必要的修复,此功能如果被关闭,不能进行必要的数据恢复,久而久之会 ...

  5. gui界面2048小游戏

    坑的地方 JLabel色块要调透明 方向键要用press方法 主界面 package game; import java.awt.BorderLayout; import java.awt.Event ...

  6. Android Init进程命令的执行和服务的启动

    这里开始分析init进程中配置文件的解析,在配置文件中的命令的执行和服务的启动. 首先init是一个可执行文件,它的对应的Makfile是init/Android.mk. Android.mk定义了i ...

  7. Python学习笔记五--条件和循环

    5.1 if语句 没什么好说,if语句语法如下: if expression: expr_true_suit 5.1.1多重条件表达式 单个if语句可以通过布尔操作符and,or,not实现多重条件判 ...

  8. 可选头 IMAGE_OPTIONAL_HEADER

    //IMAGE_OPTIONAL_HEADER结构(可选映像头) typedef struct _IMAGE_OPTIONAL_HEADER { // // Standard fields. // W ...

  9. JS操作css的float属性的特殊写法

    使用js操作css属性的写法是有一定的规律的: 1.对于没有中划线的css属性一般直接使用style.属性名即可. 如:obj.style.margin,obj.style.width,obj.sty ...

  10. XJOI网上同步测试DAY14 T2

    思路:先考虑在D高度的最小圆覆盖,再一层一层往下走时,可以保证圆心与最开始的圆相同的时候答案是最优的. 时间复杂度O(n) 有一个坑点,就是我用了srand(time(NULL))就T了,RP太差了. ...