当前位置: 手机中国论坛 > 谷歌论坛 > 安卓手机论坛 > 帖子正文

Android ROM DIY教程之ROM的修改

2015-10-23 12:10:13 1148 评论(0)
本帖最后由 MK-ROM 于 2015-10-23 12:13 编辑

Android ROM DIY教程之ROM的修改


我们在之前的文章《ROM刷机原理及ROM制作技术初探》中阐述了定制ROM的可能性。下面我们就先从简单的入手,介绍下如何修改ROM。修改ROM大致可分为:精简、增补、美化三类,这里主要讨论的是精简和增补两个方面。

1. ROM中到底有什么

用WinRAR打开刷机包后可以看到几个目录,下面列出了和我们有关的几个目录和说明:

dev_data/apps/:系统程序的apk文件目录,相当于刷机后 "/data/app_s/",这里的程序刷机后不可卸载。

dev_data/app/ :用户程序apk文件目录,相当于刷机后 "/data/app/",这里的程序刷机后可卸载。

META-INF/com/google/android/:刷机脚本文件。

system/etc/:存放了一些配置文件。

system/etc/permissions/:和软件权限有关,部分补丁需要在这个目录中添加文件。

system/lib/:系统程序的库文件存放位置。

4.添加程序

添加程序有两个方法,一是把程序添加为系统程序,二是添加为用户程序。把程序添加为系统程序的好处在于执行速度快,缺点是不能直接卸载,只有通过RE等工具删除。其实用RE直接删除系统程序APK文件时并非都卸载干净了,不信大家可以看看/data/data/这个目录,每个程序都对应了一个目标,其目录名和程序包的名称相同(不是XXX.APK这个XXX)。

(1)添加系统程序:

第一步,用WinRAR打开ROM压缩文件,进入 "dev_dataapp_s" 这个目录,把要添加的程序的APK文件复制进去。

第二步,用WinRAR打开要添加进去的APK文件看看“libarmeabi”目录中是否有.so结尾的文件,它们是程序运行时需要用到的库文件,有的话把他们复制到压缩包中的“system/lib/”目录中。有些童鞋在修改ROM的时候添加的程序无法执行,大多属于这个情况。

(2)添加用户程序:

添加用户程序稍微麻烦点,但是刷机后可直接卸载。可以直接把apk拖入"dev_data/app/"目录中,这一步很简单,麻烦的是apk中有库文件的情况。简单处理方法同添加系统程序中的第2步,这种方法的缺点是卸载时库文件还会保留在“system/lib/”中,好在大多数程序都没有库文件,少数程序保留下来的库文件并无大碍。高级点的方法是通过写脚本进行安装。

以前的ROM在“dev_data/”中没有app这个目录,大家可以自己建立(winRAR中点击右键,选创建一个新文件夹),建立好目录后要在刷机脚本中设置目录属性:

在刷机脚本中找到这一段:copy_dir ACKAGE:dev_dataINTERNAL: set_perm 1000 1000 0771 INTERNAL:app_s

在其后加上这一句:set_perm 1000 1000 0771 INTERNAL:app

其中第一句是把ROM中dev_data目录中的所有东东复制到/data目录下,第二句是设置 app_s的权限。我们加的那一句是设置app的权限接下来可以修补,调整ROM了。

5.firstboot脚本

要对ROM进行高级点的设置,可以利用firstboot.sh脚本。firstboot.sh脚本在ROM中的dev_data目录中。脚本中的代码是在刷完机后第一次启动时执行的,利用它可以对系统进行设置,安装APK等工作。看看liudidi1028rom中的脚本片段:

# System defaultsettings/system/xbin/sqlite3

$DATABASE"INSERT INTO system (name, value) VALUES ('trackball_wake_screen', 1);" /system/xbin/sqlite3

$DATABASE"INSERT INTO system (name, value) VALUES('trackball_unlock_screen', 1);" /system/xbin/sqlite3

$DATABASE"INSERT INTO system (name, value) VALUES ('lock_home_in_memory', 1);"

我想大家应该可以猜出这三句代码的作用了吧。至于脚本这么写,不要来问我,我也不熟,大家可以共同研究。在脚本中可以使用rm,mv等命令,用它可以直接把某些配置文件覆盖掉。例如:

busybox rm /system/etc/某文件busybox mv /system/etc/某文件

当然,如果修改的是系统文件,先要取得权限:busybox mount -o remount,rw /system

之后再改为只读:busybox mount -o remount,ro /system

6.ROM常见的系统配置文件

修改这些文件可以调整系统设置:

(1)systemetcspn-conf.xml:显示营运商的。

(2)systemetcgps.conf:和GPS搜星相关,所谓提高搜星速度就是修改这个文件了。

方法:把NTP_SERVER=XXXXX.pool.ntp.org改为NTP_SERVER=cn.pool.ntp.org。我试过,这个网站ping的速度的确比原始设置中的那个要快一倍以上。

(3)systembinrc:这个大家应该很熟悉了,用来设置Swap,Compcache之类的。

A.设置SWAP,进入文件后找到

####################

###### Swap ########

####################

其后的代码是和开启Swap有关的,例如:

SWAPNUM=`fdisk -l /dev/block/mmcblk1|grep swap|sed -e 's/ .*//g'`if [ -n "$SWAPNUM" ];thencho 60 > /proc/sys/vm/swappinessswapon $SWAPNUMfi

在每行前面加#注释掉后就可以不开机启动swap了。

B.修改内存管理参数,在rc文件中加入这一行:

echo "1536,1536,3072,1536,10240,12800" >/sys/module/lowmemorykiller/parameters/minfree

其中的数字从左到右为:前台进程、可见进程、次要服务、后台服务、内容供应节点、空进程,其中的数值的单位是4k,也就是说1536 : 4k*1536=6144k=6M

(4)systemetcapns-conf.xml:和网络接入点设置有关,大家可以自己试试。

注意:

0.如果你是ROM小白,建议你先查阅《ROM刷机原理及ROM制作技术初探》这篇文章。

1.修改ROM时最好不要解压缩,直接在WINRAR中操作,因为ROM应该是在Linux中压缩的,压缩格式可能会和在weindows下直接用winRAR压缩出来的不同。

2.包中的文件不要有中文文件名。

3.刷机前一定要备份,修改的ROM要是有什么地方弄错了很容易进不了系统。

此外,推荐一篇文章,通过DIY ROM制作属于自己的开机动画。


附:《ROM刷机原理及ROM制作技术初探》

DIY ROM制作属于自己的开机动画

不吐不快,我来说两句... 登录 | 注册

发布
暂时没有回复

您需要注册登录后,才能回帖哦! 登录 | 注册