随笔 - 383  文章 - 0  评论 - 0  阅读 - 35557 

 

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

 

 

posted on   xieyan0811  阅读(22)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示