一、Android的ROM结构
1)Android的分区
Android的分区,不说清楚这个,下面都不好讲,Android一般都分这几个区: bootloader分区用来存储uboot,system分区存储Android,data分区用来存储用户数据,boot分区用来存储内核文件和ramdisk,recovery分区存储内核文件和recovery程序,其他还有misc和cache等等。当然各个公司会根据各自需求增加一些别的分区。启动过程是先由bootloader启动uboot,然后uboot启动内核,内核会根据init.rc里的指令mount system data等这些分区,mount好以后,Android就开始启动了。你应该注意到上面的分区里有两个分区都存有内核文件,就是boot和recovery,boot是正常启动流程会用到的内核文件,如果启动过程中发现有特殊按键,uboot就会读取recovery分区里的内核和ramdisk。这就是为什么你启动时按着某个组合键就会进入recovery程序。进入recovery模式以后,直接面对用户的是跑在内核上的recovery程序。这个时候除了recovery分区以外的其他分区你想写谁都可以了。recovery去读取rom文件,根据文件里的内容来更新系统,如果是img文件就直接dd到分区里,如果是文件夹就把文件里的东西copy到相应分区里(好像是这样)。更新完按正常启动过程重启机器就o了。内核文件在boot.img里的,boot.img是由内核文件和ramdisk.img组成的,刷在boot分区里。你如果打开一个rom文件,如果里面如果有boot.img,哪说明刷这个rom的时候它是要更新内核的。但一般第三方定制的rom是不会去动你的内核的,只刷system。所以你在里面找不到内核文件。如果你找不到system.img,那里面应该有一个叫system的文件夹吧。是img就dd到system分区,是文件夹就copy到system分区。

2)刷机包rom
刷机包rom,一般的刷机包包括一个/meta-inf目录和一个/system目录,/meta-inf中包含了刷机的脚本和证书,/system中就是我们需要的rom包,有些其他的rom还有/data。至于你说的bootloader,这个相当于电脑中的bios一般刷机是不用bootloader的,用recovery刷机;recovery刷机时先检查.zip下的签名然后按照脚本中的代码执行,例如:判断机型,挂载需要刷机的分区,然后格式化,写入待刷文件,最后卸载分区。

3)META_INF文件
在META_INF文件夹下层层寻找会找到updater_script,这个文件是现有recovery进行解析,然后根据内容执行 格式化,释放,刷入,删除,改变属性,执行脚本等动作。以此来完成刷机或OTA动作。

二、从内核基于linux开始

整个系统就运行在一个虚拟机上,这是安卓的一大特征!!

那么我们移植的时候要修改哪一部分?

这就是我们这个帖子的重点了

参考本链接
http://www.miui.com/thread-3660267-1-1.html
交流学习

通俗易懂的流程,主体框架不会改变。固定的目录结构,移植不同设备,根据不同的需求对几个特定文件进行修改。最后重新进行压缩zip,zip包名改为update便于区分新版本。最后使用特定工具加签名,到此新的刷机ROM包已经打包完成。只需拷贝到手机SD卡上,安装即可。

更多相关文章

  1. sdcardFS(android sdcard存储方案---基于wrapfs文件系统)
  2. 【Android Training - 04】保存数据 [ Lesson 2 - 保存文件]
  3. Android的支持库 && app/apk包进系统 && 预置so库进系统 && 预置
  4. Android内核开发:理解和掌握repo工具
  5. Android mainfest文件 android属性 汇总
  6. [Android] 将Android工程做成jar包和资源文件
  7. Android wps文件下载、预览

随机推荐

  1. 用fiddler做代理服务器转发请求
  2. Android(安卓)UI学习 - Menu
  3. android 中LayoutInflater 的使用
  4. Android上调用WebService
  5. android中ListActivity的使用
  6. Android深入浅出之Audio 第二部分 AudioF
  7. Android(安卓)UI 开发进阶――Dialog
  8. android JNI 系列 一
  9. 定制dialog的方式
  10. Android(安卓)App的运行环境及Android系