Android 移除 BatteryService 服务

2019-05-08

关键字:Android 系统裁剪、移除 BatteryService 


Android 的电池监测服务功能还是很成熟的,但并不是所有的设备都需要这么一个电池监测服务的。尤其是在我们的 Android 开发板内存资源比较紧张的时候,裁剪掉一些起不了作用的服务就显的尤为必要了。话不多说,直接干。

1、SystemServer.java

Android 的 framework 层所有原生系统服务都是在 SystemServer.java 中被注册并实例化的。我们首先从源头上关闭 BatteryService 的实例化。

./frameworks/base/services/java/com/android/server/SystemServer.java

在这里,我们找到 BatteryService 的变量声明,并将它注释掉。

其次是将 BatteryService 的实例化过程注释掉

接下来,还要将所有用到了 battery 变量的地方,都去掉 battery 的引用

到这就完成了,BatteryService 类就不会再被实例化的了。

可能有些同学会觉得少传了一个参数给别的方法会导致编译不过。这确实没错。但不要急,我们后面的工作就是直接去修改这些方法的参数列表。

2、IdleMaintenanceService.java

./frameworks/base/services/java/com/android/server/IdleMaintenanceService.java

这份代码,同样是直接注释掉和 BatteryService 相关的代码。

直接去改变它们的构造方法又有何不可呢?

上图的调用查询的是电池电量,这里直接恒定返回 99% 的电量就好了。当然,你非要返回 100% 也可以,笔者这里只是想留 1 点电量下来怕自己骄傲而已。

这里在询问设备当前是否在充电中,恒返回 true 就好。笔者的 Android 设备是直接由电源供电的,并没有配备电池器件。

3、Watchdog.java

./frameworks/base/services/java/com/android/server/Watchdog.java

老规矩,照着下图撸就是了。

4、PowerManagerService.java

./frameworks/base/services/java/com/android/server/power/PowerManagerService.java

上图的 3 条都得改。照着改就好。

OK ,修改完毕。这时可以尝试去编译一下 framework 的 service 了。

mmm frameworks/base/services/java/

一顿等待以后,看到编译通过!

Install: out/target/product/rk312x/system/framework/services.jar

大功告成!


愿所有开发者都不会被限制内存!

猜你喜欢

转载自www.cnblogs.com/chorm590/p/android_201905071722.html