1、 ROM 定制入门教程 1 / 105目录Rom 定制入门教程 .3第一章 初识 android.3Android 系统概述 .3第三方 Rom 文件组成 3App 下文件介绍 4第二章 JAVA 环境配置 8Java 环境的配置 .8第三章 厨房的搭建 .12Cygwin 安装步骤 .12厨房安装及配置 .15第四章 HTC 官方(第三方)ROM 提取 .18一、 官方 ROM 提取 18二、 第三方 ROM 提取 25三、 C8812 官方包提取过程 25第五章 开机动画的替换及位置变更 .31第六章 APK 的解包、修改、汉化、打包 32第一部分:APK 介绍,解包和打包常用软件 32第
2、二部分:系统 APK 的编译反编译及实例 .37第三部分:APK 汉化,去广告。 39第七章 ROM 美化 46第一部分:在线厨房使用 .462 / 105第二部分:ICS4.0 美化系列 57ICS4.0 美化之全局背景 57ICS4.0 美化之进度条大小颜色修改 .58ICS4.0 美化之电量百分比 59ICS4.0 美化之短信背景 59ICS4.0 美化之状态栏时间居中 62ICS4.0 美化之状态栏透明 63ICS4.0 美化之状态栏下拉透明 64ICS4.0 美化之通话背景修改 65ICS4.0 美化之拨号盘 65ICS4.0 归属地添加 66ICS4.0 美化之去电震动 66第八章
3、 刷机脚本说明 .71第九章 重启菜单增加选项 .78第十章 在设置中添加作者信息 .84第十一章 在 CM10 中添加归属地 87CM10 添加归属地方法 87第十二章 修改 build.prop 优化系统 93第十三章 CWM RECOVERY 编译 98第十四章 Cyanogenmod 内核编译方法 1013 / 105Rom 定制入门教程第一章 初识 androidAndroid 系统概述Android 的英文意思是机器人。当然我们这里只是一个系统的代号。例如微软的 windows 也称作视窗操作系统说白了 android 就是一个小型微缩化的 Linux 系统+ 通讯模块。Linux
4、 负责操作以及使用通讯则是通过通讯模块 radio 与手机的交流,所以我们简单的理解就是Android 为手机系统代号,而这个手机系统基于 Linux。第三方 Rom 文件组成4 / 105App 下文件介绍AccountSyncManager.apk 账号管理程序(删除设置里 账户与同步 进不去)ApplicationsProvider.apk 应用程序支持服务(我没删)AppSharing.apk app 分享(基本无用,我闪了)Bluetooth.apk 蓝牙(保留)BrcmBluetoothServices.apk 蓝牙相关(我没删)Browser.apk 自带浏览器(我饶过他了)Ca
5、lculator.apk 计算器(自己决定吧)Calendar.apk 日历(会自启动,但我觉得挺好用的)CalendarProvider.apk 日历存储服务(删除貌似会出现错误)CertInstaller.apk 证书安装程序(我留着)CheckinProvider.apk 签入服务(不知道干嘛的,建议别删)Clicker.apk 键盘校准(貌似是)com.htc.FMRadioWidget.apk 桌面收音机插件(插件类都可以删,自己决定)com.htc.MusicWidget.apk 桌面音乐插件5 / 105com.htc.NewsReaderWidget.apk 新闻插件com.h
6、tc.rosiewidgets.battery-1.apk 电池显示插件com.htc.rosiewidgets.note.apk 记事本插件com.htc.rosiewidgets.quickrecord.apk 快速记事com.htc.rosiewidgets.sandtimer.apk 沙漏com.htc.rosiewidgets.task.apk 未知插件 ,进程管理com.htc.rosiewidgets.tipcalculator.apk 小费计算器com.htc.rosiewidgets.todayinhistory.apk 历史上的今天com.htc.rosiewidgets.
7、translator.apk 翻译com.htc.rosiewidgets.wordoftheday.apk 每日一词(不学英语的没鸟用)com.htc.WeatherWidget.apk 天气插件ContactsProvider.apk 未知( 可能跟同步联系人相关,建议别删)CustomizationSettingsProvider.apk 自定义设置服务CustomizationSetup.apk 自定义设置 DCSImpl.apk 集散控制系统服务DCSUtility.apk 集散控制系统公共程序组件DebugTool.apk 调试工具(估计可删)DefaultContainerSer
8、vice.apk apk 安装服务(别删)DownloadProvider.apk 下载管理器 (别删)DrmProvider.apk DRM 数字版权管理(我没删)Facebook.apk Facebook(国内连不上,没啥用)FieldTest.apk 测试程序(别删,删了没信号)FilePicker.apk 文件定位(我没删)Flashlight.apk 手电筒(我没删)Flickr.apk Flickr 应用(国内连不上,没啥用)GenieWidget.apk 天气与新闻(自启动,自上网,重点删除对象)Gmail.apk Gmail(google 的东西通常都会自启动,建议删除)Goo
9、gleCalendarSyncAdapter.apk 谷歌日历同步适配器(我要用日历,没删)GoogleContactsSyncAdapter.apk 谷歌联系人同步适配器(担心他自上网,我删了)GoogleFeedback.apk 谷歌反馈(反馈啥,直接干掉)GooglePartnerSetup.apk Google 助手(直接干掉)GoogleBackupTransport.apk 谷歌备份传输(我相信没大用)GoogleQuickSearchBox.apk 谷歌搜索(删了影响到桌面的搜索插件,自启动,干掉他)GoogleServicesFramework.apk 谷歌同步支持服务框架(删
10、了不能同步联系人,不能登录 google,我留着呢)HTC_IME.apk 输入法HtcAddProgramWidget.apk 向桌面添加程序的小插件(留着,删了你会6 / 105后悔的)HTCAlbum.apk HTC 相册(挺好用的,前提是你屏蔽掉非照片文件夹,附件里有)htcbookmarkwidget.apk HTC 书签小插件(干沉了)HtcCalculatorWidget.apk 计算机小工具(一个插件占那么大屏幕,干掉)htccalendarwidgets.apk HTC 日历小插件(我留下了)HTCCamera.apk 照相机(没人想把它删了吧)HtcClockWidget.
11、apk 闹钟小插件HtcContacts.apk 联系人htccontactwidgets.apk HTC 联系人小插件(我觉得没用)HtcCopyright.apk HTC 版权HtcDialer.apk 拨号(当游戏机玩的可删)HtcFacebook.apk Facebook(干掉)HtcFMRadio.apk 收音机HtcFootprints.apk HTC 足迹(增加耗电,干掉)HtcFootprintsWidget.apk HTC 足迹小插件(干掉)HtcLocationPicker.apk 位置(就是设置里用来设置是否可以使用无线网络来确定位置的功能,保留)HtcLocationS
12、ervice.apk 定位服务(留着)HtcLockScreen.apk 锁屏文件mailwidgets.apk HTC Mail 小插件(我干掉了)HtcMessageUploader.apk Message Uploader(未知,我留着)htcmsgwidgets.apk HTC 信息小插件HtcMusic.apk 音乐HtcPhotoWidget.apk HTC 照片小插件HtcProfilesWidget.apk 选择声音或震动小插件(挺有用)HtcRingtoneTrimmer.apk 铃声剪辑(无视,删了)HtcRingtoneWidget.apk 选择铃声的小插件(别删,删了设
13、置里没法该铃声)HtcSettingsProvider.apk HTC 设置htcsettingwidgets.apk HTC 设置小插件,WIFI、移动网络、GPS、飞行模式、蓝牙的开关(好用)HTCSetupWizard.apk HTC 安装向导(删了会影响重新安装,我删了)HtcSoundRecorder.apk 录音(删了)HtcStreamPlayer.apk 流媒体播放器(删了,用 rockplayer)HtcSyncwidget.apk HTC 同步小插件(删了)HtcWeatherWall*.apk HTC 天气壁纸(删了)HTMLViewer.apk HTML 查看器(别删)
14、install_flash_player.apk flash 插件(你想看优酷吗)LiveWall*s.apk 动态壁纸(浪费电,干掉)LiveWall*sPicker.apk 动态壁纸选择器(留着吧,万一哪天想用了)7 / 105MagicSmokeWall*s.apk 魔法壁纸(删了)Mail.apk Mail 应用(没邮件,删了)MarketUpdater.apk 市场更新(不用市场的可删)MediaProvider.apk 媒体数据存储服务(会自启动,但删了不知有什么后果,我没删)MediaUploader.apk Google 媒体数据上传服务(自启动,不知什么用,我没删)Mms.a
15、pk 信息(我删了,我用的超级短信)Mode10Wall*s.apk 10 月份墙纸(留着吧)NetworkLocation.apk 谷歌网络定位服务(没敢删)NewsReader.apk 新闻(删了)PackageInstaller.apk APK 安装程序(别删)PCSCII.apk PC 同步( 貌似是)PDFViewer.apk PDFPhone.apk 电话(别删,删了直接崩溃)PicoTts.apk 文字语音转换引擎(设置-语音输入与输出中)(我删了)PluginManager.apk Sense 插件管理QxdmLog.apk 貌似是电话相关的restartapp.apk Res
16、tart 应用(不知有啥用)(留着吧)Rosie.apk 桌面的主程序RSS.apk 新闻(删了)Settings.apk 设置SettingsProvider.apk 设置服务(别删)SetupWizard.apk 设置向导(切莫删除,删了 91 连不上,而且必须要重刷才行!血的教训啊)SocialNetworkProvider.apk (社交网络)就是 Facebook、Flickr 的程序(干沉)Stk.apk 手机卡服务(删了开机报错)Talk.apk GTalkteeter.apk 平衡球游戏TelephonyProvider.apk 电话组件TtsService.apk 文本到语音
17、服务(我删了)TransferData.apk 传输数据,可以将其他手机的联系人等信息通过蓝牙传输过来Updater.apk 程序更新器 (会自启动,但没敢删)UpgradeSetup.apk 更新程序UploadProvider.apk HTC 媒体上传器(没敢删)UserDictionaryProvider.apk 用户字典( 功能未知,自己考虑要不要删)Vending.apk 电子市场(咱用黑市,嘿嘿)VisualizationWall*s.apk 自带墙纸VoiceSearch.apk 语音搜索(我删了)8 / 105VpnServices.apk vpn 代理(别删)Weather.
18、apk 天气组件WeatherAgentService.apk 天气组件WeatherProvider.apk 天气组件WeatherSyncProvider.apk 天气组件WidgetDownloadManager.apk 任务栏提示图标WifiRouter.apk wifi 路由WorldClock.apk 世界时钟第二章 JAVA 环境配置Java 环境的配置Java 环境需要下载 jdk 程序来安装,JDK : sun 官方下载页面附件中已上传 jdk-6u24-windows-i586.exe, 其他版本也可以,只是配置环境时,路径或文件名因为 JDK 版本号不同而稍有差别,使用其
19、他版本 JDK 的同学需要注意修改一下。1. 安装 JDK 最好默认 C 盘,如果在别的盘,下面环境配置的路径请自行对应修改2. 设置环境变量,这里一需要设置 3 个变量:JAVA_HOME、PATH、CLASSPATH(系统变量都是以 32 位系统为例,64 位系统请在所有变量 C:Program Files 后面加(x86)即 C:Program Files(x86),以下不再累述)9 / 105.右键我的电脑属性高级.JAVA_HOME:单击“ 环境变量 ”按钮单击“系统变量 ”区域的“新建”按钮在“变量名”文本框中输入 JAVA_HOME,在“ 变量值”文本框中输入 JDK 的安装路径
20、C:Program FilesJavajdk1.6.0_24(路径或 JDK 版本号不同的请做相应修改), 单击确定10 / 105.PATH :在系统变量中查看 PATH 变量,如果存在 PATH,则在最末尾多添加一个;C:Program FilesJavajdk1.6.0_24bin(注意前面有个 “;”不要遗漏);如果不存在,则新建变量 PATH,设定变量值为:C:Program FilesJavajdk1.6.0_24bin11 / 105.CLASSPATH:在系统变量中查看 CLASSPATH 变量,如果存在 CLASSPATH,则在最末尾添加 ;C:Program FilesJa
21、vajdk1.6.0_24libdt.jar;C:Program FilesJavajdk1.6.0_24libtools.jar;.如果不存在,则新建一个,设定变量值为:C:Program FilesJavajdk1.6.0_24libdt.jar;C:Program FilesJavajdk1.6.0_24libtools.jar;.3. JAVA 环境配置完成,下面我们来验证一下配置的是否正确。开始运行CMD,DOS 窗口输入 JAVA,回车12 / 105如果这时候你能够看到如下图一大串 JAVA 命令介绍,那么恭喜你,JAVA 环境配置成功;反之未出现,请按照教程在重新细心地再做一次
22、。第三章 厨房的搭建Cygwin 安装步骤1. 解压下载到的 Cygwin 压缩包(比如解压到 C 盘,解压出来的东西包括:Cygwin_packages 文件夹、 setup.exe、安装说明.txt),路径不能带中文,最好也不要带空格。解压后不要对 Cygwin_packages 文件夹内的文件有任何操作,否则安装可能不成功。2. 运行 Setup.exe 安装程序, 选择 “Install from Local Directory“,然后点击下一步;13 / 10514 / 1053. 指定根目录。也就是你想要安装 Cygwin 的位置(但不能是本压缩包解压出来的 Cygwin 文件夹)
23、。这里默认 C:Cygwin,注意要确定文件夹名种没有空格。然后点击下一步;4. 指定 Local Package Directory,必须指定路径到cygwin_packageshttp%3a%2f%2fmirror.its.uidaho.edu%2fpub%2fcygwin%2f 文件夹。假如跳出了一个警告对话框,点击确定。15 / 1055. 当安装程序显示出所有的包名时,点击上方第一个的 “All Default“ 为 “All Install“ (点击那个环形箭头符号)(这一步安装大概需要 3 分钟)。6. 点击 下一步,安装程序就会为你安装好厨房需要 Cygwin 提供的一切支持。
24、16 / 1057. 点击桌面上的 Cygwin 快捷方式以便为你创建 home 文件夹。(如果此步一闪而过注意检查第 5 步厨房安装及配置a) 将下载到厨房解压到 C:CygwinhomeAdministrator(Administrator 是你当前计算机的登录用户名),解压完厨房,C:CygwinhomeAdministrator 目录下必有:original_update,scripts,tools,menu 这几个厨房文件b) 点击桌面上的 Cygwin 快捷图标,输入命令:./menu,回车,就可以进入厨房了17 / 105PS:一个小技巧,使用用文本编辑器(例如 EmEditor
25、,可以使用系统自带的记事本程序)打开 C:CygwinhomeAdministrator.bashrc_profile,在最后面添加以下一行:./menu 以后直接点击 Cygwin 快捷方式就可以直接进入厨房了。c) 讲解厨房内各命令行解释: 基础选项18 / 1051 - 导入 ROM 文件到工作文件夹【导入官方固件或者第三方底包】2 - 添加 Root 最高权限 【这个不用说了吧,必须用到】3 - 添加 BusyBox 指令集 【linux 下的一些命令支持,了解】4 - 关闭开机画面音乐 【一般用不到,了解】5 - 对所有 Apk 文件进行 Zipalign 操作,优化内存占用 【对系
26、统所有的 Apk 进行优化】6 - 更改 ROM 的 Wipe 操作状态 【选择设置后刷机前会自动清空设备数据】7 - 更改 ROM 显示名称 【修改设置-关于-ROM 版本,不同包更改后可能卡屏,自性测试】8 - 显示工作文件夹信息 【查看 ROM 修改进展情况】 高级选项11 - 对您的 ROM 进行 Deodex 操作 【一般官方固件会出现 APK 和 odex两个文件,合并后才是完整的 APK,才可以美化或者反编译】12 - boot image 工具(解压/打包/etc 脚本) 【分解内核、替换内核】13 - 添加 /data/app 支持功能 【添加 APK 软件,此处添加的软件,
27、没有ROOT 权限也可以删除】14 - 添加支持 /etc/init.d 刷机脚本(busybox run-parts)【了解即可】15 - 解压 data.img 功能 【一般提取官方 ROM 后会有这个文件】16 - 签名 APK 安装文件或 ZIP 刷机文件 【这个不用解释】17 - 对 update-script 或 updater-script 刷机脚本进行转换 【脚本转换在厨房定制时会弹出全部说明,也可论坛搜索】18 - 混合菜单/插件脚本 【某些机型比如三星 tar 包会需要】 溢出选项(传统选项)21 - 检查 update-script 刷机脚本是否有错误22 - 添加无线共
28、享功能 ,Android 2.1 以上不需要此功能 【目前已经很少用】23 - 为提升速度添加内置内存分配优化 【一般官方 ROM 才需要调整,第三方底包作者都已修改】24 - 添加 Nano 文本编辑器 +sysro/sysrw 【调整 system 分区读写权限脚本,了解】25 - 添加 Bash 【shell 命令的解释器】 26 - 添加 Apps2SD 功能 【简单说就是支持把软件安装到 SD 卡上】27 - 添加支持自定义开机动画功能 【替换开机动画】28 - 移植工具 (仅限测试功能) 【移植会需要】99 - 从工作文件夹建立 ROM 刷机包 【修改后使用此项打包 ROM】19
29、/ 105第四章 HTC 官方(第三方)ROM 提取一、 官方 ROM 提取这里我们以 G12/Desire S 为例,其他 HTC android 机型与此相同,电脑系统环境以 XP 为例,win7(或 Vista)略有不同。1. 请打开 C:Documents and SettingsAdministratorLocal SettingsTemp 文件夹,其中 Administrator 文件夹是你登陆计算机的用户名,可能有所不同。删除该文件夹下所有以 开头的文件夹;2. 执行官方 RUU 文件,待首个进度条完成出现下一步时不要对 RUU 界面有任何操作;20 / 1053. 将 RUU
30、界面拖到旁边,不影响操作即可,然后进入 C:Documents and SettingsAdministratorLocal SettingsTemp 文件夹,我们会看到有 2 个以 开头的文件夹,进去后看里面包含 rom.zip 的文件夹,即是我们想要的;(Win7 或 Vista 系统此处有不同,后文有补述)4. 将 ROM.zip 拷贝出来备用,此时,可以关闭 RUU 程序;5. 将拷贝出来的 ROM.zip 复制到 C:cygwinhomeAdministratororiginal_update文件夹下(Administrator 为计算机当前登录的用户名);6. 打开 Cygwin,
31、输入./menu,回车,进入厨房页面;21 / 1057. 输入编号 1,回车,分解 ROM.zip;22 / 1058. 按提示一路回车,到分解 system.img 时,需要注意一下,G12 的官方 rom是 EXT4 分区格式,这里选择 Ext2Explore 来进行分解,输入 2,回车;9. 稍等一会,弹出 Ext2Explore 软件,在软件中打开C:cygwinhomeAdministratorWORKING_072511_172533system 文件夹下的system.img 文件(WORKING_072511_172533 文件夹名称会有不同,072511_172533 代表
32、的是文件夹创建时的时间:月日年_时分秒);23 / 10510. 右键点击打开的文件,选择“save”,保存到C:cygwinhomeAdministratorWORKING_072511_172533system 文件夹;24 / 10511. 保存完毕后,关闭 Ext2Explore 软件,回到 Cygwin 页面,回车确定,然后选择 3,回25 / 10512. 按提示回车,查看 ROM 信息13. 至此,官方 rom 提取分解完成,我们可以进入C:cygwinhomeAdministratorWORKING_072511_172533system 文件夹,查看已经分解好的 rom 文件
33、。厨房中对 rom 的其他优化操作,后面的教程中我们将进一步讲解。14. PS:前文第 3 步我们说到 win7 或 vista 系统会有所不同,为了保持教程的连贯性,中间没有插述,现在再最后补充说明一下。Win7(或 Vista)运行官方 RUU 程序后,打开任务管理器,进入进程标签第一个进程应该就是adb.exe 了,右键点击它,选择打开位置,然后找到此文件夹下的 rom.zip。拷贝出来后,再关闭刷机程序。后续操作接教程第 5 步。26 / 105二、 第三方 ROM 提取 1. 第三方 ROM 一般都是采用 zip 格式封装后签名的,我们可以使用winrar、winzip、7z 等等压
34、缩软件来解压缩,如图:2. 解压后我们可以看到,里面包含 system、META-INF 2 个文件夹和 boot.img一个文件,META-INF 文件夹里是刷机脚本文件,system 里是系统 rom 所有的文件,boot.img 是内核包。对 rom 的修改,基本都是在 system 文件夹中操作,注意部分文件,包括 boot.img 不可以任意替换,否则可能导致不能开机,这在后面的教程中会进一步详细说明。部分第三方 ROM 可能还包括其他文件或文件夹,比如 MDJ 团队的 VU 系列,同一刷机包可供多种机型使用,它还含有 sdcard、devices、kernel 等目录,这种封装格式
35、在以后的教程中将进一步学习。3. 第三方 rom 其实还有一种形式,就是基于 recovery 备份修改,因为兼容性较差,在此不做介绍,各位在学习一段时间后有兴趣可以自行尝试。(可删除)27 / 105三、 C8812 官方包提取过程1. 下载 strawberry perl。官方地址:http:/ 下载解包脚本文件:http:/ 解压解包脚本得到下列文件。4. 将官方包放在上面三个文件所在地,如图:28 / 1055. 运行 split_update.pl.bat 或者 split_updata.pl.bat,解包所得注:output 中就是对应的分区映像,不可用 bootimg.exe 解压6. 文件名调整,将 output 中的文件改为后面对应的文件。boot.img-system.imgsystem.img-userdata.imgfile21.mbn-cust.imgfile25.mbn-boot.imgappsboot.mbn-recovery.img7. 各个分区映像的解包(以 system.img 为例)。这步需要另一个软件DiskInternals Linux Reader:http:/ 软件运行后如图:29 / 105