MIUI ROM制作教程——认识Android手机

合集下载

安卓系统自制ROM方法

安卓系统自制ROM方法

玩Android手机可为个层次:1。

最高境界:像大神这样的,对Android系统十分熟悉,能够编写系统代码2。

大大境界:像Liudidi、小白小仙等大大,能够修改代码和编译,需要熟悉linux系统和具备编程知识3。

高手境界:能够在非代码级修改ROM,美化ROM。

4。

普通境界:会玩,会设置等前两个层次要花大力气学习,向我这样的懒人看样子是达不到了,只能努力达到第三层。

这里我想跟大家分享一下我的修改ROM的方法,其中大部分是总结与论坛中其他帖子,有一小部分是自己总结的经验。

修改ROM大致可分为:精简、增补、美化三类这里主要讨论的是精简和增补两个方面。

本帖子教你如何打造自己喜欢的rom!!!!实战性很强哦······注明:本帖来自戈壁网···一。

首先我们来看看ROM中到底有些什么:用WinRAR打开刷机包后可以看到几个目录,下面列出了和我们有关的几个目录和说明dev_data/apps/ : 系统程序的apk文件目录,相当于刷机后"/data/app_s/",这里的程序刷机后不可卸载dev_data/app/ : 用户程序apk文件目录,相当于刷机后 "/data/app/",这里的程序刷机后可卸载。

(10月28日以后的版本中才有,以前的版本大家可以自己加这个目录) META-INF/com/google/android/ : 刷机脚本文件system/etc/: 存放了一些配置文件system/etc/permissions/ : 和软件权限有关,部分补丁需要在这个目录中添加文件system/lib/ : 系统程序的库文件存放位置二。

再来认识一下刷机脚本文件用recovery刷机时,刷机过程由脚本文件控制。

脚本文件就是压缩包中META-INF\com\google\android 目录下的update-script文件,用文本编辑器可以打开。

MIUI_ROM制作教程

MIUI_ROM制作教程

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 attached304D1955996BE28E device注意:(1) 有可能会提示找不到adb,这个时候请确保将adb所在路径添加到系统的环境变量中。

自己制作安卓ROM包教程

自己制作安卓ROM包教程

ROM包的制作教程制作方法一、ROOT目前的民间ROM 基本上已经自带ROOT 所以省略此步骤当然前提得是ROOT过的二、工具准备下载安装附件中的R.explorer管理器(rootexplorer.v2.9.4.apk)这个工具的作用是备份APK 文件、删除APK文件、查看系统目录里面都有什么下载附件中的AndroidResEdit_By_hanhualan...解压到电脑里(如果不能运行则说明你需要安装.NET Framework 2.0)我们主要用这个来对定制包签名三、定制包制作知识一般定制ROM(不是美化、也不是制作MOD)其实就是对手机内存里的system/app文件夹的内容进行自定义,自己安装的软件将不会出现在这里,而是\data\文件夹中。

