教你制作定制版安卓系统(Android ROM)
Android手机升级包和定制包制作教程

1.补丁/升级包制作方法1.1ROOT目前的民间ROM 基本上已经自带ROOT 所以省略此步骤当然前提得是ROOT过的1.2工具准备下载安装附件中的R.explorer管理器(rootexplorer.v2.9.4.apk)这个工具的作用是备份APK文件、删除APK文件、查看系统目录里面都有什么下载附件中的AndroidResEdit_By_hanhualan...解压到电脑里(如果不能运行则说明你需要安装.NET Framework 2.0)我们主要用这个来对定制包签名1.3定制包制作知识一般定制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.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.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\Vending.apk 制造商信息\system\app\Vending.odex\system\app\VoiceDialer.apk 语音拨号器\system\app\VoiceDialer.odex\system\app\YouTube.apk Youtube视频\system\app\YouTube.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这两个文件,为了签名做准备下面我们的来看最后一处需要编辑的地方——脚本1.4脚本:现在我们对里面的文件有了大致的了解,那么举例说明,如果我们要做一个基于以上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/YouTube.apkcopy_dir PACKAGE:system SYSTEM:show_progress 0.1 10其中对前后两个show_progress语句不需要理解,看中间的,第一句是删除system/spp文件夹内的DivXRegCode.odex文件,第二句是删除system/spp文件夹内的YouTube.apk文件,第三句是复制(同时会覆盖已存在的文件)定制包中的system文件夹到手机内存的system文件夹。
自己制作安卓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 文件夹。
教你如何制作安卓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都多多少少有一些不合自己心意的地方,尽管网上相关的ROM定制教程不少,但是都很简要,不够详细,所以没有一定基础的兄弟看了只是云里雾里——还是不知道怎么定制,这里为了普及5X6ROM,就凭着自己的经验来写一份详细的ROM定制教程。
虽然是ROM定制教程,但是本教程主要内容为ROM的修改方面,关于ROM的转化、分解和合成则会简略带过,此教程不仅仅适用于5X6,几乎所有的ROM定制均可通用(包括SP和PPC),以下讲解我是以5X6PPC无赖版V4的注册表为基础的。
第一章认识注册表一、注册表有关的术语1、HKEY :“根键”或“主键”,它的图标与资源管理器中文件夹的图标有点儿相像。
Windows Mobile将注册表分为四个部分,分别为:HKEY_CLASSES_ROOT、HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE和HKEY_USERS。
3、subkey(子键):在某一个键(父键)下面出现的键(子键)。
4、branch(分支):代表一个特定的子键及其所包含的一切。
一个分支可以从每个注册表的顶端开始,但通常用以说明一个键和其所有内容。
5、value entry(值项):带有一个名称和一个值的有序值。
每个键都可包含任何数量的值项。
每个值项均由三部分组成:名称,数据类型,数据。
6、字符串(REG_SZ):顾名思义,一串ASCII码字符。
如“Hello World”,是一串文字或词组。
在注册表中,字符串值一般用来表示文件的描述、硬件的标识等。
通常它由字母和数字组成。
注册表总是在引号内显示字符串。
7、二进制(REG_BINARY):如F03D990000BC ,是没有长度限制的二进制数值,在注册表编辑器中,二进制数据以十六进制的方式显示出来。
8、双字(REG_DWORD):从字面上理解应该是Double Word ,双字节值,其实就是我们经常说的DWORD值。
如何制作 ROM

