我正在尝试扩展Android的PackageManager功能,以修改this file:
frameworks/base/services/core/java/com/android/server/pm/SELinuxMMAC.java
当我进行清洁&&编辑文件后执行并启动仿真器,所做的更改就在那里,但是即使启用了缓存,这也花费了很长时间.我尝试使用mmm framework / base,但它似乎无法重建services.core模块.
有谁知道一种可靠的方法来修改系统服务然后有效地进行重建?
解决方法:
mmm和子模块
>为services.core模块创建新的classes.dex:
mmm frameworks/base/services/core
>创建包含我们刚刚重建的services.core模块的services.jar文件:
mmm frameworks/base/services
>为模拟器创建新的system.img:
make snod
如果仿真器(或设备)已经在运行,则可以将新的services.jar用于:
adb remount && adb sync && adb shell stop && adb shell start
实际上,mm和mmm不会检查已修改的子模块,因此仅重建服务模块(步骤2)而不预先重建services.core(步骤1)模块是不够的.
敏捷
如果您看到以下消息:
Warning: with dexpreopt enabled, you may need a full rebuild.
您必须关闭dex预优化以进行清洁,然后在make和mm中使用以下标志:WITH_DEXPREOPT = false和DISABLE_DEXPREOPT = true.