系统所有的程序都在这个文件夹里,比如浏览器、拨号器、联系人等先来看一下通常情况下这个文件夹里都包含什么:\system\app\AlarmClock.apk 闹钟\system\app\AlarmClock.odex\system\app\Browser.apk 浏览器\system\app\Browser.odex\system\app\Bugreport.apk Bug报告\system\app\Bugreport.odex\system\app\Calculator.apk 计算器\system\app\Calculator.odex\system\app\Calendar.apk 日历\system\app\Calendar.odex\system\app\CalendarProvider.apk 日历提供\system\app\CalendarProvider.odex\system\app\Camera.apk 照相机\system\app\Camera.odex\system\app\com.amazon.mp3.apk 亚马逊音乐\system\app\Contacts.apk 联系人\system\app\Contacts.odex\system\app\DownloadProvider.apk 下载提供\system\app\DownloadProvider.odex\system\app\DrmProvider.apk DRM数字版权提供\system\app\DrmProvider.odex\system\app\Email.apk 电子邮件客户端\system\app\Email.odex\system\app\FieldTest.apk 测试程序\system\app\FieldTest.odex\system\app\GDataFeedsProvider.apk GoogleData提供\system\app\GDataFeedsProvider.odex\system\app\Gmail.apk Gmail电子邮件\system\app\Gmail.odex\system\app\GmailProvider.apk Gmail提供\system\app\GmailProvider.odex\system\app\GoogleApps.apk 谷歌程序包\system\app\GoogleApps.odex\system\app\GoogleSearch.apk 搜索工具\system\app\GoogleSearch.odex\system\app\gtalkservice.apk GTalk服务\system\app\gtalkservice.odex\system\app\HTMLViewer.apk HTML查看器\system\app\HTMLViewer.odex\system\app\IM.apk 即使通讯组件包含MSN、yahoo通\system\app\ImCredentialProvider.apk\system\app\ImProvider.apk\system\app\ImProvider.odex\system\app\Launcher.apk 启动加载器\system\app\Launcher.odex\system\app\Maps.apk 电子地图\system\app\Maps.odex\system\app\MediaProvider.apk 多媒体播放提供\system\app\MediaProvider.odex\system\app\Mms.apk 短信、彩信\system\app\Mms.odex\system\app\Music.apk 音乐播放器\system\app\Music.odex\system\app\MyFaves.apk T-Mobile MyFaves程序\system\app\MyFaves.odex\system\app\PackageInstaller.apk apk安装程序\system\app\PackageInstaller.odex\system\app\Phone.apk 电话拨号器\system\app\Phone.odex\system\app\Settings.apk 系统设置\system\app\Settings.odex\system\app\SettingsProvider.apk 设置提供\system\app\SettingsProvider.odex\system\app\SetupWizard.apk 设置向导\system\app\SetupWizard.odex\system\app\SoundRecorder.apk 录音工具\system\app\SoundRecorder.odex\system\app\Street.apk 街景地图\system\app\Street.odex\system\app\Sync.apk 同步程序\system\app\Sync.odex\system\app\Talk.apk 语音程序\system\app\Talk.odex\system\app\TelephonyProvider.apk 电话提供\system\app\TelephonyProvider.odex\system\app\Updater.apk 更新程序\system\app\Updater.odex\system\app\V ending.apk 制造商信息\system\app\V ending.odex\system\app\V oiceDialer.apk 语音拨号器\system\app\V oiceDialer.odex\system\app\Y ouTube.apk Y outube视频\system\app\Y ouTube.odex然后是定制包的结构,定制包的命名一般是XXXX(英文).zip内容包括/system/app/my.apk(你想要放进系统中的程序)/META-INF/com/google/update-script(定制包脚本)/META-INF/CERT.SF(签名文件)/META-INF/CERT.RSA(签名文件)/META-INF/MANIFEST.MF(签名文件)(附件中的custom.zip为范例,大家可以下载直接进行修改)首先应将准备好的程序放进这个ZIP包的/system/app目录里,只要将程序拖进附件中custom.zip的APP目录即可然后删除/META-INF/CERT.RSA和META-INF/CERT.SF这两个文件,为了签名做准备下面我们的来看最后一处需要编辑的地方——脚本四、脚本:现在我们对里面的文件有了大致的了解,那么举例说明,如果我们要做一个基于以上ROM 的定制包,那么大概要进行两种操作1.添加目录里的APK程序到ROM的system/app里2.从ROM里删除APK程序(即瘦身)3.显示进程添加目录的语句为copy_dir PACKAGE:定制包路径手机内存路径删除程序的语句为delete 手机内存路径显示进程语句为show_progress脚本文件可用TXT、记事本等程序作为打开方式并编辑保存作为初学者只需要掌握以下范例即可show_progress 0.1 0delete SYSTEM:app/DivXRegCode.odexdelete SYSTEM:app/Y ouTube.apkcopy_dir PACKAGE:system SYSTEM:show_progress 0.1 10其中对前后两个show_progress语句不需要理解,看中间的,第一句是删除system/spp文件夹内的DivXRegCode.odex文件,第二句是删除system/spp文件夹内的Y ouTube.apk文件,第三句是复制(同时会覆盖已存在的文件)定制包中的system文件夹到手机内存的system 文件夹。