如何制作ROM 安卓ROM教程如何制作ROM 安卓ROM教程,网上有很多ROM提供,制作ROM是不需要会编程什么复杂的工作,但是也是相当麻烦,有兴趣的朋友朋友可以研究一下。
ROM制作分为制作和修改。
其实都是修改。
利用专门的厨房工具制作ROM,需要在LINUX 下完成,配置环境相对麻烦,本文就不以厨房为例了。
修改为主的主要以修改官方ROM,或者修改网友ROM,或者修改英文ROM(可称作汉化吧)。
官方ROM一般为zip格式或者EXE格式。
EXE格式的是在电脑上用的直刷包,ZIP格式的名称固定的HBOOT模式刷机包。
我们如果从官方ROM入手,那就要通过RAR解压EXE包,或者运行官方EXE刷机包时去临时目录拷贝ROM.ZIP文件提取。
用RAR解压后,里面是SYSTEM.IMG DATA.IMG等之类的镜像包,我们通过unyaffs工具,可以在WINDOWS下解压它,解压之后的目录结构就如下面所述了。
若是修改网友的ROM,那目录结构早改好了,直接用RAR打开修改替换文件即可。
提供二款必备工具,一款用来解包,编绎,反编绎ROM,汉化APK程序用的,另一款是解官方ROM里的IMG压缩包的。
UNYAFFS工具下载地址:/i2512675备用下载地址:/detail/cong888khff/3395783用法:unyaffs xx.img xx(文件夹)ROM解包,编绎,反编绎,APK制作软件工具:/file/aqktieho#DoAPK加强版.rar安卓系统文件夹及其文件解析打开Android文件管理器,会发现里面数十个英文名称命名的文件夹罗列其中,很多功能我们可以从其名字上略有所知,内部大批量的文件却让我们有些一头雾水。
这些文件是什么?有什么用?我们能不能删?这些都是我们脑中充满疑问的。
现在将将Android手机内部文件夹的架构和各文件的功能描述介绍给大家,让大家自己手机的内部资源有个比较透彻的理解,同时也避免了用户误删造成的数据丢失和系统崩溃。
LG Android手机自制ROM教程

LG Android手机自制ROM教程1. 解压官方ROM官方rom所需工具下载:KDZtools.7z1) 将下载到的工具解压到任意文件夹我的工具在"D:\KDZtools"下2) 解压KDZ文件,这里以港行V10A为例将V10A_00.kdz放到任意文件夹下,这里我放到"D:\ROM"文件夹下。
运行KDZtools里面的KP500-Utils-EN.exe,输入i,回车(从KDZ里提取文件)输入KDZ文件的目录,D:\ROM\V10A_00.kdz,回车同一目录下找到V10A_00.cab文件,解压CAB文件后得到dz文件,港行V10A为:LGP500AT-00-V10a-454-XX-OCT-05-2010+0-DZ.dz3) 解压DZ文件解压DZ文件需要用到 DZExtract.exe在命令行下进入ROM文件夹:cd D:\ROM在命令行下输入 D:\KDZtools\DZExtract.exe -x LGP500AT-00-V10a-454-XX-OCT-05-2010+0-DZ.dz完成后在当前文件夹下会有很多文件,其中boot.img 和 system.mbn_0,system.mbn_1,system.mbn_2 是我们所需要的文件。
4) 合并并解压system.mbn要解压system.mbn必须先将三个文件进行合并,继续在命令行下输入: copy /bsystem.mbn_0+system.mbn_1+system.mbn_2 system.mbn将system.mbn复制到一个新文件夹下,例如 D:\ROM\system,输入命令:D:\KDZtools\unyaffsmbn.exe system.mbn完成后将会得到官方rom中system目录下的所有文件,这时可以删除system.mbn了。
5) 制作基础rom包用7-zip或winrar等压缩工具新建一个zip格式压缩包将第3步得到的boot.img和第4步得到的system文件夹一起放到这个压缩包的跟目录下保存。
安卓Android ROM定制、移植教程。

