2024年4月9日发(作者:许阳)
Cm rom定制教程(初级)
本文以cm5.05 rom为例。
我们下载好的cm5.05是一个zip压缩文件。如果是刷机,它就是一个签名过的rom包,
如果你是想定制rom,它就只是一个普通的压缩文件(因为我们定制完后,需要重新签名)。,
直接用winrar打开这个rom包。
Rom包里包含几个东西:
1.META-INF文件夹---文件的加密信息,以及升级脚本
2.System文件夹--android的系统文件
3.文件--android的启动分区文件
4.文件--cm里的自动备份脚本
有的rom里,还有个data文件夹。我们也可以自行在cm5.05中新建一个(后面介绍)。
初级阶段,我们主要修改的是system文件夹里的内容:
System文件夹里包含了:
1. app文件夹—这里面都是所谓系统自带的软件
2. bin文件夹--android的命令
3. etc文件夹
4. fonts文件夹—字体文件夹
5. framework文件夹--系统函数
6. lib文件夹--so库
7. media文件夹—铃声以及开机画面
8. usr文件夹
9. xbin文件夹
10. 文件—配置文本
app文件夹的修改:如果想删除一些系统自带软件,那我们就可以进入app文件夹,找到相应
的文件,删除就可以了。如果你想添加软件,也可以把apk放进app文件夹里,不过注意的
是,app文件夹里的软件,不能在系统程序管理里卸载,哪怕是你放进去的第三方软件。
Fonts文件夹的修改:你可以用自己喜欢的字体,替换进fonts里,这样刷机后直接就是新字
体了。比如我用丽黑字体,下载好后,字体文件名改为,拷贝进fonts文件夹,
替换里面的原文件(可以先把原文件备份出来)。
Media文件夹的修改:里面有一个,它就是开机动画,如果你不喜欢cm的
蓝色开机,可以找之前的原版rom,把这个文件替换掉即可。
Audio文件夹里存放的都是系统的铃声,可以自行添加或删除(注意控制文件大小和铃声时
长哦)。如果你想让相机无声,可以找到ui文件夹里的camera_,就是它了,自己
录一个“无声”的声音文件,改名成一样的,替换掉就ok了:)
Lib文件夹的修改:这个文件夹里面的文件,我们最好别动它,不过当你需要中文联系人排
序的时候,就要修改了。我们找一个中文联系人排序版的文件,替换进lib里,
覆盖原文件即可。
etc文件文件夹:这个文件夹很有意思。里面有个文件,它就是接入点设置,
会修改xml文件的可以直接修改,不会的朋友,可以在网上找一个接入点比较全的替换进
去即可。
Hosts。翻墙用的。一般情况下不需要修改,但如果你的地区正好封锁谷歌服务的,就直接
用文本打开hosts这个文件,在里面加进新的地址保存即可。
Init.d文件夹。里面都是一些脚本。懂linux的朋友,可以自己编一些。不懂的也没关系,在
网上或者其他rom里找一些现成的放进去。比如pandora之前发过cpu降频脚本,app2sd脚
本。
文件的修改:可以直接用文本编辑器打开。
=****,=***,你可以修改成你自己喜欢的版本号(中英文都可以)。
ge=en,=US。如果想第一次开机向导语言直接
是中文,可以分别把en和US改成zh和CN。
ne=****。如果你替换过铃声,***部分改为你想要的默认铃声的文件名。
sion=***。Mod版本号,也可以改成自己喜欢的名字。中英文都可以。
(如果版本号里包含中文字符的,改完文件后,请以utf-8编码保存文件,如果
没有中文字符的,直接保存即可。保存后的文件,注意看一下文件名,别保存成txt了··这
个不用我教了吧)
Ok。System文件夹的主要修改就到此结束了。
Ps:自己加入软件到app文件夹,可以让我们rom直接内置软件,不过有些第三方软件apk
里包含了so库,我们需要单独提取出来,并放入system的lib库文件夹里。
最典型的就是搜狗输入法。我们把搜狗.apk文件名改为搜狗.zip,然后解压它,会看到有个
lib文件夹,里面armeabi,再里面有两个so文件,把这两个文件复制到rom/system/lib里即
可,然后把搜狗.zip重新恢复成搜狗.apk,然后拷到app里即可。
以后,只要是你自己添加的软件,都要看一下apk里是否有so文件,刚开始可能觉得比较
麻烦,但弄个几次,你就知道哪些软件需要折腾,哪些软件直接放到app就可以了:)
用winrar打开rom包修改的时候,可以单独解压其中某一个文件或者文件夹出来做修改,
完成后在替换回去,没必要把整个rom包都先解压出来。
一切准备就绪后,我们需要对修改过的rom.包进行重新签名。我会上传一个签名工具包(工
具包需要java支持,请先自行下载java并在电脑上安装好),大家下载到电脑里,解压出来。
修改过的改名成,并放到签名工具包内,双击即可自动进行签名。
签名完成后,会在同目录内生产一个update_文件,就是我们签过名的刷机包了。
开刷··
初级篇到此为止。喜欢进一步折腾的朋友,请关注后面的中级篇···
Cm rom定制教程—中级篇
前面的初级篇,大概分析了rom包的构成,简单的修改。现在我们进一步研究rom的
修改。
Data文件夹的加入:
喜欢研究的朋友会发现,cm原版rom比pandora或者modaco少了一个data文件夹。
我在初级篇里提到过,当你内置软件在rom里,如果直接把apk放在system/app里的话,
是不可以在应用管理里卸载的。那么这个data文件夹的作用就来了。
以cm5.041为例,它里面没有data文件夹,我们就自己新建一个,然后再data文件夹
里再建一个app文件夹,路径就为:/data/app 。它和/system/app的区别就是,让我们内置
的软件今后可以自行卸载,而且当你使用app2sd的时候,软件可以直接安装到扩展卡里。
我们新建好,就可以把什么搜狗输入法啦,root管理器的apk都放进去。
META-INF文件夹的修改:
那么光新建这个文件夹就ok了吗?当然不是。记得初级篇里提到的那个/META-INF文
件夹吗?就是文件的加密信息,以及升级脚本,当当当,该它登场了。
打开META-INF文件夹,你会看到一些文件和一个文件夹。文件就是加密信息,我们
可以不用管它,重要的是那个文件夹,一步步点进去,会看到update-script,这个就是升级
脚本,它控制着我们刷机的步骤和顺序等信息,非常重要。
我大概复制一部分来做下解释(该文件可以直接用文本打开并编辑):
assert compatible_with("0.2") == "true"
assert getprop("") == "passion" || getprop("t") == "passion"
show_progress 0.500000 0 ----插入一个标签信息
format SYSTEM: ----格式化system
copy_dir PACKAGE:system SYSTEM: --拷贝刷机包的system到机身system
symlink ../xbin/su SYSTEM:bin/su
symlink busybox SYSTEM:xbin/[
symlink busybox SYSTEM:xbin/[[
symlink toolbox SYSTEM:bin/hd
symlink toolbox SYSTEM:bin/id
symlink toolbox SYSTEM:bin/ifconfig
symlink toolbox SYSTEM:bin/iftop
symlink toolbox SYSTEM:bin/insmod
symlink toolbox SYSTEM:bin/ioctl
symlink toolbox SYSTEM:bin/vmstat
symlink toolbox SYSTEM:bin/watchprops
symlink toolbox SYSTEM:bin/wipe
set_perm_recursive 0 0 0755 0644 SYSTEM: -------权限类的设置
set_perm_recursive 0 2000 0755 0755 SYSTEM:bin
set_perm 0 3003 02755 SYSTEM:bin/netcfg
set_perm 0 3004 02755 SYSTEM:bin/ping
set_perm 1001 1005 0444 SYSTEM:etc/
set_perm_recursive 1002 1002 0755 0440 SYSTEM:etc/bluez
set_perm 0 0 0755 SYSTEM:etc/bluez
set_perm 1002 1002 0440 SYSTEM:etc/
set_perm 1014 2000 0550 SYSTEM:etc/dhcpcd/dhcpcd-run-hooks
set_perm_recursive 0 2000 0755 0750 SYSTEM:etc/init.d
set_perm 0 0 0755 SYSTEM:etc/init.d
set_perm 0 2000 0550 SYSTEM:etc/
set_perm_recursive 0 0 0755 0555 SYSTEM:etc/ppp
set_perm_recursive 0 2000 0755 0755 SYSTEM:xbin
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.200000 0 -------再插入一个标签
write_raw_image PACKAGE: BOOT: ---刷写boot
format CACHE: -----格式化缓存
show_progress 0.100000 10 -----插入一个标签
ok,大部分的东西都不需要我们修改。但如果你自己新建了一个/data/app,并在里面内置了
自己喜欢的软件,那我们就要在升级脚本里做一些修改了,因为脚本里并没有提到这个data
文件夹(上面的脚本里,提到了system文件夹)。
我们只需要加入(这个是比较保守的写法):
show_progress 0.200000 0 ---样成好习惯,加入一个显示标签吧
delete DATA:app
delete DATA:
delete DATA:local
delete DATA:dalvik-cache
copy_dir PACKAGE:data DATA: -----拷贝刷机包的data
set_perm 1000 1000 0771 DATA:app ----设置data/app的权限
那我们把这段脚本加在哪个位置呢?我自己一般是放在
show_progress 0.200000 0
write_raw_image PACKAGE: BOOT:
的前面。
修改过的升级脚本,就可以让你新建的data文件夹,能够成功刷进去了。
再次体现,升级脚本是非常重要的东西,如果你想制作一个简单的升级补丁,也需要用到升
级脚本。我在后面会单独介绍小补丁的制作方法。
app2sd的加入:
cm5.05应该是内置app2sd的,我就不做介绍了。网络上有很多rom,有些是内置app2sd功
能的,但经过我的观察,每个romer的app2sd内置方法都不太一样。
最简单的鉴别app2sd是否内置的方法:看看/system里有没有一个sd文件夹,文件夹里有没
用一个placeholder文件,如果有,那么这个rom一般就是内置app2sd补丁的。
自己内置app2sd进rom的方法:我们需要修改4个地方。
1, 把04apps2sd这个文件,放在/system/ etc/init.d里
2, 把e2fsck这个文件,放在/system/xbin里
3, 在/system里建一个叫做sd的文件夹,并在里面放一个叫做placeholder的文件。这个文
件其实就是一个空文件,但如果你不放,刷机的过程中会认为sd文件夹是多余的,而
不刷进系统。
4,在升级脚本里加入(同样加入在BOOT之前的位置):
set_perm 0 0 04755 SYSTEM:bin/su
set_perm 0 0 04755 SYSTEM:xbin/e2fsck
如果你的升级脚本,已经对xbin文件夹整体设置过权限,那也应该是可以的,就不需
要单独加这段了。
要点总结:
update-script这个升级脚本非常重要,你可以根据自己的需要来修改里面的信息。如果你其
他地方改的再好,脚本没有修改正确,都是白搭。
Placeholder文件的作用就是:不让“刷机程序”认为这个文件夹是空的。
2024年4月9日发(作者:许阳)
Cm rom定制教程(初级)
本文以cm5.05 rom为例。
我们下载好的cm5.05是一个zip压缩文件。如果是刷机,它就是一个签名过的rom包,
如果你是想定制rom,它就只是一个普通的压缩文件(因为我们定制完后,需要重新签名)。,
直接用winrar打开这个rom包。
Rom包里包含几个东西:
1.META-INF文件夹---文件的加密信息,以及升级脚本
2.System文件夹--android的系统文件
3.文件--android的启动分区文件
4.文件--cm里的自动备份脚本
有的rom里,还有个data文件夹。我们也可以自行在cm5.05中新建一个(后面介绍)。
初级阶段,我们主要修改的是system文件夹里的内容:
System文件夹里包含了:
1. app文件夹—这里面都是所谓系统自带的软件
2. bin文件夹--android的命令
3. etc文件夹
4. fonts文件夹—字体文件夹
5. framework文件夹--系统函数
6. lib文件夹--so库
7. media文件夹—铃声以及开机画面
8. usr文件夹
9. xbin文件夹
10. 文件—配置文本
app文件夹的修改:如果想删除一些系统自带软件,那我们就可以进入app文件夹,找到相应
的文件,删除就可以了。如果你想添加软件,也可以把apk放进app文件夹里,不过注意的
是,app文件夹里的软件,不能在系统程序管理里卸载,哪怕是你放进去的第三方软件。
Fonts文件夹的修改:你可以用自己喜欢的字体,替换进fonts里,这样刷机后直接就是新字
体了。比如我用丽黑字体,下载好后,字体文件名改为,拷贝进fonts文件夹,
替换里面的原文件(可以先把原文件备份出来)。
Media文件夹的修改:里面有一个,它就是开机动画,如果你不喜欢cm的
蓝色开机,可以找之前的原版rom,把这个文件替换掉即可。
Audio文件夹里存放的都是系统的铃声,可以自行添加或删除(注意控制文件大小和铃声时
长哦)。如果你想让相机无声,可以找到ui文件夹里的camera_,就是它了,自己
录一个“无声”的声音文件,改名成一样的,替换掉就ok了:)
Lib文件夹的修改:这个文件夹里面的文件,我们最好别动它,不过当你需要中文联系人排
序的时候,就要修改了。我们找一个中文联系人排序版的文件,替换进lib里,
覆盖原文件即可。
etc文件文件夹:这个文件夹很有意思。里面有个文件,它就是接入点设置,
会修改xml文件的可以直接修改,不会的朋友,可以在网上找一个接入点比较全的替换进
去即可。
Hosts。翻墙用的。一般情况下不需要修改,但如果你的地区正好封锁谷歌服务的,就直接
用文本打开hosts这个文件,在里面加进新的地址保存即可。
Init.d文件夹。里面都是一些脚本。懂linux的朋友,可以自己编一些。不懂的也没关系,在
网上或者其他rom里找一些现成的放进去。比如pandora之前发过cpu降频脚本,app2sd脚
本。
文件的修改:可以直接用文本编辑器打开。
=****,=***,你可以修改成你自己喜欢的版本号(中英文都可以)。
ge=en,=US。如果想第一次开机向导语言直接
是中文,可以分别把en和US改成zh和CN。
ne=****。如果你替换过铃声,***部分改为你想要的默认铃声的文件名。
sion=***。Mod版本号,也可以改成自己喜欢的名字。中英文都可以。
(如果版本号里包含中文字符的,改完文件后,请以utf-8编码保存文件,如果
没有中文字符的,直接保存即可。保存后的文件,注意看一下文件名,别保存成txt了··这
个不用我教了吧)
Ok。System文件夹的主要修改就到此结束了。
Ps:自己加入软件到app文件夹,可以让我们rom直接内置软件,不过有些第三方软件apk
里包含了so库,我们需要单独提取出来,并放入system的lib库文件夹里。
最典型的就是搜狗输入法。我们把搜狗.apk文件名改为搜狗.zip,然后解压它,会看到有个
lib文件夹,里面armeabi,再里面有两个so文件,把这两个文件复制到rom/system/lib里即
可,然后把搜狗.zip重新恢复成搜狗.apk,然后拷到app里即可。
以后,只要是你自己添加的软件,都要看一下apk里是否有so文件,刚开始可能觉得比较
麻烦,但弄个几次,你就知道哪些软件需要折腾,哪些软件直接放到app就可以了:)
用winrar打开rom包修改的时候,可以单独解压其中某一个文件或者文件夹出来做修改,
完成后在替换回去,没必要把整个rom包都先解压出来。
一切准备就绪后,我们需要对修改过的rom.包进行重新签名。我会上传一个签名工具包(工
具包需要java支持,请先自行下载java并在电脑上安装好),大家下载到电脑里,解压出来。
修改过的改名成,并放到签名工具包内,双击即可自动进行签名。
签名完成后,会在同目录内生产一个update_文件,就是我们签过名的刷机包了。
开刷··
初级篇到此为止。喜欢进一步折腾的朋友,请关注后面的中级篇···
Cm rom定制教程—中级篇
前面的初级篇,大概分析了rom包的构成,简单的修改。现在我们进一步研究rom的
修改。
Data文件夹的加入:
喜欢研究的朋友会发现,cm原版rom比pandora或者modaco少了一个data文件夹。
我在初级篇里提到过,当你内置软件在rom里,如果直接把apk放在system/app里的话,
是不可以在应用管理里卸载的。那么这个data文件夹的作用就来了。
以cm5.041为例,它里面没有data文件夹,我们就自己新建一个,然后再data文件夹
里再建一个app文件夹,路径就为:/data/app 。它和/system/app的区别就是,让我们内置
的软件今后可以自行卸载,而且当你使用app2sd的时候,软件可以直接安装到扩展卡里。
我们新建好,就可以把什么搜狗输入法啦,root管理器的apk都放进去。
META-INF文件夹的修改:
那么光新建这个文件夹就ok了吗?当然不是。记得初级篇里提到的那个/META-INF文
件夹吗?就是文件的加密信息,以及升级脚本,当当当,该它登场了。
打开META-INF文件夹,你会看到一些文件和一个文件夹。文件就是加密信息,我们
可以不用管它,重要的是那个文件夹,一步步点进去,会看到update-script,这个就是升级
脚本,它控制着我们刷机的步骤和顺序等信息,非常重要。
我大概复制一部分来做下解释(该文件可以直接用文本打开并编辑):
assert compatible_with("0.2") == "true"
assert getprop("") == "passion" || getprop("t") == "passion"
show_progress 0.500000 0 ----插入一个标签信息
format SYSTEM: ----格式化system
copy_dir PACKAGE:system SYSTEM: --拷贝刷机包的system到机身system
symlink ../xbin/su SYSTEM:bin/su
symlink busybox SYSTEM:xbin/[
symlink busybox SYSTEM:xbin/[[
symlink toolbox SYSTEM:bin/hd
symlink toolbox SYSTEM:bin/id
symlink toolbox SYSTEM:bin/ifconfig
symlink toolbox SYSTEM:bin/iftop
symlink toolbox SYSTEM:bin/insmod
symlink toolbox SYSTEM:bin/ioctl
symlink toolbox SYSTEM:bin/vmstat
symlink toolbox SYSTEM:bin/watchprops
symlink toolbox SYSTEM:bin/wipe
set_perm_recursive 0 0 0755 0644 SYSTEM: -------权限类的设置
set_perm_recursive 0 2000 0755 0755 SYSTEM:bin
set_perm 0 3003 02755 SYSTEM:bin/netcfg
set_perm 0 3004 02755 SYSTEM:bin/ping
set_perm 1001 1005 0444 SYSTEM:etc/
set_perm_recursive 1002 1002 0755 0440 SYSTEM:etc/bluez
set_perm 0 0 0755 SYSTEM:etc/bluez
set_perm 1002 1002 0440 SYSTEM:etc/
set_perm 1014 2000 0550 SYSTEM:etc/dhcpcd/dhcpcd-run-hooks
set_perm_recursive 0 2000 0755 0750 SYSTEM:etc/init.d
set_perm 0 0 0755 SYSTEM:etc/init.d
set_perm 0 2000 0550 SYSTEM:etc/
set_perm_recursive 0 0 0755 0555 SYSTEM:etc/ppp
set_perm_recursive 0 2000 0755 0755 SYSTEM:xbin
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.200000 0 -------再插入一个标签
write_raw_image PACKAGE: BOOT: ---刷写boot
format CACHE: -----格式化缓存
show_progress 0.100000 10 -----插入一个标签
ok,大部分的东西都不需要我们修改。但如果你自己新建了一个/data/app,并在里面内置了
自己喜欢的软件,那我们就要在升级脚本里做一些修改了,因为脚本里并没有提到这个data
文件夹(上面的脚本里,提到了system文件夹)。
我们只需要加入(这个是比较保守的写法):
show_progress 0.200000 0 ---样成好习惯,加入一个显示标签吧
delete DATA:app
delete DATA:
delete DATA:local
delete DATA:dalvik-cache
copy_dir PACKAGE:data DATA: -----拷贝刷机包的data
set_perm 1000 1000 0771 DATA:app ----设置data/app的权限
那我们把这段脚本加在哪个位置呢?我自己一般是放在
show_progress 0.200000 0
write_raw_image PACKAGE: BOOT:
的前面。
修改过的升级脚本,就可以让你新建的data文件夹,能够成功刷进去了。
再次体现,升级脚本是非常重要的东西,如果你想制作一个简单的升级补丁,也需要用到升
级脚本。我在后面会单独介绍小补丁的制作方法。
app2sd的加入:
cm5.05应该是内置app2sd的,我就不做介绍了。网络上有很多rom,有些是内置app2sd功
能的,但经过我的观察,每个romer的app2sd内置方法都不太一样。
最简单的鉴别app2sd是否内置的方法:看看/system里有没有一个sd文件夹,文件夹里有没
用一个placeholder文件,如果有,那么这个rom一般就是内置app2sd补丁的。
自己内置app2sd进rom的方法:我们需要修改4个地方。
1, 把04apps2sd这个文件,放在/system/ etc/init.d里
2, 把e2fsck这个文件,放在/system/xbin里
3, 在/system里建一个叫做sd的文件夹,并在里面放一个叫做placeholder的文件。这个文
件其实就是一个空文件,但如果你不放,刷机的过程中会认为sd文件夹是多余的,而
不刷进系统。
4,在升级脚本里加入(同样加入在BOOT之前的位置):
set_perm 0 0 04755 SYSTEM:bin/su
set_perm 0 0 04755 SYSTEM:xbin/e2fsck
如果你的升级脚本,已经对xbin文件夹整体设置过权限,那也应该是可以的,就不需
要单独加这段了。
要点总结:
update-script这个升级脚本非常重要,你可以根据自己的需要来修改里面的信息。如果你其
他地方改的再好,脚本没有修改正确,都是白搭。
Placeholder文件的作用就是:不让“刷机程序”认为这个文件夹是空的。