ANDROIDROM打造(一)——ROM结构介绍、精简和内置、一般刷机过程

ANDROIDROM打造(一)——ROM结构介绍、精简和内置、一般刷机过程

ANDROIDROM打造(一)——ROM结构介绍、精简和内置、一般刷机过程ANDROIDROM制作(一)——ROM结构介绍、精简和内置、一般刷机过程作为对Rom制作的一个总结,本节主要介绍以下内容:1、Rom介绍2、Rom文件结构3、app的精简与内置4、Recovery简介5、radio包简介6、一般刷机过程、刷机过程中可能造成刷机失败的注意事项7、如何实现Rom的基本美化8、Rom包签名------------------------1、我们经常说的刷ROM是刷系统的意思,但是ROM的原意并不是这样,ROM的全称是read only memory只读储存器,正因为它是“只读”的,所以系统文件通常动会存储在手机ROM里,但这个只读是有条件限定的,通常情况下我们只能读,但在特殊情况下我们可以对ROM进行写操作,往ROM里写入新的系统文件的过程,就是刷机,也称“刷ROM”,而把系统文件包叫做了ROM,这是一种俗称,所以网上找不到能支持这个含义的英文全称简单讲一下ROM包这个概念的历史,被人们熟识的刷系统应该是在WM平台上开始多起来的,当时还出现了一批制作ROM的专业工作人员,当然WM我接触的少,就不多说了,免得说错误导大家,但是刷机这个概念真正火起来还是在Android平台,出现了更多的Rom包制作者,或专职或出于爱好,也有很多经常刷机的发烧友,不过还是提醒一下,刷机也是有一定风险的,需谨慎对待!2、关于Rom包的文件结构,一般Rom文件包下有以下文件:dataMETA-INsystemboot.imgdata:顾名思义,是一个存储数据的文件夹,如安装第三方app会保存在data/data/app目录下META-INF:内含升级脚本及ROM的签名System:系统文件夹Boot.img:android内核文件System文件夹下还有以下文件或文件夹:app:放置系统软件的目录,所以内置软件就是在制作Rom包的时候把apk文件放入此文件夹bin:Android系统本地程序,主要是Linux系统自带的组件Etc文件夹:放置android系统配置文件,如apn文件等Fonts文件夹:放置字体文件,包含标准字体和粗体、斜体、中文、英文等Framework文件夹:放置android系统平台框架文件及布局控制Lib文件夹:放置系统底层库及运行库文件Media文件夹:放置系统铃声音乐文件夹及开机动画文件,需要说明一下开机动画其实是多张静态图片的帧动画效果Tts文件夹:放置手机的语音文件Usr文件夹: 放置用户文件,包含共享、键盘布局、时间区域文件等Vendor文件夹:放置ROM厂商定制内容Xbin文件夹:放置用户系统支持程序文件Build.prop文件:系统属性配置文件,如我们在设置-关于里看到的内容3、了解了Rom的结构,精简和内置就不是问题了,一般的精简就是删除system/app和data/data/app 两个目录下的多余文件,如国内无法使用的youtube,facebook等应用,而内置就是把想要内置的应用放到system/app目录下,当然如果用户取得root权限,还是可以删掉系统自带应用的4、recovery这里主要指恢复的意思,一般说recovery界面是一个可以实现刷机等多种操作功能的一个工程界面,功能类似windows下的Ghost,可以实现系统备份、恢复、清理数据等操作5、radio这里指无线电通讯,手机的无线电通讯硬件模块出厂时就已经内置,但软件却可以更新,可以理解为电脑网卡已经内置了,但是我们却可以更新驱动程序,radio包的好坏影响着手机通话质量、上网速度、联网稳定性等更网络相关的内容,所以如果手机信号没有问题,不要轻易地刷radio,有人又把刷radio 称作刷“基带”、刷信号包,可以统统理解为升级了网卡驱动...6、不同厂家的手机刷机过程各有不同,这里直说已经安装recovery的情况,如果没有安装recovery,随便google一下就有一大堆内容,不做赘述下载Rom包,是一个.zip文件,简单的方法是把Rom命名为update.zip并放入sd卡的根目录,这样进入recovery界面时会提示是否升级,音量上键选择升级即可,当然也可以不改变Rom包文件名,进入Recovery界面选择Flashzipfromsdcard或Flashupdateimage,如果是中文版的recovery就是从sd卡中选择更新,总之大概是这个意思,然后选择Rom包的.zip文件确认即可进入recovery的方法各有不同,HTC手机一般是关键后按音量下键+开机键,可以根据自己的手机型号上网查一下一般来说,刷机也是有一定风险的,也经常有人把手机刷成砖或半砖,这些主要是由于不当的操作造成的,一般我们通过recovery刷Rom是不会造成太严重的结果,或者说如果有什么结果可以通过刷recovery解决,但如果是由于操作不当导致无法进入hboot界面那基本就算成砖了,这里不多说,主要是强调一下刷机的良好习惯,在刷机之前先进入recovery将现有系统做一个备份,防止刷机后出现问题,如果真不幸出现问题也可以通过备份恢复,备份后通过recevery对系统进行一个彻底的wipe,删掉多余的文件,然后在执行刷机操作,这样一般是不会有什么问题的7、简单的美化,主要是替换资源,在system/framework目录下,有一个framework-res.apk文件,解压后发现里面全是各种资源文件,其中在res目录下,以drawable开头的文件夹下都是跟图片相关的资源,可以通过替换相同文件名的图片文件实现美化的目的,本人比较习惯原生的UI,所以这里不多讲8、一般来说只是精简或是内置app的话不需要重新对Rom包进行签名,但有些时候需要对Rom签名的时候可以上网搜找一下Rom签名工具,通过简单的批处理就可以实现,其实就是用java的keytool 命令进行签名,只不过是有了工具,大家就不愿意去敲命令,就像电脑越来越普及反而会提笔忘字一样!这节的内容就说到这里,如果你也想有一个属于自己专有的Rom的话可以动手操作一下,不过还是提示刷机有风险。