CyanogenMOD移植教程转自秋叶随风Ivan;乐蛙论坛等。
第一章:环境的搭建一.系统选择和安装建议使用ubuntu LTS 10.04 X64新手朋友推荐Deepin Linux 基于ubuntu定制的,适合新手使用/download系统安装教程,以下方法通用于UBUNTU官方版本U盘安装:/index.php/Unetbootin光盘安装:/index.php/光盘安装搭建android编译环境:英文好的请猛击这里:WIKI:/index.php?title=Building_from_source1.安装JDK因为ANDROID大部分东西是java写的,所以首先我们需要安装JDK 打开终端按照如下命令输入或者直接复制粘贴:编译android 2.3 或者更新的版本请使用jdk 6$ sudo add-apt-repository "deb / lucid partner"$ sudo apt-get update$ sudo apt-get install sun-java6-jdk如果你需要编译的是2.2以下的版本请使用JDK 5,因为现在大家都是使用Gingerbread 以上的系统,这里就不介绍jdk5如何安装的了,如果有需要请度娘或者google2.安装各种依赖包64位环境:依然是终端中输入$ sudo apt-get install git-core gnupg flex bison gperfbuild-essential \zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \libgl1-mesa-dev g++-multilib mingw32 tofrodospython-markdown \libxml2-utils xsltproc如果这些依赖包依然不能解决你的问题,请参考如下:/wiki/HTC_Hero_(CDMA):_Com pile_CyanogenMod_(Linux)/source/initializing.html3.下载代码打开终端:在个人目录下面使用的是android 代替我的工程,用cm7代替CM7的源码用CM9代替CM9的源码如果要更新下载CM7的源码请输入:mkdir -p ~/binmkdir -p ~/android/cm7个人目录下的bin目录是为了保存repo 等更新脚本的依然再终端输入:curlhttps:///dl/googlesource/git-repo/repo > ~/bin/repochmod a+x ~/bin/repo可以把~/bin/repo 加入到环境变量里面终端输入sudo gedit /etc/environment在PATH=“”加入PA TH="/home/ivanhuang/bin:" ivanhuang为个人目录的名称,也就是计算机登录名更改结束之后终端输入source /etc/environment就能直接在终端中使用repo 命令了。
安卓ROOM定制教程

