高效构建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
和子模块
为 services.core 模块创建新的 classes.dex:
mmm frameworks/base/services/core
创建 services.jar 文件,包括我们刚刚重建的 services.core 模块:
mmm frameworks/base/services
为模拟器创建新的system.img:
make snod
如果模拟器(或设备)已经是 运行,您可以使用新的 services.jar 和:
adb remount && adb sync && adb shell stop && adb shell start
事实上mm
和mmm
不检查修改的子模块,所以重建services模块(步骤2) 之前没有重建 services.core (step 1) 模块是不够的。
DEXPREOPT
如果您看到消息:
Warning: with dexpreopt enabled, you may need a full rebuild.
您必须关闭执行 make clean
的 dex 预优化,然后在 make
和 mm
中使用以下标志:WITH_DEXPREOPT=false
和 DISABLE_DEXPREOPT=true
.
我正在尝试扩展 Android 的 PackageManager 功能修改 this file:
frameworks/base/services/core/java/com/android/server/pm/SELinuxMMAC.java
当我在编辑文件后执行 make clean && make
并启动模拟器时,更改就在那里,但即使启用缓存也需要很长时间。我尝试使用 mmm framework/base
但它似乎没有重建 services.core 模块。
有谁知道修改系统服务然后高效重建的可靠方法吗?
mmm
和子模块
为 services.core 模块创建新的 classes.dex:
mmm frameworks/base/services/core
创建 services.jar 文件,包括我们刚刚重建的 services.core 模块:
mmm frameworks/base/services
为模拟器创建新的system.img:
make snod
如果模拟器(或设备)已经是 运行,您可以使用新的 services.jar 和:
adb remount && adb sync && adb shell stop && adb shell start
事实上mm
和mmm
不检查修改的子模块,所以重建services模块(步骤2) 之前没有重建 services.core (step 1) 模块是不够的。
DEXPREOPT
如果您看到消息:
Warning: with dexpreopt enabled, you may need a full rebuild.
您必须关闭执行 make clean
的 dex 预优化,然后在 make
和 mm
中使用以下标志:WITH_DEXPREOPT=false
和 DISABLE_DEXPREOPT=true
.