教你如何制作安卓rom教程(内置两个教程看完之后基本能解决所有难题)

教你如何制作安卓rom教程(内置两个教程看完之后基本能解决所有难题)

【新手定制ROM入门教程一】如何内置软件删除自己用不到的软件,添加自己想用的软件,其实很简单例如:打开某ROM出现以下文件夹data->app:目录下的软件是在android中可以自由删除软件,不要想的统统删掉,想添加软件直接把APK文件放到此文件夹即可例如:想要在ROM中添加安智市场,只需将安智市场的APK文件放在data->app目录下即可,如下图system->app:目录下的软件是android自带软件,在系统中无法删除的,你可以在这里删除掉,比如youtube之类.关闭打开的RAR即可,重新刷机之后,你发现想删掉的文件没了,想要的出现了.【新手定制ROM入门教程二】如何美化ROM美化ROM包括,字体,图标,壁纸,状态栏的修改.但是这些全部都在framework-res之内.下面给大家提供一个修改framework-res美化界面教程原文如下:”在尝试制作半透明升级包的过程中,我发现有几个图片无论如何也不能透明,即使你挖空它,可能是Android 2.1还不能接受全透明吧……用WinRar打开framework-res.apk,绝大部分要修改的都在res\drawable-mdpi内(不同的ROM可能文件夹名字不一样,但是很快就能找到图片最多那个)。

状态栏要修改的几个文件:还有status_bar_header_background.9.png、status_bar_item_background_normal.9.png可以修改,但是不能改成透明的(至少我修改失败了,不过末将说可以)。

信号和电池要修改的几个文件(某些ROM,如基于Beta7的,还有stat_sys_signal_null.png、stat_sys_signal_5.png、zz_stat_sys_signal_5.png要修改):这些文件大部分通过英文就能明白它们所指的意思。

屏幕锁屏时要修改的(请到drawable-land-mdpi文件夹修改同样名称的几个,drawable-land-mdpi文件夹保存的是横屏时的一些图片):一般需要我们修改的就是任务栏,这些文件基本都在framework-res里面,大家可以在framework-res文件里面查找对应文件并替换就可以了.修改的经验:用Photoshop打开图片,如果锁定了就双击那个图层解锁,如果是“索引模式”就改图层模式为“RGB模式”。

安卓rom制作教程

安卓rom制作教程

安卓rom制作教程安卓ROM制作教程安卓ROM(Read-Only Memory)是一种预先编程的存储器,它包含了操作系统和内置应用程序。

制作自己的安卓ROM可以让你个性化你的手机,并添加一些自定义的功能。

下面是一个简单的安卓ROM制作教程。

第一步:准备工作1. 你需要一台可root的安卓手机,并确保手机已解锁bootloader。

2. 在电脑上下载并安装ADB(Android Debug Bridge)和Fastboot工具。

3. 下载并安装一个合适的ROM制作软件,如Kitchen MTK、ROM Toolbox等。

第二步:备份手机在开始制作ROM之前,务必备份手机中的所有数据,包括联系人、照片、音乐等。

你可以使用ADB工具把数据备份到电脑上。

第三步:解包原始ROM1. 使用ROM制作软件把原始ROM解压到你的电脑上。

这样你就可以编辑ROM包中的文件了。

2. 在解压后的文件夹中,你会找到几个重要的文件,如boot.img、system.img等。

第四步:编辑ROM1. 修改系统设置:你可以编辑系统设置,如添加或删除应用程序、更改启动画面等。

2. 安装自定义应用:你可以在ROM中添加一些自定义应用,例如Root Explorer、SuperUser等。

3. 修改内核:如果你是高级用户,你可以修改内核以提高手机的性能或添加一些新功能。

4. 添加自定义的壁纸、铃声等。

第五步:重新打包ROM完成对ROM的编辑后,你需要重新打包ROM。

第六步:刷入新的ROM1. 使用Fastboot工具把手机连接到电脑上。

2. 进入Fastboot模式,在命令提示符下输入“adb reboot bootloader”命令。

3. 使用“fastboot flash boot boot.img”命令刷入新的启动镜像。

4. 使用“fastboot flash system system.img”命令刷入新的系统镜像。

5. 使用“fastboot reboot”命令重启手机。

安卓刷机包制作教程

安卓刷机包制作教程

安卓刷机包制作教程安卓刷机包制作教程刷机是指在一部手机上更换不同的操作系统固件,以获得更好的性能和功能。

下面是一个简单的安卓刷机包制作教程,供参考。

步骤一:备份手机数据在开始刷机之前,一定要备份手机中的重要数据。

这样即使刷机失败或出现问题,也能保留个人数据,以免造成损失。

步骤二:获取所需资源首先,需要获得所需的刷机包资源。

这可以通过下载从官方网站或第三方论坛提供的官方ROM镜像文件来完成。

确保下载到与手机型号完全匹配的ROM文件,以避免不兼容的问题。

步骤三:解压刷机包将下载的刷机包解压到一个易于访问的文件夹中。

确保将解压文件保存在一个没有中文或特殊字符的路径下,以避免文件路径出错。

步骤四:安装ADB工具ADB是安卓平台上一个常用的用于与设备进行通信的工具。

在制作刷机包时,需要使用ADB工具以便与手机建立连接并传输文件。

在计算机上安装ADB工具(一般是安卓SDK中的一部分),并确保ADB驱动程序正确安装。

步骤五:进入手机刷机模式在确保手机电量充足的情况下,按照特定的组合键进入手机的刷机模式。

这个组合键可因手机型号而变化,在制作刷机包教程中通常会有具体的说明。

进入刷机模式后,将手机通过USB线与计算机连接。

步骤六:使用ADB命令连接手机打开计算机上的命令提示符(或终端),导航到ADB工具所在的路径,并执行以下命令,以确认与手机的连接是否成功:adb devices如果连接成功,将会显示设备编号。

如果没有显示设备编号,请检查ADB驱动程序是否正确安装,并重新尝试。

步骤七:刷入刷机包在连接成功的情况下,使用以下命令将刷机包传输到手机中:adb push 刷机包路径 /sdcard/刷机包路径应该替换为实际刷机包所在的路径。

这个命令将刷机包传输到手机内存卡中。

