如何制作三星rom刷机包下载

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)红米手机 &
电视盒子 &
智能硬件 &
神仙级手机控
楼主的荣誉
扫码下载App一键签到 升级加速
安卓rom包制作教程!(小白慎入)
&来自老版论坛
扫一扫!手机看帖更爽
经常看到网友问:哥几个,推荐一个好用的ROM啊?这时候我们要有信心说:自己制作的ROM才是最好的ROM。当然制作ROM并不是那么简单,但也不是难到一般人做不了。高端的大大可以从安卓源码开始编译ROM,但也是以团队的形式,比较出名的有CM和MIUI。一般人还是只能从底包提取文件进行修改制作。但这也不是轻易能完成的事。我写这个教程只是出于爱好,本人并非计算机专业,所以写的并不是很专业。但正因为如此,才能给大家更多的信心,我都能简单制作,你还怕你不行?本篇教程采用一种新的模式给大家展示这个教程。将会从简单的知识普及,制作工具,步骤等说明,工程巨大,错误也不少,但还是希望能帮助到大家。以下内容参考到的作者较多,就不一一详说了,感谢这些兄弟的奉献,让我们有一个更好的玩机空间。
关键词:java环境配置
制作工具 update-script编写美化 集成 编译反编译
制作目的:
培养个人兴趣,感受动手动脑的快乐。
学习手机基本知识,最终动手制作自己的ROM。
帮助那些需要帮助的朋友(说不定有人喜欢你制作的ROM)
制作原理:
安卓基础知识普及:
Android一词的本义指“机器人”,同时也是Google于日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。目前,最新版本为Android 2.4Gingerbread和Android 3.0Honeycomb。
:官方的系统包,相当于我们的Windows的操作系统,事实上它相当于一个纯净版或者内核版的系统包,是最底层的东西。扩展名为sbf,底包通常是官方发布的,ROM作者直接拿来用的,可以选择的版本不会太多,通常更新也不会频繁。底包通常使用PC端刷机工具(RSD)配合Bootloader的工程模式完成刷入。
(镜像包):广大玩家制作的底包增强包,通常表现为一个update.zip文件。升级包是对底包的扩展和增强,包含一系列的辅助工具和服务,没有中文的底包通过升级包可以实现中文。当然,很多功能也是通过升级包来实现的。可以说,在刷新了底包后,配合刷新相应的升级包,这样才形成一个完整系统。升级包通常通过Recovery工具,从SD卡读取刷入。
Bootloader&&:相当于电脑里面的bios(基本输入输出系统),手机一开机,控制手机的就是Bootloader。我们通常所说的进入Bootloader,实际上是指进入Bootloader的工程模式,既是刷机模式,在此模式下可以将moto的sbf文件(底包)刷到机器里面。
Recovery : Moto 手机内置的一个独立备份恢复工具,类似电脑上的一些一键还原系统,既是在系统出现问题的时候仍然可以打开的一个模式。Moto 的 Recovery 主要提供了WIPE(硬启,清除数据,恢复出厂设置)和Update(通常用于安装升级包,update.zip)功能。 Recovery是不能直接刷新的底包的,通常它刷新的升级包(update.zip)的方式是:自动寻找SD卡上的特定文件,然后写入。
基带(Baseband):是手机中的一块专门的代码,或者可以理解成为一个专门负责通讯的BIOS,负责完成移**络中无线信号的解调、解扰、解扩和解码工作。基带的不同会造成信号效果的不同。因为各地、各网络实际情况不同,需要大家自己选择适合自己的基带。
WIPE :wipe后就恢复了出厂设置,包括联系人、短信、安装的软件等全部删除。俗称硬启,恢复出厂设置。注意,wipe后app2sd和root权限需要重新做。而且app2sd重要的分区步骤也要重新来过。某些说法提到在刷新底包或者升级包前需要进行WIPE操作,我对此操作的必要性不是很确定。
OpenRecovery(简称OR) :由于MOTO很蛋疼的在update.zip上做了一些手脚,这些东西影响到了升级包的制作。于是高手们就搞出了一个OpenRecovery,这其实就一个第三方的增强版的Recovery工具,某些OpenRecovery已经发展成为一个具有很多功能的小系统了(类似WindowsPE),在这个OR中,可以完成很多东西,我们完全可以把OR想象成电脑上用的应急PE系统,在上面可以调整超频、基带、app2sd、更换启动画面、wipe、改变时区、调整键盘布局,甚至链接USB当读卡器等等,凡是recovery能做的,OR都可以做,recovery不能做到,OR可以做到。一般OpenRecovery在sd卡上有两个部分存在:update.zip和OpenRecovery目录,最新的GOT底包添加了新的一个OpenRecovery-CFG目录,用来存放各种个人文件。update.zip就是用来坑MOTO一个标准的的zip升级包,而真正的升级包要放在/sdcard/OpenRecovery/updates目录下。
App2sd :说白了,其实很简单,就是把APK文件安装到sd卡上,android是Linux脱胎而来,App2sd的原理就是对SD卡进行分区,然后把SD上划分出来的某个分区合并到系统分区中去(听不懂,不要紧),划分出来的分区是Ext2格式,一般Windows不能识别,不要惊慌,正常现象。App2sd对sd卡要求比较高,如果感觉app2sd后比较慢,可以试试换一张C4的sd卡。因为在2.1的环境下,app2sd需要对sd进行分区,操作比较复杂,E文不好的小白或者电脑基础薄弱的小白容易失误。建议对Android非常熟悉了再做App2sd。
Root :大家都知道android系统脱胎自Linux,也正是这个开源的内核让广大玩家可以自由发挥。Root是Linux系统下的系统级账号,拥有系统的全部权限,Android设计上的不开放这个用户的,目的是为了保护系统安全,但是这个保护似乎也带来很多不便。于是就一些工具和方法来开放这个账号。开放Root账号的方法似乎有很多,这里就不再细说。原理上分析,root的账号,应该通过在Android系统安装某个系统级别的服务,该服务具有root权限,然后其它需要root权限的程序再向这个服务请求root权限。WIPE、刷机都有可能会造成root权限失效,需要重新root权限。
额外说明:
从原理上分析,通常
底包,Bootloader,Recovery,基带都是可以刷新替换的,升级包当然更可以。但是底包、Bootloader很少会有第三方开发或者修改的,一般都使用官方发布的。底包有时候会内置Bootloader、Recovery,这样的底包刷新时会连上述两者一起更新(推测结果,不确定)。更新这样的底包是有危险的,有可能会造成Bootloader损坏,这个东西损坏了,基本就是变砖了,真正的变砖,只能花钱去修了。只有这个东西没坏,就不是砖。②
我们通常所说的刷机ROM实际是升级包,升级包是对应于特定的底包制作的,所以刷机时务必确保使用的底包和升级包版本上保持一致。③
需要注意版本号的还有:Bootloader版本、基带版本、Recovery版本④
目前有些OpenRecovery工具支持底包、升级包一起从SD卡读取刷入⑤
似乎刷机前确保系统干净整洁是很重要的,很多教程提到要通过 WIPE - 刷底包的步骤来确保刷机前的干净,实际上如果底包版本没有变化,刷底包似乎、也许、大概、可能是不必要的。
系统结构及文件简单剖析:
一个常见的自制ROM根目录会有以下几个文件夹及文件:
data,META-IN,system,boot.img(锁了BL的可以无视这个,但制作时需要它,打包时把它拿出来。)
系统目录说明
①应用程序安装目录
1) 系统应用程序所在目录/system/app/*.apk
2)用户安装应用程序所在目录/data/app/*.apk
3) 注意:a)在模拟器中,每重启一次,/system/app/下的应用都会被还原,有时/data/app下也会被清除
b)若在/system/app和/data/app下有重名的应用,不一定会启动哪一个,尤其是在adb install杀死正在运行的程序时,有时旧的就会被启动
②.用户数据所在目录
/data/data/应用包名/shared_prefs配置文件
/data/data/应用包名/databases/*库文件所在目录
③. SD卡对应目录/sdcard/
而我们需要处理的只是两个文件夹里面的内容:
data/app ——该文件夹里的文件可以全删,也可以自由添加自已所需安装的应用软件,刷机安装后可以自由删除。
system/app ——在这个文件夹下的程序为系统默认的组件,可以看到都是以APK格式结尾的文件,但有些系统自带的ROM里面还有和APK文件名对应的odex文件。我们主要是针对该文件夹里的文件进行精简,如果有odex文件的,删除APK文件名时同时也删除与其对应的odex文件。虽然一般定制时只是对以上两个文件夹里的文件做相应的增减,但我们还是一起来了解system相应目录常见相应文件的用途吧。rom版本不同,里面的APK也会不一样,其它文件夹下需要改动的较少,或者不需要改动。但app文件下是制作时的重点,所以详细列出:
\\system\\app
\\system\\app\\AlarmClock.apk
\\system\\app\\Browser.apk
\\system\\app\\Bugreport.apk Bug报告
\\system\\app\\Calculator.apk
\system\app\Calendar.apk
\\system\\app\\CalendarProvider.apk
\\system\\app\\Camera.apk
\\system\\app\\Contacts.apk
\\system\\app\\DownloadProvider.apk
\\system\\app\\DrmProvider.apk DRM数字版权提供
\\system\\app\\Email.apk
电子邮件客户端
\\system\\app\\FieldTest.apk
\\system\\app\\GDataFeedsProvider.apk GoogleData提供
\\system\\app\\Gmail.apk Gmail电子邮件
\\system\\app\\GmailProvider.apk Gmail提供
\\system\\app\\GoogleApps.apk
谷歌程序包
\\system\\app\\GoogleSearch.apk
\\system\\app\\gtalkservice.apk GTalk服务
\\system\\app\\HTMLViewer.apk HTML查看器
\\system\\app\\Htc**.apk
集成**客户端PEEP
\\system\\app\\IM.apk
即使通讯组件包含MSN、yahoo通
\\system\\app\\Launcher.apk
启动加载器
\\system\\app\\Maps.apk
\\system\\app\\MediaProvider.apk
多媒体播放提供
\\system\\app\\Mms.apk
短信、彩信
\\system\\app\\Music.apk
音乐播放器
\\system\\app\\PackageInstaller.apk apk安装程序
\\system\\app\\Phone.apk
电话拨号器
\\system\\app\\Settings.apk
\\system\\app\\SettingsProvider.apk
\\system\\app\\SetupWizard.apk
\\system\\app\\SoundRecorder.apk
\\system\\app\\Street.apk
\\system\\app\\Sync.apk
\\system\\app\\Talk.apk
\\system\\app\\TelephonyProvider.apk
\\system\\app\\Updater.apk
\\system\\app\\***Services.apk ***服务
\\system\\app\\Vending.apk
制造商信息
\\system\\app\\VoiceDialer.apk
语音拨号器
\\system\\app\\VoiceSearch.apk
app文件夹内放的就是内置软件,有不想要的,直接删除之。请在删除之前先弄清楚它能不能删除。有些官方内置的软件,删除了ROM就废了。当然,你也可以在没弄清楚的情况下乱删一气,只要在刷机完发现问题之后,把删除的软件,一个个放回去排查,刷个十遍八遍,大约也就搞定了。所以我们要佩服那么敢于探索的先驱,不容易啊。
fonts文件夹放的是手机的字体,如果没有美术细胞的人就不要乱改,改字体有时候会死人的,刺眼、字形不协调、大小不一致等等诸如此类。要改也刷机完以后再改。具体方法要参见自己区的人发的帖子。
lib文件夹顾名思义,是内置软件的库文件。有些软件需要动态库支持才能正常使用的,比如常见的输入法之类的。所以,如果你向一个原本可以正常使用的ROM中加入了新的软件之后,反而出现
某程序意外关闭
某程序意外结束的情况后,那么基本上就是你忘了把库文件给它移动过去。
bin文件夹中放的是系统内置的工具,像什么busybox,su之类的都在里面,没事不要删除它,可以添加,但不要删除。
etc文件夹中放置的是系统的设置,诸如无线、GPS、DHCP、拨号、APN列表之类的设置。这个目录中,如果你改了重要的CONF文件,则可能系统出问题。也可以改一部分不重要的东西(比如说APN列表)而不出现问题,但貌似APN列表没必要改。
framework目录就是系统的UI了,想改界面的人应该改这个目录中的文件。。大约也就是替换一些什么图片,换掉界面框架什么的,改改字体颜色什么的?以达到改换界面的目的。& &
media目录是系统内置的媒体文件,如开机音乐,内置的通话铃声、信息铃声、闹钟铃声,可以改,但格式是OGG的,可以自己去搜索如何换格式。
usr目录是系统的部分使用配置,包括键盘映射表什么的,没事不要改。。。
xbin目录,好吧,这个目录可以放一些工具,而且貌似官方本身在里面放了一个tcpdump,是截获网络数据包的。没试过删除它,推荐有冒险精神的可以删除之,再将结果告诉我们。
& && &system:系统分区.我们刷机器一般就是刷的这个分区.
& && & userdata:数据分区.
& && & cache:缓存分区
& && &recovery:Recovery分区,相当于建立在hboot与android系统间的一个中间层,如名字一般,主要用于系统调试和恢复。.
& && & boot:存放内核和ramdisk的分区.
& && & hboot:这个是SPL所在的分区,即 bootloader
& && & splash1:这个就是开机第一屏幕了.
& && & radio:这个是无线所在的分区,即基带所在分区。
& && & misc:其他分区
3.创建一个刷机包,update-script脚本语法说明
①简单举例:创建一个update.zip文件是很简单的事情,你所需要做的就是将文件放置到与Android文件系统中相对应的文件夹中,然后编写一个用来复制这些文件到手机对应位置的update-script, 文件。作为举例,比如安装Calculator.apk到system/app文件夹,复制libsec-ril.so文件到system/lib文件夹:新建一个空文件夹(本文例:G:\android)新建用来放置Calculator.apk的文件夹C:\android\system\app以及用来放置libsec-ril.so的文件夹G:\android\system\lib。创建用来放置update-script文件的文件夹G:\android\META-INF\com\google\android。
创建一个名为updater-script的文件,其内容如下:
show_progress 0.1 0
copy_dir PACKAGE:systemSYSTEM:
show_progress 0.1 10
行1和行5:显示进度条
行3:复制刷机包中的system文件夹到Android的/system
注意:你应该在文件的最末尾多添加一个空行(也就是行6)将C:\android压缩中的所有内容压缩为zip包(千万记住:是压缩android这个文件夹中的内容,不是android文件夹本身)为android.zip签名
②基础语法篇
1.copy_dir
语法:copy_dir &src-dir& &dst-dir& [&timestamp&]
& src-dir&表示原文件夹,&dst-dir&表示目的文件夹,[&timestamp&]表示时间戳
作用:将&src-dir&文件夹中的内容复制到&dst-dir&文件夹中。&dst-dir&文件夹中的原始内容将会保存不变,除非&src-dir&文件夹中有相同的内容,这样&dst-dir&中的内容将被覆盖
举例:copy_dir PACKAGE:system SYSTEM:(将升级包中的system文件夹复制到手机中)
语法:format &root&
& root&表示要格式化的分区
作用:格式化一个分区
举例:format SYSTEM:(将手机/system分区完全格式化)
注意:格式化之后的数据是不可以恢复的
语法:delete &file1& [... &fileN&]
& file1& [... &fileN&]表示要格式化的文件,可以是多个文件用空格隔开
作用:删除文件1,2到n
举例:delete SYSTEM:app/Calculator.apk(删除手机systen文件夹中app中的Calculator.apk文件)
4.delete_recursive
语法:delete_recursive &file-or-dir1& [... &file-or-dirN&]
& file-or-dir1& [... &file-or-dirN&]表示要删除的文件或文件夹,可以使多个,中间用空格隔开
作用:删除文件或者目录,删除目录时会将目录中的所有内容全部删除
举例:delete_recursive DATA:dalvik-cache(删除/data/dalvik-cache文件夹下的所有内容)
5.run_program
语法:run_program &program-file& [&args& ...]
& program-file&表示要运行的程序,[&args& ...]表示运行程序所加的参数
作用:运行终端程序
举例:run_program PACKAGE:install_busybox.sh(执行升级包中的install_busybox.sh脚本)
6.set_perm
语法:set_perm &uid& &gid& &mode& &path& [...&pathN&]
& uid&表示用户名称,&gid&表示用户组名称,&mode&,表示权限模式,&path& [... &pathN&]表示文件路径,可以使多个,用空格隔开
作用:设置单个文件或目录的所有者和权限,像linux中的chmod、chown或chgrp命令一样,只是集中在了一个命令当中
举例:set_perm 0
SYSTEM:etc/init.goldfish.sh(设置手机system中的etc/init.goldfish.sh的用户为root,用户组为shell,所有者以及所属用户组成员可以进行读取和执行操作,其他用户无操作权限)
7.set_perm_recursive
语法:set_perm_recursive &uid& &gid& &dir-mode&&file-mode& &path& [... &pathN&]
& uid&表示用户,&gid&表示用户组,&dir-mode&表示文件夹的权限,&file-mode&表示文件的权限,&path& [... &pathN&]表示文件夹的路径,可以多个,用空格分开
作用:设置文件夹及文件夹中的文件的所有者和用户组
举例:set_perm_recursive 0 0
SYSTEM:app(设置手机system/app文件夹及其中文件的用户为root,用户组为root,app文件夹权限为所有者可以进行读、写、执行操作,其他用户可以进行读取和执行操作,其中的文件的权限为所有者可以进行读写操作,其他用户可以进行读取操作)
rwx 对应421 R读权限 w写权限 x执行权限
5代表R+X,6代表R+W,7代表R+W+X。一般系统文件常见的权限是644。
8.show_progress
语法:show_progress &fraction& &duration&
& 表示一个小部分& &表示一个小部分的持续时间&
作用:为下面进行的程序操作显示进度条,进度条会根据&duration&进行前进,当操作时间是确定的时候会更快
举例:show_progress 0.1 0(显示进度条当操作完成后前进10%)
语法:symlink &link-target& &link-path&
& link-target&表示链接到的目标,&link-path&表示快捷方式的路径
作用:相当于linux中的ln命令,将&link-target&在&link-path&处创建一个软链接,&link-target&的格式应为绝对路径(或许相对路径也可以),&link-path&为“根目录:路径”的形式
举例:symlink /system/bin/su SYSTEM:xbin/su(在手机中system中的xbin中建立一个/system/bin/su的快捷方式)
语法:assert &boolexpr&
作用:此命令用来判断表达式boolexpr的正确与否,当表达式错误时程序终止执行※此作用有待验证
11.package_extract_file/dir语法:package_extract_file(file/dir,file/dir)
作用:提取包中文件/路径
举例:package_extract_dir(&system&, &/system&);
& && &&&package_extract_file(&system/bin/modelid_cfg.sh&,&/tmp/modelid_cfg.sh&);
12.write_radio_image
语法:write_radio_image&src-image&
作用:将基带部分的镜像写入手机,&src-image&表示镜像文件
举例:write_radio_imagePACKAGE:radio.img
13.write_hboot_image
语法:write_hboot_image&src-image&
作用:将系统bootloader镜像写入手机,&src-image&表示镜像位置,此命令在直到在所有的程序安装结束之后才会起作用
举例:write_hboot_imagePACKAGE:hboot.img
14.write_raw_image语法:write_raw_image &src-image& &dest-root&
作用:将boot.img写入手机,里面包含了内核和ram盘
举例:write_raw_image PACKAGE:boot.img BOOT:
③.根目录以及分区的定义(在Android源代码的root.c文件中定义)
& && && && &
Linux 块设备
& && && && &
& && && && &
& && && && &
& && && && &
& && && && &
/dev/mtdblock[?]
& && && && &
& && && && &
& && && && &
& && && && &
内核、内存盘和引导配置。
& && && && &
/dev/mtdblock5
& && && && &
& && && && &
& && && && &
& && && && &
用户、系统配置,软件配置以及软件(没有a2sd的话)
& && && && &
/dev/mtdblock4
& && && && &
& && && && &
& && && && &
& && && && &
OTA缓存,recovery/更新配置及临时文件夹
& && && && &
/dev/mtdblock[?]
& && && && &
& && && && && && && &
& && && && &
(等待添加)
& && && && &
(相对于刷机包)
& && && && &
& && && && && && && && && &
刷机包的伪文件系统。
& && && && &
/dev/mtdblock[?]
& && && && &
& && && && &
& && && && &
& && && && &
recovery和更新环境的内核和内存盘。类似于BOOT:。
& && && && &
/dev/mmcblk0(p1)
& && && && &
& && && && &
& && && && &
& && && && &
TF卡。通常刷机包就放在这里。
& && && && &
/dev/mtdblock3
& && && && &
& && && && &
& && && && &
& && && && &
系统分区,静态且是只读的。
& && && && && && && &
& && && && &
& && && && &
标准的Linux临时文件夹
& && && && &
在关机/重启时清空。
④.具体实例:
assert(getprop(&ro.product.device&)== &swift& || getprop(&ro.build.product&) ==&swift& || getprop(&ro.product.board&) ==&swift&);
package_extract_file(&system/bin/backuptool.sh&,&/tmp/backuptool.sh&);
set_perm(0, 0, 0777,&/tmp/backuptool.sh&);
run_program(&/tmp/backuptool.sh&,&backup&);
show_progress(0.);
format(&yaffs2&,&MTD&, &system&);
mount(&yaffs2&,&MTD&, &system&, &/system&);
package_extract_dir(&recovery&,&/system&);
package_extract_dir(&system&,&/system&);
symlink(&busybox&,&/system/xbin/[&, &/system/xbin/[[&,
& && &&&&/system/xbin/arp&, &/system/xbin/ash&,&/system/xbin/awk&,
& && &&&&/system/xbin/basename&, &/system/xbin/bbconfig&,&/system/xbin/brctl&,
& && &&&&/system/xbin/bunzip2&,&/system/xbin/bzcat&, &/system/xbin/bzip2&,
& && &&&&/system/xbin/cal&, &/system/xbin/cat&,&/system/xbin/catv&,
& && &&&&/system/xbin/chgrp&,&/system/xbin/chmod&, &/system/xbin/chown&,
& && &&&&/system/xbin/chroot&,&/system/xbin/cksum&, &/system/xbin/clear&,
& && &&&&/system/xbin/cmp&, &/system/xbin/cp&,&/system/xbin/cpio&,
& && &&&&/system/xbin/cut&, &/system/xbin/date&,&/system/xbin/dc&,
& && &&&&/system/xbin/dd&, &/system/xbin/depmod&,&/system/xbin/devmem&,
& && &&&&/system/xbin/df&, &/system/xbin/diff&,&/system/xbin/dirname&,
& && &&&&/system/xbin/dmesg&,&/system/xbin/dnsd&, &/system/xbin/dos2unix&,
& && &&&&/system/xbin/du&, &/system/xbin/echo&,&/system/xbin/ed&,
& && &&&&/system/xbin/egrep&, &/system/xbin/env&,&/system/xbin/expr&,
& && &&&&/system/xbin/false&,&/system/xbin/fdisk&, &/system/xbin/fgrep&,
& && &&&&/system/xbin/find&, &/system/xbin/fold&,&/system/xbin/free&,
& && &&&&/system/xbin/freeramdisk&, &/system/xbin/fuser&,&/system/xbin/getopt&,
& && &&&&/system/xbin/grep&,&/system/xbin/gunzip&, &/system/xbin/gzip&,
& && &&&&/system/xbin/head&,&/system/xbin/hexdump&, &/system/xbin/id&,
& && &&&&/system/xbin/ifconfig&,&/system/xbin/insmod&, &/system/xbin/install&,
& && &&&&/system/xbin/ip&, &/system/xbin/kill&,&/system/xbin/killall&,
& && &&&&/system/xbin/killall5&,&/system/xbin/length&, &/system/xbin/less&,
& && &&&&/system/xbin/ln&,&/system/xbin/losetup&, &/system/xbin/ls&,
& && &&&&/system/xbin/lsmod&, &/system/xbin/lspci&,&/system/xbin/lsusb&,
& && &&&&/system/xbin/lzop&,&/system/xbin/lzopcat&, &/system/xbin/md5sum&,
& && &&&&/system/xbin/mkdir&,&/system/xbin/mke2fs&, &/system/xbin/mkfifo&,
& && &&&&/system/xbin/mkfs.ext2&,&/system/xbin/mknod&, &/system/xbin/mkswap&,
& && &&&&/system/xbin/mktemp&,&/system/xbin/modprobe&, &/system/xbin/more&,
& && &&&&/system/xbin/mount&,&/system/xbin/mountpoint&, &/system/xbin/mv&,
& && &&&&/system/xbin/netstat&,&/system/xbin/nice&, &/system/xbin/nohup&,
& && && &&/system/xbin/nslookup&,&/system/xbin/ntpd&, &/system/xbin/od&,
& && &&&&/system/xbin/patch&,&/system/xbin/pgrep&, &/system/xbin/pidof&,
& && &&&&/system/xbin/ping&,&/system/xbin/pkill&, &/system/xbin/printenv&,
& && &&&&/system/xbin/printf&, &/system/xbin/ps&,&/system/xbin/pwd&,
& && &&&&/system/xbin/rdev&,&/system/xbin/readlink&, &/system/xbin/realpath&,
& && &&&&/system/xbin/renice&,&/system/xbin/reset&, &/system/xbin/rm&,
& && &&&&/system/xbin/rmdir&,&/system/xbin/rmmod&, &/system/xbin/ r oute&,
& && &&&&/system/xbin/run-parts&,&/system/xbin/sed&, &/system/xbin/seq&,
& && &&&&/system/xbin/setsid&, &/system/xbin/sh&,&/system/xbin/sha1sum&,
& && &&&&/system/xbin/sha256sum&,&/system/xbin/sha512sum&,
& && &&&&/system/xbin/sleep&, &/system/xbin/sort&,&/system/xbin/split&,
& && &&&&/system/xbin/stat&,&/system/xbin/strings&, &/system/xbin/stty&,
& && &&&&/system/xbin/swapoff&,&/system/xbin/swapon&, &/system/xbin/sync&,
& && &&&&/system/xbin/sysctl&,&/system/xbin/tac&, &/system/xbin/tail&,
& && &&&&/system/xbin/tar&, &/system/xbin/tee&,&/system/xbin/telnet&,
& && &&&&/system/xbin/test&, &/system/xbin/tftp&,&/system/xbin/time&,
& && &&&&/system/xbin/top&, &/system/xbin/touch&,&/system/xbin/tr&,
& && &&&&/system/xbin/trace r oute&, &/system/xbin/true&,&/system/xbin/tty&,
& && &&&&/system/xbin/tune2fs&,&/system/xbin/umount&, &/system/xbin/uname&,
& && &&&&/system/xbin/uniq&,&/system/xbin/unix2dos&, &/system/xbin/unlzop&,
& && &&&&/system/xbin/unzip&,&/system/xbin/uptime&, &/system/xbin/usleep&,
& && &&&&/system/xbin/uudecode&,&/system/xbin/uuencode&, &/system/xbin/vi&,
& && &&&&/system/xbin/watch&, &/system/xbin/wc&,&/system/xbin/wget&,
& && &&&&/system/xbin/which&,&/system/xbin/whoami&, &/system/xbin/xargs&,
& && &&&&/system/xbin/yes&,
& && &&&&/system/xbin/zcat&);
symlink(&iwmulticall&,&/system/xbin/iwconfig&, &/system/xbin/iwgetid&,
& && &&&&/system/xbin/iwlist&,&/system/xbin/iwpriv&,
& && &&&&/system/xbin/iwspy&);
symlink(&toolbox&,&/system/bin/cat&, &/system/bin/cmp&,
& && &&&&/system/bin/date&, &/system/bin/dd&,&/system/bin/dmesg&,
& && &&&&/system/bin/getevent&,&/system/bin/getprop&, &/system/bin/hd&,
& && &&&&/system/bin/id&, &/system/bin/ifconfig&,&/system/bin/iftop&,
& && &&&&/system/bin/insmod&,&/system/bin/ioctl&, &/system/bin/ionice&,
& && &&&&/system/bin/kill&, &/system/bin/log&,&/system/bin/lsmod&,
& && &&&&/system/bin/mkdir&,&/system/bin/nandread&, &/system/bin/netstat&,
& && &&&&/system/bin/newfs_msdos&,&/system/bin/notify&, &/system/bin/printenv&,
& && && &&/system/bin/ps&,&/system/bin/reboot&, &/system/bin/renice&,
& && &&&&/system/bin/rmdir&, &/system/bin/rmmod&,&/system/bin/ r oute&,
& && &&&&/system/bin/schedtop&,&/system/bin/sendevent&,
& && &&&&/system/bin/setconsole&,&/system/bin/setprop&, &/system/bin/sleep&,
& && &&&&/system/bin/smd&, &/system/bin/start&,&/system/bin/stop&,
& && &&&&/system/bin/sync&, &/system/bin/top&,&/system/bin/uptime&,
& && &&&&/system/bin/vmstat&,&/system/bin/watchprops&,
& && &&&&/system/bin/wipe&);
set_perm_recursive(0,0, , &/system&);
set_perm_recursive(0,, 0755, &/system/bin&);
set_perm(0, , &/system/bin/netcfg&);
set_perm(0, , &/system/bin/ping&);
set_perm(0, , &/system/bin/run-as&);
set_perm_recursive(, , &/system/etc/bluetooth&);
set_perm(0, 0, 0755,&/system/etc/bluetooth&);
set_perm(,0640, &/system/etc/bluetooth/auto_pairing.conf&);
set_perm(,0444, &/system/etc/bluetooth/blacklist.conf&);
set_perm(,0440, &/system/etc/dbus.conf&);
set_perm(,0550, &/system/etc/dhcpcd/dhcpcd-run-hooks&);
set_perm_recursive(0,, 0750, &/system/etc/init.d&);
set_perm(0, 0, 0755,&/system/etc/init.d&);
set_perm(0, ,&/system/etc/init.goldfish.sh&);
set_perm(0, 0, 0544,&/system/etc/install-recovery.sh&);
set_perm_recursive(0,0, , &/system/etc/ppp&);
set_perm_recursive(0,, 0755, &/system/xbin&);
set_perm(0, 0, 06755,&/system/xbin/hcitool&);
set_perm(0, 0, 06755,&/system/xbin/librank&);
set_perm(0, 0, 06755,&/system/xbin/procmem&);
set_perm(0, 0, 06755,&/system/xbin/procrank&);
set_perm(0, 0, 06755,&/system/xbin/su&);
set_perm(0, 0, 06755,&/system/xbin/tcpdump&);
show_progress(0.);
show_progress(0.);
package_extract_file(&system/bin/backuptool.sh&,&/tmp/backuptool.sh&);
set_perm(0, 0, 0777,&/tmp/backuptool.sh&);
run_program(&/tmp/backuptool.sh&,&restore&);
package_extract_file(&system/bin/modelid_cfg.sh&,&/tmp/modelid_cfg.sh&);
set_perm(0, 0, 0777, &/tmp/modelid_cfg.sh&);
run_program(&/tmp/modelid_cfg.sh&);
package_extract_file(&system/bin/verify_cache_partition_size.sh&,&/tmp/verify_cache_partition_size.sh&);
set_perm(0, 0, 0777,&/tmp/verify_cache_partition_size.sh&);
run_program(&/tmp/verify_cache_partition_size.sh&);
show_progress(0.);
assert(package_extract_file(&boot.img&,&/tmp/boot.img&),
& && & write_raw_image(&/tmp/boot.img&, &boot&),
& && & delete(&/tmp/boot.img&));
show_progress(0.);
unmount(&/system&);
4.BL————手机爱好者心中最大的痛
Bootloader从字面上来看就是启动加载的意思。用过电脑的都知道,windows开机时会首先加载bios,然后是系统内核,最后启动完毕。那么bootloader就相当于手机的bios,它在手机启动的时候根据基带初始化硬件,然后引导系统内核,直到系统启动。因此可以看出,bootloader很重要,如果bootloader不能正常加载,手机就是砖头一个,无法正常启动和使用。这也就是为什么bootloader被锁的手机必须要XX才能刷第三方rom。如果不XXbootloader,就无法初始化手机硬件,手机也就无法使用。
先思考一下大家为什么想要解锁bootloader?肯定都是因为想要刷各种各样的第三方rom。为什么大家想要第三方的rom呢?
一是因为官方的rom更新慢,并且官方的rom里面有各种各样运营商集成的软件。而第三方rom是根据google官方的rom源码重新打包编译的,也就是所谓的原生系统,很干净。这样很多用户都会选择第三方rom,这就损害了运营商的利益,这是摩托罗拉不愿意看到的
二是因为摩托罗拉官方的rom集成了摩托罗拉自己的BLUR服务,主要是一些社交服务,国外的facebook、**等,国内的人人,新浪等。相信很多人都是用不到这些的,这些人也会选择第三方rom,这也是摩托罗拉不愿意看到的。
摩托罗拉不愿意看到上面的情况发生,但偏偏安卓系统又是开源的,必须要公布源代码,无奈的摩托罗拉只好另辟蹊径,于是就有了锁bootloader。内核开源,但bootloader不需要开源,加密bootloader是合理的。于是摩托罗拉锁了bootloader并且给内核做了文件签名,只有签名通过的内核才能被bootloader识别。这样一个bootloader锁诞生了。
bootloader锁直接导致摩托罗拉的手机无法使用各种第三方的rom,于是很多国外的高手开始XXbootloader。前一段有一个传闻说bootloader被XX了,但是被摩托罗拉官方发了律师函,于是便不了了之。这也正是摩托罗拉bootloader一直无法XX的原因,一是很难XX,二是高手们怕惹祸烧身。
现在有消息说,官方会今年晚些时候会为手机解锁bootloader,算是一个值得期待的好消息,各位摩托罗拉用户可以耐心等待一下,不用着急。
最后,送给摩托罗拉官方一句话:解锁Bootloader—摩托罗拉用户的心声
。在这个用户至上的社*会,千万不要因为一点小利益而忽略了用户,这注定会失败,无论你是一个多么老多么大的品牌厂商。
在刷机过程中未停电且未断开数据线的情况下,开不了机普遍有两种可能。
boot.img是加过密的。就是锁了bl。各个手机制造商在做ROM的时候,以他们独自的加密算法,对整个文件进行CRC验算,然后将验算值添加到boot.img的最末尾。刷机的时候,手机的硬件BIOS就像一名尽职的士兵,对此进行验算,对不上口令的,那么对不起,请君离开,不离开我报警了~~呃,报不了警,那反正我不让你进门~~
boot.img还有一个重要的参数,基址 base,用于告诉手机从哪个地址开始,是准备给内存盘的入口,哪个地址是给kernel的入口。如果你对不上号,对不起,不能非法入室的。
5.摩托常见刷机方法:
例如:Milestone2系统备份+恢复+ZIP格式的刷机包+镜像文件刷机包的方法,非常适合经常刷机,DIY刷机包的童鞋们使用。先备份好系统后,不管你把ROM弄得怎么个乱,怎么个精减。出问题了直接恢复备份好的系统就是你完美的包包了。省去你重新刷机,重新精减,重装软件的麻烦事情。
①备份Milestone2系统的方法:
Milestone2必须要ROOT过,获得权限。
a.按装恢复模式工具Droid2Boot 3.0 中文版 Droid2bootstrap3.0.apk (2.34 MB)
b.运行复模式工具-----选择-----引导恢复模式-----出现权限---选择---允许---确定----然后选择---重启到恢复模式
c.选择----backup and restore(备份和恢复)
d. 选择---backup(备份)---接下来软件自动备份开始,时间需要几分钟左右。
备份结束后,选择---reboot system now----手机重启
完整的Milestone2系统备份保存在:内存卡----clockworkmod文件夹----backup文件夹----备份时间文件夹----备份好的系统-----备份容量大小500多M.
& && && && && && && && && && & 从另一个角度考虑,这也是提取system.img的一种办法。
Milestone2系统备份还原的方法:
a.运行复模式工具-----选择-----引导恢复模式-----出现权限---选择---允许---确定----然后选择---重启到恢复模式
b. 选择----backup and restore(备份和恢复)
c. 选择----Recovery(恢复备份的系统)
d. 软件将会从:内存卡----clockworkmod文件夹----backup文件夹----备份时间文件夹----备份好的系统,来恢复你曾经备份过的系统。
e. 恢复备份完成。重启手机。这样你完整的Milestone2系统又回来了。
镜像文件的刷机包,刷机方法:
只要把下载好的镜像文件刷机包放入到----内存卡-----clockworkmod文件夹------backup文件夹------镜像刷机文件夹(文件名只能用英文,不能有空格哦)照着上面的恢复备份方法就可以刷镜像文件的刷机包了。
ZIP格式刷机包,刷机方法:
a.把下载好的ZIP格式的刷机包存放到放到内存卡根目录里
b.选择-----重启到恢复模式,手机重启
选择install zip from sdcard-----------在选择--------choose zip from sdcard
d.找到你存放在内存卡里的ZIP升级包------选择YES-------然后系统开始刷写入手机
刷写完成后,按电源键返回------选择reboot system now,手机重启,刷机完成
删除恢复模式的方法:
a:先删除恢复模式工具
b:用RootExplorer进入/system/bin/
c:点右上角,切换为读写状
d:删除文件hijack,删除文件logwrapper,把文件logwrapper.bin改名为logwrapper
e:点击右上角按钮,切换回只读状态
f:重启手机就OK啦
三、制作工具
1.jdk1.7.0:(115网盘)
安装,配置jdk1.7.0:
执行jdk安装程序,自定义路径,我的安装路径为:C:\ProgramFiles\Java\jdk1.7.0(根据个人的具体路径)
配置jdk:配置环境变量:
Win7下为:计算机-&属性-&高级系统设置-&环境变量-&系统变量中添加以下环境变量:
环境变量配置1__21-28-50.png
JAVA_HOME= C:\Program Files\Java\jdk1.7.0(根据自己的路径修改)
CLASSPATH=
.;C:\Program Files\Java\jdk1.7.0\lib\tools.C:\Program Files\Java\jdk1.7.0\lib\dt.jar
path= C:\Program Files\Java\jdk1.7.0\
写一个简单的java程序来测试jdk是否已安装成功:
public static void main(String args[])
System.out.println(&Hello&);
将程序保存为文件名为hello.java的文件。
打开命令提示符窗口,进入到hello.java所在目录,键入下面的命令
javac hello.java
java hello
此时若打出来hello则安装成功,若没有打印出这句话,仔细检查以上配置是否正确。
注意系统文件夹选项中应确定“隐藏已知文件类型的扩展名”不勾选。
2.apktool工具箱(115网盘)
可以解压放到你的cmd默认目录下,这样就不用每次都那么麻烦进入工具:
2__22-30-44.png
比如我的默认目录为C:\Users\users,我就把解压出来的所有文件包括:aapt.exe,apktool.bat,apktool.jar放到这个文件夹下,具体的应用自己解决。
简单应用举例:主要是在美化时用到。
apktoold &C:\framework-res.apk& &C:\framework”
命令行解释:apktool d 要反编译的文件输出文件夹
我们可以看到一个叫做res的目录,打开后看到一堆目录,所有的程序界面资源就放在这个res目录里面,我们这里简单的介绍一下这些目录对应的作用。
drawable,这个目录是放程序需要用到的图标以及各种图片的
layout-land,这个目录是放竖版界面的xml描述文件的
layout-port,这个目录是放横版界面的xml描述文件的
menu,这个顾名思义,就是放菜单布局的xml描述文件的
values,这个目录是汉化重头戏,绝大部分需要汉化的字符串资源定义就在这里面
xml,其他不再详细分类的布局xml描述文件
一个写的很规范的Android程序,会把整个程序里面所用到的字符串资源都分离出来,放在values的strings.xml文件里面,而放在values目录的,基本上就是英文字符串资源。而一般的程序在处理字符串资源上都是交给Android系统去判断是什么环境,从而自己选择语言的
apktool b&C:\framework&
命令行解释:apktool b 要打包内容所在文件夹
3.UltraEdit:用于编写代码的好软件.(在115网盘)
4.核心软件:厨房(115网盘)
①为厨房安装 Cygwin 的步骤
1) 1) 解压下载到的压缩包(比如解压到C盘,解压出来的东西包括:包的文件夹c:\cygwin_packages、安装程序c:\setup.exe、文档c:\安装说明.txt),记得路径中不要带中文,最好也不要带空格。
2) 运行 Setup.exe,
然后点击 Next (下一步)。
3) 选择&Install from Local Directory,&
4) 接下来,指定根目录。也就是你想要安装 Cygwin 的位置(但不能是本压缩包解压出来的 cygwin_packages 文件夹)。如果你喜欢,可以是 C:\Cygwin,注意要确定文件夹名种没有空格。
5) 然后,要指定的Local Package Directory 必须指定为 cygwin_packages 文件夹所在路径,例如 C:\cygwin_packages假如跳出了一个警告对话框,点击确定(是)。
6) 当安装程序显示出所有的包名时,点击更改上方的 &All &-& Default& 为&All &-& Install& (需要点击那个箭头)
7) 然后点击 Next,安装程序就会为你安装好 android Kitchen 需要 Cygwin 提供的一切支持
8) 最后,点击桌面上的Cygwin 快捷方式以便为你创建 home 文件夹。搞定!
本 Cygwin 安装包中包含了以下的包,这些都是厨房正常工作所需要的:* Devel /gcc * Interpreters / perl
* Utils / cpio
* Utils / util-linux* Utils / ncurses *Archive / zip* Archive / unzip&&* Web / wget
②如何开始使用ROM组专用定制工具:
1) 完成上面的步骤后,将下载到ROM组专用定制工具解压到G:\Cygwin\home\Administrator文件夹中(这里假设你的Cygwin是安装在C盘根目录下,而且你电脑的用户名为Administrator。具体请根据各自的设置进行变通)。
2) 点击桌面上的 Cygwin 快捷方式
3) 执行命令:cd android_Kitchen
4) 执行命令:./menu
OK,剩下的事情就靠你自己自由发挥了。
PS:一个小技巧,使用用文本编辑器(例如EmEditor,不建议使用系统自带的记事本程序)打开C:\Cygwin\home\Administrator\.bashrc,在最后面添加以下两行。
cd android_Kitchen/
这样做的好处是,一旦你点击了桌面上的 Cygwin 快捷方式,就会直接进入厨房界面了。
5.ROM提取工具
HTC:本人没有用过HTC的手机,这只是网上找的一篇文章以作参考,具体的还请自己尝试吧。
第一步:下载官方RUU刷机程序(EXE文件)
第二步:运行您已经下载的RUU刷机程序RUU_Legend_hTC_Asia_TW_1.31.709.2_Radio_47.26.35.04_7.05.35.26L_release_122023_signed)
第三步:打开用户临时文件目录:
以xp为例:C:\Documentsand Settings\Administrator\Local Settings\Temp(系统默认,Administrator为您登录xp的用户名,如果您修改了用户变量,则到您修改的目录,例如我的是:D:\Temp\Temp)
第三步:查找类似 {2EA82A29-B9B5-4A60-BB4F-B52F1BCD2E68}
(每次打开都不同,建议查看文件夹创建时间就知道)的文件夹并打开
第四步:进入刚刚打开的刷机临时目录,打开该目录下的唯一文件夹。(例如我的是:{50F2F878-636A-496F-A7CB-544C067E0C4B})
第五步:复制该文件夹下的 Rom.zip
压缩文件,该文件即为官方原版ROM,该文件大小:字节(以RUU_Legend_hTC_Asia_TW_1.31.709.2_Radio_47.26.35.04_7.05.35.26L_release_122023_signed
版本为例);该 ROM 包含以下:
& && && && &
& && && && &
& && && && &
android-info.txt
& && && && &
& && && && &
ROM版本及刷写配置信息
& && && && &
2342912 字节
& && && && &
手机启动的必要系统(Linux内核)
& && && && &
hboot_..nb0
& && && && &
524288 字节
& && && && &
bootloader
& && && && &
需要金卡就是因为这个东西吧?刷错一定变砖
& && && && &
& && && && &
无线通讯模块(包括电话、WIFI、蓝牙)
& && && && &
最新的不一定是最好的。要和hboot匹配?
rcdata.img
& && && && &
& && && && &
& && && && &
刷机时使用的脚本
recovery.img
& && && && &
3532800 字节
& && && && &
刷写 Recovery 模式(包含硬件底层驱动)
& && && && &
恢复出厂设置、OTA升级补丁升级、Firmware升级
splash1.nb0
& && && && &
393216 字节
& && && && &
开机第一屏
& && && && &
替换此文件可以修改开机第一屏
system.img
& && && && &
& && && && &
系统核心(应该是主要修改此文件)
& && && && &
我们主要定制此部分的
userdata.img
& && && && &
& && && && &
用户的设置
& && && && &
看起来应该是初始化用户数据
至此,已获得官方 RUU 原版ROM
根据我的理解,boot.img radio.img recovery.img splash1.nb0system.img 应该可以单刷的,我们定制 rom 主要修改 system.img。
首先运行要提取的官方RUU程序,本教程中就是RUU_Buzz_Froyo_HTC_WWE_2.22.405.1_Radio_13.55.55.24H_3.35.20.10_release_160191_signed.exe。这个时候手机无需连接上电脑(连接与否和提取没有关系),等待exe执行到出现第一个提示界面。运行任务管理器,点“进程”标签,找到adb.exe,在其上右键,选择“打开所在目录”。将打开的目录中的rom.zip复制出来,然后可以关闭官方RUU程序了。提取完成。
摩托: 解底包工具.rar (610.63 KB)
运行解SBF包工具MotoAndroidDepacker.exe程序
选择Open From File,找到你存放的SBF刷机包
选择Split To Folder,进行刷机包拆解过程
拆解完成,关闭软件,得到如下文件。
一般来说需要修改CG35.smg----boot.img,CG39.smg-----system.img, CG45.smg----radio.img,锁了bl的只需CG39.smg和CG45.img(如果需要切换基带)
如下是一个典型SBF 文件
拆开之后的构成(uk3.4.3)
每个smg本身都有签名, 不签名不能刷, 多半都有自己的版本号
CG31.smg& && & 18,432 版本 4
CG31/CDT是描述各文件版本号的, 相当于注释文件
CG32.smg& && & 133,120 版本 1
CG33.smg& && & 14,419,968 版本 1
CG33/CDROM是个ISO文件, 可以用WinRAR之类的打开, 包含PC端程序(MotoHelperAgent)
CG34.smg& && & 18,432 版本 1& && && && &
/usr/data_resource,CG34应该说是皮肤铃声包,一些软件的信息和收藏夹的设置在这里面
CG35.smg& && & 8,388,608 版本 2& && && &&&
CG35/Boot包含了
内核&-8.3MB的boot-only就是这个
CG39.smg& && & 342,624,256 版本 4
CG39/system分区
就是恢复包中
的 system.img
cache缓存分区(国行多余的部分), 显然里面什么都没有
CG42.smg& && & 262,144
CG45.smg& && & 3,147,776 版本 0& && && && &
CG45/Baseband基带固件
CG47.smg& && & 8,388,608 版本 2
CG47/Recovery就是
恢复, 里面也包含独立的内核, 但不用于启动
CG53.smg& && & 2,048
CG61.smg& && & 524,288 版本 1
CG61/devtree包含设备描述符
CG64.smg& && & 18,432 版本 1
CG65.smg& && & 18,432 版本 1
RAMDLD.smg& &&&315,392
RAMDLD/RamDisk&tmpfs, Android/Linux启动初始化的一部分, 不涉及具体设备
每次不可降级的升级中CG31和CG39版本都会升高
(2.21/国行=2,2.51=3, 3.4.x=4)
而国行1.11和uk3.4.3-3不同的文件(md5值校验)如下
而CG39就是个EXT3的文件系统镜像, 其内容和镜像版的system.img(yaffs2文件系统)完全一致, 可以直接从CG39创建system.img
此时,你可以把CG39.smg重新命名为system.img(可能有些小问题,或者进一步提取)
⑤运行yaffs2img浏览器20.exe程序
选择 CG39.smg 点击
接下来,你可以选择
也可以只提取你想要了文件就OK了
接下来把你提取出来的东西放到厨房工作文件夹下,也可开始制作。
手机开发.rar
四、制作步骤:
解压待修改ROM。
将system.img和boot.img解压出来,如果需要在刷机时同时刷入radio.img,则把radio.img也解压出来。将文件(如果是修改其他制作者的ROM,文件则为*.zip,比如buzz_2.2_1.2-Beta2_android.zip)放到以下文件夹中(根据个人安装的位置决定,不再累述):G:\Cygwin\home\&用户名&\android_Kitchen\original_update
支持的格式如图:
2.修改ROM。
①运行厨房。双击执行桌面上的Cygwin快捷方式(也可以双击执行C:\Cygwin\Cygwin.bat),输入命令:
01.&&cd android_Kitchen
至此,厨房已成功运行。
接下来就开始你的制作之旅吧。
解压待修改的ROM。选择厨房的第1项“1 - 分解 ROM 包到工作目录中”,然后根据情况的不同,选择对应的ROM。解压得到的文件位于以下文件夹中:C:\Cygwin\home\&用户名&\android_Kitchen\WORKING_&日期&_&时间&
只支持如上几种格式的原文件。
添加常用功能支持。厨房提供了多种常用的功能,请根据个人的喜好进行选选择。此步不做具体解释,厨房中每个功能基本都有相应的解释,请仔细查看。
去除不需要的apk。如果想要精简掉ROM中的某个不需要的软件,则删除对应的apk(如有同名的odex文件,也将其删除)即可。譬如,我要去掉**,则删除**.apk,又想要去掉世界时钟,则删除了WorldClock.apk和WorldClock.odex。
集成apk。进入工作目录文件夹,再进入data\app目录,看这里是否有你所需的程序,不需要的请删除。你还可以添加你需要的默认安装软件。进入工作目录文件夹,再进入system\app删除你不想要的组件、或是添加你需要的组件。由于有一些组件与其它组件是有依赖的,所以删除时请注意。但也不要怕,如果你删除的组件不对,刷机时最多是无法进入系统,你用完整ROM重新刷一次既可。一般不会变成砖的。注意文件名不能有中文,也不要有空格。同时,避免出现特殊字符。集成输入法等带有so库的apk程序。以搜狗输入法为例。需要在将apk放置到/system/app的同时将包中的so库提取出来,放至/system/lib文件夹中(不要对原apk做修改,仅提取)。删除、添加软件完毕,接下来就可进行deodex等操作。
或者自己手动做一个也行:
参考我的另一个帖子吧,虽然写的不是很好。
修改完以后,替换/system/framework/文件夹下的framework-res.apk文件等
集成apn自动设置。将附件apns-conf.rar解压,覆盖/system/etc下的同名文件即可。apns-conf apns-conf.rar (16.44 KB)
修改开机动画。开机动画即为bootanimation.zip,具体位置在/system/customize/resource文件夹中。
默认中文。修改三个文件:1、/system/build.prop;2、/system/customize/CID/default.xml;3、/system/customize/MNS/default.xml
1)、修改ro.product.locale.language和ro.product.locale.region。(此处修改的是系统的默认显示语言)
ro.product.locale.language=zh
ro.product.locale.region=CN
2)、修改以下代码。这里我仅保留了简繁体和英文。(此处修改的是可供选择的语言)
& modulename=&locale&&
& &&function&
& & &set name=&single&&
& && &&item name=&total_list&&en_AT;en_CH;en_DE;en_ES;en_FR;en_GB;en_GR;en_IT;en_NL;en_PT;en_RU;en_NO;en_DK;en_SE;en_FI;en_CZ;en_PL;en_RO;en_HU;en_SK;en_ZA;en_IL;en_IE;en_LV;en_EE;en_LT;en_LU;en_UA;fr_AT;fr_CH;fr_DE;fr_ES;fr_FR;fr_GB;fr_IE;fr_NL;fr_PT;fr_ZA;fr_IT;fr_IL;fr_LU;it_AT;it_CH;it_DE;it_GB;it_IE;it_IT;it_IL;es_ES;es_GB;es_IE;es_IL;es_PT;nl_NL;nl_LU;de_AT;de_CH;de_DE;de_ES;de_NL;de_IT;de_LU;de_PT;el_GR;pt_ES;pt_PT;pt_ZA;nb_NO;nb_DK;nb_SE;nb_FI;da_NO;da_DK;da_SE;da_FI;sv_NO;sv_DK;sv_SE;sv_FI;cs_CZ;cs_PL;cs_RO;cs_HU;cs_SK;cs_LV;cs_EE;cs_LT;pl_CZ;pl_PL;pl_RO;pl_HU;pl_SK;pl_LV;pl_EE;pl_LT;ru_CZ;ru_PL;ru_RO;ru_HU;ru_SK;ru_RU;ru_LV;ru_EE;ru_LT;ru_UA;fi_DK;fi_FI;fi_NO;fi_SE;&/item&
& && &&item type=&boolean&name=&en_AT&&yes&/item&
& && &&item type=&boolean&name=&en_CH&&yes&/item&
& && &&item type=&boolean&name=&en_DE&&yes&/item&
& && &&item type=&boolean&name=&en_ES&&yes&/item&
& && &&item type=&boolean&name=&en_FR&&yes&/item&
& && &&item type=&boolean&name=&en_GB&&yes&/item&
& & &/set&
& &&/function&
& /module&
& modulename=&locale&&
& &&function&
& & &set name=&single&&
& && &&item name=&total_list&&en_GB;zh_CN;zh_TW;&/item&
& && &&item type=&boolean&name=&en_GB&&yes&/item&
& && &&item type=&boolean&name=&zh_CN&&yes&/item&
& && &&item type=&boolean& name=&zh_TW&&yes&/item&
& & &/set&
& &&/function&
& /module&
3)、修改以下代码。(此处修改的是默认选中的语言)
& modulename=&defaultLocale&&
& &&function&
& & &set name=&single&&
& && &&item name=&auto_detect&&false&/item&
& && &&item name=&defeault&&en_GB&/item&
& & &/set&
& &&/function&
& /module&
修改为(简体中文):
& modulename=&defaultLocale&&
& &&function&
& & &set name=&single&&
& && &&item name=&auto_detect&&false&/item&
& && &&item name=&defeault&&zh_CN&/item&
& & &/set&
& &&/function&
& /module&
默认时区。在/system/default.prop中修改persist.sys.timezone(如果没有该项,则手动添加)的值为Asia/Shanghai(即东八区),即
persist.sys.timezone=Asia/Shanghai
注:如果没有/system/default.prop,也可以在/system/build.prop中修改或添加。
⑾锁了bl的同学,在修改时注意看运行时的语句,凡是涉及到的功能修改了boot.img,你就趁早删了update-script相关语句重来吧,不然也不会出什么大事,就是手机卡在第一屏进不去,或者一直进入恢复模式。解决办法如果你先前备份了,那就还原一下。如果没备份,重刷底包吧。
⑿接下来就是打包签名,按照提示一步一步来就OK了。
五、制作结果与讨论:
& &&&制作过程是一个需要很多次重新备份或刷机的过程,难点在于update-script的编写,你必须保证每一句都是对的,不涉及boot.img的语句少一些,一般也就几十句,或更少,完整的ROM估计在一两百句之间,虽然厨房会帮你编写部分语句,但你还得自己打开来再看一遍,修改添加删除一些语句,只要其中一句是错的,你就刷机或者恢复重新再来吧。比如你语句中要添加一个软件,但包里没有这个软件,这也算错误语句,也一样要悲剧。新的脚本updater-script不知解决了这个问题没有。反正旧的脚本是不行的。
& & 教程基本就到这,本人手机是摩托的,所以更侧重于摩托的制作过程,其它手机也可做一个参考。都是安卓嘛,肯定有想通的地方。当然还有很多是不完整或错误的,也还有一些没有说得清楚,争取在以后的学习中慢慢修正。谢谢大家的观看,很长,你们也辛苦了。
扫描二维码,手机查看本帖
我想知道看到底的有几个看懂的有几个,我头晕
·来自老版论坛
感谢分享,& && && && && && && && && &&&
·来自老版论坛
这么高大上的帖子,一定要收藏!!!!!!!!
·来自老版论坛
太棒了& && && && && && && && && && && && && && &
·来自老版论坛
小米手机系统rom包制作教程,感谢楼主,玩机达人必看!!
·来自老版论坛
小米手机系统rom包制作教程,谢谢楼主,玩机达人一定要看!
·来自老版论坛
看起来很高端内~~回头有空试试!!!
·来自老版论坛
高端大气上档次的好楼主、。
·来自老版论坛
小白一只,我是来学习的,楼主辛苦了
·来自老版论坛
好好学习,天天向上{:6_210:}
·来自老版论坛
斯蒂芬斯蒂芬斯蒂芬斯蒂芬斯蒂芬斯蒂芬速度
·来自老版论坛
安卓rom包制作教程!(小白慎入)
·来自老版论坛
很详细来顶一个呀& && && && && && && && && && && &
·来自老版论坛
谢谢分享& &&&444
·来自老版论坛
谢谢分享& &&&555
·来自老版论坛
彻底勾起了小白的兴趣,有意思!祝我成功吧!
·来自老版论坛
{:6_214:}&&看起来似乎很难&&慢慢学习吧
·来自老版论坛
顶一个,赞一个,感谢楼猪收下
·来自老版论坛
大神碉堡了。。。。。。。。。。。。。。
·来自老版论坛
有点复杂,小白学习中,谢谢可
京ICP证110507号 京ICP备号}

我要回帖

更多关于 rom包制作自学网站 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信