批改Android框架代码

修改Android框架代码

1.   位置

公共控件的代码在源码目录 Android/frameworks/base/core/java/android/ 中

后台服务的代码在源码目录 android/frameworks/base/services/java/android/server 中

 

2.   修改

修改其中代码并执行 mm 编译

形如 :

$ cd frameworks/base/services/java/com/android/server/

$ vi IntentResolver.java

$ mm

 

3.   替换

编译后用生成的包替换手机上 /system/framework/ 中相应的包

编译后生成的文件见提示

形如 :

$ cd out/target/product/general/system/framework/

$ adb push services.jar /system/framework/

 

4.   使新的包生效

 

a)          方法 1:

重启手机后生效

 

b)         方法 2:

杀死 system_server 进程,使系统重新启动,这种方法速度快

$ ps

找到 system_server 对应的 pid, 假设它为 1219

$ kill 1219

 

5.   注意

 

a)          绝大多数情况下都能成功,不过最好在替换前备份原有 jar 包

 

b)         如果替换重要的包使机器不能启动到桌面了,可以通过重新打包 system.img ,然后重新烧写( fastboot )到系统中解决此问题,注意 system.img 的大小

$ ./out/host/linux-x86/bin/mkyaffs2image -f out/target/product/generic/system out/target/product/generic/obj/PACKAGING/systemimage_unopt_intermediates/system.img

$ out/host/linux-x86/bin/acp -fpt out/target/product/generic/obj/PACKAGING/systemimage_unopt_intermediates/system.img out/target product/generic/system.img

$ fastboot flash system system.img

此时用 fastboot 烧写方式重启手机

 

 

from: http://www.linuxidc.com/Linux/2010-09/28355.htm