接下来,执行以下命令刷入刷机包至手机:adb shellsuupdate /sdcard/刷机包.zip替换 "刷机包.zip" 为实际刷机包的名称。

ROM定制初级教程制作一个刷机包

ROM定制初级教程制作一个刷机包

ROM定制初级教程制作⼀个刷机包 ⼀个完整的ROM根⽬录会有以下⼏个⽂件夹及⽂件:data;META-IN;system;boot.img。

⼀.系统⽬录说明 1.应⽤程序安装⽬录 系统应⽤程序所在⽬录:/system/app/*.apk ⽤户安装应⽤程序所在⽬录:/data/app/*.apk 注意:在模拟器中,每重启⼀次,/system/app/下的应⽤都会被还原,有时/data/app下也会被清除若在/system/app和/data/app下有重名的应⽤,不⼀定会启动哪⼀个,尤其是在adb install杀死正在运⾏的程序时,有时旧的就会被启动。

2.⽤户数据所在⽬录:/data/data/应⽤包名/shared_prefs 配置⽂件;/data/data/应⽤包名/databases/* 库⽂件所在⽬录 3. SD卡对应⽬录:/sdcard/ ⽽我们需要处理的只是两个⽂件夹⾥⾯的内容: data/app –该⽂本夹⾥的⽂件可以全删,也可以⾃由添加⾃已所需安装的应⽤软件,刷机安装后可以⾃由删除。

system/app –在这个⽂件夹下的程序为系统默认的组件,可以看到都是以APK格式结尾的⽂件,但有些⾃制的ROM⾥⾯还有和APK⽂件名对应的odex⽂件。

我们主要是针对该⽂件夹⾥的⽂件进⾏精简,如果有odex⽂件的,删除APK⽂件名时同时也删除与其对应的odex⽂件。

⼆.定制简单流程: 1.下载相应的ROM 2.下载签名⼯具,并且解压。

3.把ROM内的所有⽂件⽤WinZip或是WinRAR解压到某⼀⽂件夹,为教程容易明⽩,我将这⽂件夹在这⾥起名为“NewsROM”,你⾃已喜欢怎样起名都⽆所谓。

4.进⼊NewsROM⽂件夹,再进⼊data\app⽬录,看这⾥是否有你所需的程序,不需要的请删除。

你还可以添加你需要的默认安装软件。

如:搜狗输⼊法,只需要把SogouIme.apk⽂件直接拖放到压缩包\data\app⽬录内即可。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MIUI ROM适配之旅第一天——认识Android手机写这篇文章时想起我的第一部Android手机HTC Hero。

买回来后,同事告诉我可以去刷机玩玩。

刷机,怎么刷?同事说,你个土人,刷机都不知道,很多刷机论坛的,你去逛逛,挺简单的。

我去逛了逛机锋论坛(那时还不知道MIUI),打开一看,什么recovery, radio, root 各种词汇扑面而来,oh my lady gaga,这么复杂。

但是为了不被鄙视,而且闲着也是闲着,还是刷着玩玩吧。

后来就结识MIUI来到了小米。

这是题外话,咱们言归正传。

在这纷纷扰扰的Android世界里,如何找到那条刷机大道呢,或许它只是个传说,我们只是一直在探索。

让我们从零开始来看一看,看能发现点什么。

1. bootloader当我们拿到一款手机,第一件事应该就是按下电源键开机,那么从开机到进入到桌面程序这中间发生了些什么呢,我们从下面这张简化了的手机结构图开始:注意:该结构图并不反映手机的实际分区顺序和位置,只是一个逻辑结构图。

大家可以简单的把手机的ROM存储类比为我们电脑上的硬盘,这个硬盘被分成了几个分区:bootloader分区,boot分区,system分区等等。

后面我们会逐渐介绍各个分区的用途。

所谓的刷机我们可以简单的理解成把软件安装在手机的某些分区中,类似于我们在电脑上安装Windows系统。

当按下电源键手机上电启动后,首先从bootloader分区中一个固定的地址开始执行指令,如图所示,bootloader分区分成两个部分,分别叫做primary bootloader和secondary stage bootloader。

Primary bootloader主要执行硬件检测,确保硬件能正常工作后将secondary stage bootloader拷贝到内存(RAM)开始执行。

Secondary stage bootloader会进行一些硬件初始化工作,获取内存大小信息等,然后根据用户的按键进入到某种启动模式。

比如说大家所熟知的通过电源键和其它一些按键的组合,可以进入到recovery,fastboot或者选择启动模式的启动界面等。

我们在论坛上看到的bootloader通常指的就是secondary stage bootloader。

不过我们不需要关心太多的细节,可以简单的理解为bootloader就是一段启动代码,根据用户按键有选择的进入某种启动模式。

fastboot模式:fastboot是android定义的一种简单的刷机协议,用户可以通过fastboot命令行工具来进行刷机。

比如说fastboot flash boot boot.img这个命令就是把boot.img的内容刷写到boot分区中。

一般的手机厂商不直接提供fastboot模式刷机,而是为了显示他们的牛B之处,总是会提供自己专有的刷机工具和刷机方法。

比如说三星的Odin,摩托的RSD,华为的粉屏等等。

但是其本质实际上是相同的,都是将软件直接flash 到各个分区中。

recovery模式:recovery是android定义的一个标准刷机协议。

当进入recovery模式时,secondary stage bootloader从recovery分区开始启动,recovery分区实际上是一个简单的Linux系统,当内核启动完毕后,开始执行第一个程序init(init程序是Linux系统所有程序的老祖宗)。

init会启动一个叫做recovery的程序(recovery模式的名称也由此而来)。

通过recovery程序,用户可以执行清除数据,安装刷机包等操作。

一般的手机厂商都提供一个简单的recovery刷机,而大名鼎鼎的CWM Recovery就是一个加入了很多增强功能的recovery,要想用上CWM Recovery前提是recovery分区可以被刷写。

大家在论坛上看到的解锁bootloader,通常指的就是解锁recovery或fastboot,允许刷写recovery 分区,这样大家就可以用上喜爱的CWM Recovery了。

手机除了普通的CPU芯片以外,还有MODEM处理器芯片。

该芯片的功能就是实现手机必需的通信功能,大家通常所的刷RADIO就是刷写modem分区。

2. 正常启动当我们只是按下电源键开机时,会进入正常启动模式。

Secondary stage bootloader会从boot分区开始启动。

Boot分区的格式是固定的,首先是一个头部,然后是Linux内核,最后是用作根文件系统的ramdisk。

一般针对每个机型的完整刷机包中会有一个boot.img文件,这就是boot分区镜像文件。

如何编辑该镜像文件可以参照这篇文章/wiki/inde ...Re-Pack_Boot_Images。

当Linux内核启动完毕后,就开始执行根文件系统中的init程序,init程序会读取启动脚本文件(init.rc和init.xxxx.rc)。

启动脚本文件的格式大家可以在网上找到很多参考资料,这里就不写了,而且我们在原厂ROM上移植MIUI的原则是不修改boot分区,因为有一些机型无法修改boot分区。

根文件系统中有一个重要的配置文件,叫default.prop,该文件的内容一般为:## ADDITIONAL_DEFAULT_PROPERTIES#ro.secure=1ro.allow.mock.location=1ro.debuggable=0persist.service.adb.enable=1。

文件中的每一行对某个属性赋值,在后续的文章中我们还会谈到属性。

这里面大家需要注意的两个属性:ro.secure和ro.debuggable。

如果ro.secure=0允许我们运行adb root 命令。

在下一篇我们会详细介绍adb,这是我们做ROM移植的利器。

通常大家说得内核ROOT 指的就是ro.secure=0。

ROOT权限只是的手机上有一个名为授权管理的程序(Superuser.apk)可以授予程序root用户的权限。

ro.deguggable=1允许调试系统APP。

init程序读取启动脚本,执行脚本中指定的动作和命令,脚本中的一部分是运行system 分区的程序,下一节我们就来看看system分区的结构。

3. system分区在讲system分区之前,我们先来看下面这张Android的软件系统架构图。

从上到下依次为:核心应用层:这一层就是大家平常所接触的各种各样的系统自带应用,比如联系人,电话,音乐等。

应用层往下就是开发人员所接触的。

框架层:这一层是Android系统的核心,它提供了整个Android系统运作的机制,像窗口管理,程序安装包管理,开发人员所接触的Activity, Service, broadcast等等。

JNI层:JNI层是Java程序和底层操作系统通信的一个机制,它使得Java代码可以调用C/C++代码来访问底层操作系统的API。

Dalvik虚拟机:Android开发使用Java语言,应用程序的Java代码会被编译成dalvik虚拟机字节码,这些字节码由dalvik虚拟机解释执行。

本地库:本地库一般是由C/C++语言所开发,直接编译成相应CPU的机器码,这其中包含标准C库,用以绘制图形的skia库,浏览器核心引擎webkit等。

HAL:硬件抽象层,为了和各个厂家的不同硬件工作,Android定义了一套硬件接口,比如说为了使用相机,厂家的相机驱动必须提供的接口方法。

这样使得上层的代码可以独立于不同的硬件运行。

厂家适配层:本来Android定义的HAL层是直接和厂家提供的设备驱动打交道的,但是目前厂家不想开源HAL部分的代码,因此很多厂家都提供了一个我称之为厂家适配层的代码,这样在HAL层接口的实现只是一个简单的对厂家适配层接口函数的调用。

内核:这一层就是大家熟悉的Linux内核,内核中包含有各种硬件驱动,这些驱动不同的手机厂商不同的手机是不一样的。

Linux内核是支持驱动模块化机制的,简单的说就是允许用户动态的加载或者卸载某个硬件驱动,但是目前来看,手机厂商除了提供WIFI驱动单独加载外,其它驱动都是和内核绑定在一起的。

从这张软件结构图来看,除了内核是放在boot分区外,其它层的代码都是在system分区中。

下面结合这张图来介绍system分区的主要目录内容:system/app: app目录下存放的是核心应用,也就是大家熟知的系统APP,这些系统自带的程序是不能简单的卸载的,要通过一些特殊的方式才能删除(大家熟悉的一种方法是用RE 文件管理器)。

system/lib: lib目录下存放的是组成JNI层,Dalvik虚拟机,本地库,HAL层和厂家适配层的所有动态链接库(.so文件)。

system/framework: 该目录下存放的是框架层的JAR包,其中对MIUI移植来说有3个最重要的JAR包(framework.jar, android.policy.jar, services.jar)。

后续的文章会重点介绍这3个包。

system/fonts: 该目录下存放的是系统缺省的字体文件。

system/media:该目录下存放的是系统所使用的各种媒体文件,比如说开机音乐,动画,壁纸文件等。

不同的手机该目录的组织方式可能不一样。

如何修改这些文件请参考网上对应机型形形色色的教程,这里不再赘叙。

system/bin: 该目录下存放的是一些可执行文件,基本上是由C/C++编写的。

其中有一个重要的命令叫app_process下一节单独介绍。

system/xbin: 该目录下存放的是一些扩展的可执行文件,既该目录可以为空。

大家常用的busybox就放在该目录下。

Busybox所建立的各种符号链接命令都是放在该目录。

system/build.prop: build.prop和上节说得根文件系统中的default.prop文件格式一样,都称为属性配置文件。

它们都定义了一些属性值,代码可以读取或者修改这些属性值。

属性值有一些命名规范:ro开头的表示只读属性,即这些属性的值代码是无法修改的。

persist开头的表示这些属性值会保存在文件中,这样重新启动之后这些值还保留。

其它的属性一般以所属的类别开头,这些属性是可读可写的,但是对它们的修改重启之后不会保留。

很多ROM制作者都会修改一下build.prop信息,里面的一些以ro.build开头的属性就是你在手机设置中的关于手机里看到的。

可以通过修改build.prop文件来将这个ROM打上自己的印记(XXX所修改)。

我见过一个只是删了system/app的一些程序,然后修改build.prop中的ro.build.display.id和ro.build.version.incremental中的两个属性值打上自己的大名的ROM。

相关文档
最新文档