高效构建Android个系统服务组件

Efficiently build Android system service component

我正在尝试扩展 Android 的 PackageManager 功能修改 this file:

frameworks/base/services/core/java/com/android/server/pm/SELinuxMMAC.java

当我在编辑文件后执行 make clean && make 并启动模拟器时,更改就在那里,但即使启用缓存也需要很长时间。我尝试使用 mmm framework/base 但它似乎没有重建 services.core 模块。

有谁知道修改系统服务然后高效重建的可靠方法吗?

mmm 和子模块

  1. services.core 模块创建新的 classes.dex:

    mmm frameworks/base/services/core
    
  2. 创建 services.jar 文件,包括我们刚刚重建的 services.core 模块:

    mmm frameworks/base/services
    
  3. 为模拟器创建新的system.img

    make snod
    

    如果模拟器(或设备)已经是 运行,您可以使用新的 services.jar 和:

    adb remount && adb sync && adb shell stop && adb shell start
    

事实上mmmmm不检查修改的子模块,所以重建services模块(步骤2) 之前没有重建 services.core (step 1) 模块是不够的。


DEXPREOPT

如果您看到消息:

Warning: with dexpreopt enabled, you may need a full rebuild.

您必须关闭执行 make cleandex 预优化,然后在 makemm 中使用以下标志:WITH_DEXPREOPT=falseDISABLE_DEXPREOPT=true.