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

 

大功告成!

 


 

願所有開發者都不會被限制內存!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM