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烧写方式重启手机

 

更多相关文章

  1. Android(安卓)ROM研究---如何在ubuntu下下载姜饼(Gingerbread)源
  2. Android平台开发指导(Android(安卓)Porting Guide)(一)
  3. C#开发Android应用的必备——Mono for Android(安卓)V1.0 发布
  4. Android分割线divider(内含Android虚线分割线失效成实线解决方案)
  5. 理解 Android(安卓)Build 系统
  6. Android编译系统(四):Android(安卓)编译系统框架分析及main.mk分
  7. Android预优化那些事
  8. 跟着做 Android(安卓)NDK学习入门如此简单(一)
  9. 如何学习android

随机推荐

  1. android - Room的使用教程
  2. Android第四十七期 - WheelView沉浸式菜
  3. Android原生AlertDialog修改标题,内容,按钮
  4. hardwareAccelerated你不知道的一些问题
  5. Fragment与FragmentActivity间的数据通讯
  6. android系统自动浮动查询框的使用
  7. android .classpath
  8. Android开发基础————通过内部类实现
  9. Android 判断Root的方法
  10. android 存储图片到data目录和读取data目