• 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

    大功告成!


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

  • 相关阅读:
    python之各种包
    正则表达式
    import/模块的导入
    迭代器/可迭代对象/生成器
    Day2 列表list
    Day1 字符串格式化
    Day1 字符编码及编码函数
    Python 学习笔记 之 随着学习不断更新的Python特性搜集
    Day1 input&print
    Newtonsoft.Json日期转换
  • 原文地址:https://www.cnblogs.com/chorm590/p/android_201905071722.html
Copyright © 2020-2023  润新知