准备工作,下载一下三个文件【ROM定制工具】XDA智能手机网专用中文版厨房0.193(2012年5月更新__最新版)/thread-10994345-1-1.htmlVM虚拟机:/c0qbbzbkix雨林木风3.0的下载地址/c0l7qb6gd1第一、安装虚拟机这个很简单,在windows下像安装一般的程序一样安装就可以了。
注:1.不需要安装在系统盘下,最好单独成盘。
2.安装好虚拟机后不要急着运行,到刚才解压的文件夹下,把VMware+Workstation+7.0.1 Build 227600+汉化补丁.7z解压下来,在把里面的文件复制到你刚才安装虚拟机目录下。
第二,在虚拟机下安装linux在桌面双击虚拟机图标,点击新建虚拟机-下一步-选择安装盘镜像文件(我们刚下载的雨林木风3.0)-下一步-客户机操作系统(选择Linux)、版本(选择Ubuntu)-下一步-虚拟机名称自己选择、位置可选择(我个人是默认)-下一步-最大磁盘大小(建议选40G)其它的默认-下一步-完成第三、进入系统你在什么地方?可以自己选择一般都是保持默认。
前进键盘布局可以自己选择一般都是保持默认。
前进准备硬盘空间 (选择手动指定分区) 前进准备分区 点击下面(新建分区表...)继续后出现下图双击空闲后 (如下图)创建第一个分区后在双击空闲创建第二分区 如下图最后一个分区 (剩下的所有的空间) 如下图分区全部创建完后 点击 前进出现图下信息。
名字可以随便填 、登录名及登录密码一定要设好 下面计算机名会自动生成点击前进点击安装在终端窗口输入sudo passwd root 后 按回车 如下图这个时候叫你输入你刚才设置的登陆密码注(输入的密码是看不到的) 输入后按回车运行后会停顿在那里就按回车点击menu"在终端中运行"如下图击桌面,选择在终端中打开,然后出入javac,按回车出现下图输入apt-get install openjdk-6-jdk ,按回车等待下载完成待下载完成,再次输入javac,按回车,出现下图至此成功,建议将厨房换成0.192,开始制作吧『第三课』认识厨房1-导入ROM文件到工作文件夹(这个就不解释了)2-添加ROOT权限(就是ROM添加添加最高权限,这个一般都是基于官方修改ROM时用到,因为基于第三方ROM基本上都是已经ROOT了的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
教你制作定制版安卓系统(Android
ROM)
有点玩机兴趣的android爱好者,应该对custom ROM这种东西都不陌生,它大致就相当于我们封装定制版pc系统中用到的Ghost(*.gho)文件。
在介绍root权限获取的时候,就直接用的MoDaCo Custom ROM作为例子。
适用于Hero比较好的ROM还有不少,比如Drizzy’s Custom HeroROM等等,都可以在XDA上找到。
肯定有不少朋友感到很好奇,这些ROM都是怎么做的。
考虑到中文社区相关资料比较少,在这里抛砖引玉,大概原理介绍一下。
对于第三方ROM来讲,通常都包括两部分,一个recoveryimage,一个update.zip。
而大多数的第三方ROM的特色,就是加入了很多东西,比如superuser程序来获得root权限,busybox 来扩充命令行下的功能,各种各样的配置文件或者小工具,比如默认打开中文locale,等等。
这些看似神奇的改动,都是在update.zip里面搞的,custom recoveryimage的主要作用就是引导用户的操作,比如让你先备份,再应用update.zip,再重启之类的操作。
由于custom recoveryimage和update.zip的耦合性很小,所以不少custom ROM直接都用同一个custom recoveryimage,这个好像是出自MoDaCo作者之手。
再然后,我之前的文章已经有对recoveryimage的简单讲解,所以这里,我主要介绍一下update.zip的制作。
如果我们直接把MoDaCoROM中的update.zip解包,我们会发现有一个boot.img,一个data 文件夹,一个system文件夹,一个META-INF文件夹。
这个data文件夹放的是init.rc,而本来在系统中,init.rc就是在data目录下的。
当然,两者的作用不一样,这里的init.rc主要作用是开机执行你希望执行的命令,比如MoDaCo的init.rc就是install busybox。
而值得详细说明的,就是system文件夹。
MoDaCoROM版本的system下有一系列作者希望放到系统中的工具,对于apk文件,就放到app下,工具就放到bin和xbin下,依此类推。
换句话说,system或者data这个目录层次结构是取决于你自己的,你希望放的东西属于什么,应该运行在online系统的什么目录下,update.zip里面就应该是有相应的目录路径,然后东西就放在
里面。
具体点,我们现在要依样画葫芦,搞一个新的update.zip,那么第一步就是首先建立一个文件
夹
mkdir new-update
好,假设我新update.zip的作用就是预装我自己的一个程序,my.apk,那么,我建立对应的子
目录
mkdir -p new-update/system/app
cp my.apk !$
这样,system目录就完成了。
但是这时,update.zip的目录层次还没完,我们看MoDaCoROM 中的update.zip中有文件夹叫META-INF,这个文件夹很关键,除了根目录下的三个文件外,里面层层目录,就包括了一个文件,叫update-script,内容如下
show_progress 0.1 0
copy_dir PACKAGE:system SYSTEM:
set_perm_recursive 0 0 0755 0644 SYSTEM:xbin
set_perm_recursive 0 0 0755 0644 SYSTEM:sd
set_perm 0 0 04755 SYSTEM:bin/su
set_perm 0 0 04755 SYSTEM:bin/a2sd
set_perm 0 0 04755 SYSTEM:xbin/busybox
copy_dir PACKAGE:data DATA:
show_progress 0.2 0
format BOOT:
write_raw_image PACKAGE:boot.img BOOT:
show_progress 0.2 10
这里面的内容,大部分是针对你要做的修改设置的。
比如
copy_dir PACKAGE:system SYSTEM:
就是把system中新增的工具拷贝到手机上,然后
set_perm_recursive 0 0 0755 0644 SYSTEM:xbin
set_perm_recursive 0 0 0755 0644 SYSTEM:sd
set_perm 0 0 04755 SYSTEM:bin/su
set_perm 0 0 04755 SYSTEM:bin/a2sd
set_perm 0 0 04755 SYSTEM:xbin/busybox
就是设置MoDaCo ROM中新增程序的权限,然后
copy_dir PACKAGE:data DATA:
把data下的内容(就是那个init.rc)复制到手机上,然后
format BOOT:
write_raw_image PACKAGE:boot.img BOOT:
刷boot分区。
那我们这里没有这么多新增的东西,应该怎么写呢?
copy_dir PACKAGE:system SYSTEM:
set_perm_recursive 0 0 04755 SYSTEM:app/my.apk
就可以了。
你当然还可以做一些别的事情,比如加一个FORMAT DATA之类的^_^开个玩笑,千
万别这个干,不然你的数据就全没了。
好,那么也就是说,我们要在自己的new-update目录下也建一个/META-INF/com/google/目录,
然后把新的update-script扔进去。
完了么?差一点。
其实如果你没有别的需求了,那么就完了,可以把下面这一小块跳过。
下面这一小块,是关于boot.img的。
在如何修改Android系统的Ramdisk以及boot镜像文章中,我
们谈到,如果刷boot镜像有问题,就要用别的方法让系统boot我们自己的bootimage了,这个别的方法,自然就是用update.zip了。
MoDaCoROM版本的update.zip也包括了一个boot.img,但是如果我们有出于各种需求自己修改的boot.img,自然就可以替换掉原来的了。
当然注意,如果加了boot.img,那么update-script里面就不能漏掉
write_raw_image PACKAGE:boot.img BOOT:
这句。
好,到现在,我们的new-update目录下有
/system/app/my.apk
/META-INF/com/google/update-script
/META-INF/MANIFEST.MF
/META-INF/CERT.SF
/META-INF/CERT.RSA
boot.img
恩,那么就进入打包阶段。
你可能会问,这有什么难的,直接zip一下不就得了。
如果要是这么简单就好了,你打包后,必须把你的内容都sign一下,得到相应的cert,才能在fastboot模式
中被承认并成功刷机。
在sign你的文件之前,先做这么几件事
打包。
进入update文件夹,zip update.zip xxx xxxx xxxx xxxxxxxx。
什么意思呢,就是只把你需要的文件打包,不要用./*作为参数。
而且相对路径最好是在update下面,不要在外面用
zipupdate.zip ./update/*这种命令打包
去sun网站下载最新的jre
下载这个文件testsign
一定要用JRE1.6.0.16或者更高,我知道这个有点恶心,但是提供下载的testsigh.jar就是按照这个版本或者更高编译的,你用老版本就运行不了。
好,下下来以后,执行这个命令
~/jre1.6.0_16/bin/java -classpath testsign_path/testsign.jar testsign update.zip
update-signed.zip
稍微讲解一下,java程序是最新jre下的,testsign_path是你放testsign.jar的地方,建议放到sdk的tool目录下。
update是待sign文件,update-signed是指定的生成文件名。
sign执行完后,用unzip -l看,会发现
/META-INF/MANIFEST.MF
/META-INF/CERT.SF
/META-INF/CERT.RSA
三个文件的日期属性变了。
我怀疑就是重新生成了这三个文件。
但如果之前打包时候不包括这三个文件,sign完又不会新生成。
因为不管大局,所以我就没有仔细研究,有清楚的朋友恳请赐教。
好了,现在,把你自己的update.zip放到sd卡上,在fastboot下通过recovery image引导,执行update.zip,然后就享受你自己的修改成果吧:)
最后提醒一句,任何类似的操作之前,都把自己的手机做好备份。
此方法仅供参考,我不对任何
因此造成的破坏负责,嘿嘿。