MIUI_ROM制作教程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 搭建移植环境
“工欲善其事,必先利其器”。在制作自己的ROM之前我们必须做好准备工作,搭建好移植环境。
我们这个系列的主旨是如何基于原厂ROM修改。我们所涉及的修改理论上说是不需要源码的,对源码开发感兴趣的可以参照。对于ROM制作者来说,我们建议你下载一份google发布的android源代码,这不是必需的,但是对于理解排查ROM 适配中的一些错误有很大帮助。
1.1 选择操作系统
我们MIUI开发组做ROM开发使用的系统是Ubuntu 10以上版本。做ROM移植,Windows(Windows XP和Windows 7)和Mac都可以。但是由于开发组的日常使用是Ubuntu 系统,我们将要共享的一些脚本程序都是运行在Ubuntu之上的,以后的介绍基本上是基于Ubuntu的,同时我会尽力提及在Windows下的操作。Mac我用得非常少,这方面很抱歉。但是用Mac来移植是完全可以的,大家可以根据本文介绍所需要的工具,参照网上的一些资料来搭建Mac移植环境。
1.2 安装Android SDK
关于在Linux, Windows和Mac上详细的如何安装Android SDK的介绍请参照/sdk/installing.html。(有人嚷,看不懂鸟语怎么办,首先我真诚的觉得做ROM移植还是懂点基本的鸟语好,第二我必须得承认不懂鸟语也是可以做ROM移植的。这种情况请大家去google搜索一下,网上有很多如何安装Android SDK的中文介绍。)
为了验证这一步是否成功,打开手机中的系统设置,选择应用程序—开发,确保选中“USB 调试”,然后用USB线连接你的手机,在Ubuntu Shell或Windows控制台下运行命令adb devices,如果显示和下面的信息类似,恭喜你,adb可以识别你的手机了。
List of devices attached
304D1955996BE28E device
注意:
(1) 有可能会提示找不到adb,这个时候请确保将adb所在路径添加到系统的环境变量中。
(2) 在Windows下,必须安装手机相应的驱动才能成功识别手机。
(3) 在Ubuntu下,有可能会提示“no such permissions”,这个时候有两种办法,第一种是以root的身份运行。第二种办法:
(3.1) 运行lsusb命令,对于我的三星手机,输出如下:
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 098: ID 04e8:685e Samsung Electronics Co., Ltd
。。。
找到手机对应的那一行,记录下04e8:685e,这个分别表示该设备的vendorId和productId。如果不确定手机对应的是哪一行,可以在连上手机前后运行lsusb,找到区别的那一行。
(3.2) 在/etc/udev/rules.d目录下新建一个文件99-android.rules。编辑如下:SUBSYSTEMS=="usb", A TTRS{idV endor}="04e8", A TTRS{idProduct}="685e", MODE="0666", OWNER="你的登录身份"
(3.3) 重启usb服务,sudo restart udev,重连手机。
adb在我们的移植过程中扮演非常重要的角色,它和接下来要介绍的apktool是移植工作中的双子星座,都是行走江湖必备利器。在以后的章节中我们会多次和它相遇。
1.3 apktool和baksmali/smali
首先建议大家新建一个目录tools,把将要下载的工具都放在这个目录中。
apktool: 这个是我们修改ROM最重要的工具,没有之一。我们会在下一章整篇文章中详细的介绍它。地址:/p/android-apktool/
smali/baksmali: 它们是Android下dalvik虚拟机的汇编/反汇编器。apktool实际上是基于smali/baksmali的封装,在下一节中我们会介绍它们的使用场合。地址:/p/smali/
2. 熟悉移植的机型
“千里之行,始于足下”。做移植之前,首先得熟悉我们要移植的机型。
2.1 逛论坛刷机
想打人先学会被打,想做刷机包先学会刷机。先去各大论坛逛逛,了解你的机型是如何刷机的。在这里,不得不提到一个必逛的论坛:/。
这个期间一定要掌握所在机型的刷机方法,需要用到什么工具,多刷几个ROM玩玩,尽量熟悉刷机过程。
2.2 寻找合适的原厂ROM,确保root
什么是合适的原厂ROM呢,首先要版本合适,我们这个系列谈论的是基于原厂ROM移植MIUI,目前2.3的MIUI是基于android2.3.7源码开发的,从android2.3.3到android2.3.7这几个版本变化都不太大,因此2.3.3到2.3.7的原厂ROM版本都是合适的。4.0的MIUI 在移植时我们也会给出MIUI基于哪一android4.0版本的源码开发的。
其次检查所安装的ROM是否有root权限。root权限分两种:
一种是手机root:这种root权限外在表现是你的手机上安装了一个授权管理软件,当你使用RE管理器的时候会弹出一个对话框询问是否授予root权限。
一种是内核root: 这种是上一种root权限的超集。
判断上述哪种root权限的方法,在Ubuntu Shell或Windows控制台下运行如下命令:
adb root(该命令的含义是以root权限运行adb)
adb remount(该命令的含义是将system分区的权限设成可读写)
如果这两条命令都成功,是内核root。运行adb shell,可以看到手机shell提示符为#。
如果上述两条命令失败,运行adb shell可以看到手机shell提示符为$。如果此时运行su命令,手机弹出是否授予root权限,这说明手机上安装了授权管理程序。这种情况下运行su 命令后,手机shell提示符也会变为#。