Android源代码框架修改重建但在emulator中生效
我修改了/framework/base/services/core/java/com/android/server/am/ActivityManagerService.java一些logcat输出字符串 我尝试用不同的方法来重建它: 从顶部文件夹或 mmm/framework/base-jN或 mmm/framework/base/services-jN 然后我在/out/target/product/generic_x86/system/framework/x86/services.odex中得到一个新的输出文件 然后我用make snod更新system.img 然后我尝试重新启动emulator,或者重新安装adb sync,或者终止系统服务器进程 但遗憾的是,无论我使用哪种方法,仿真器总是输出原始字符串 我甚至提取了新的output system.img以获得新的services.odex文件,并使用oat2dex.jar将其反编译为java代码,我确实看到字符串在其中发生了变化Android源代码框架修改重建但在emulator中生效,android,build,android-emulator,android-source,Android,Build,Android Emulator,Android Source,我修改了/framework/base/services/core/java/com/android/server/am/ActivityManagerService.java一些logcat输出字符串 我尝试用不同的方法来重建它: 从顶部文件夹或 mmm/framework/base-jN或 mmm/framework/base/services-jN 然后我在/out/target/product/generic_x86/system/framework/x86/services.odex中
那么为什么我运行emulator时,它不会生效…emulator使用的系统映像文件是
system qemu.img
。
由于某些原因,该文件不是由makesnod
生成的,它只生成system.img
。我认为需要的是一个额外的目标,所以你可以说makeqsnod
或其他什么,但似乎没有。我不知道怎么会有人能这样工作
目前,我对Makefile结构的理解还不够透彻,无法理解如何添加qsnod
目标,但这里有一种手动滚动的方法
系统qemu.img
请注意,make-nN
报告的最后一步是:
[100% 255/255] Create system-qemu.img
要了解它在那里运行的命令,可以说makeshowcommands-jN
。我这样做了,发现在我的Macbook Pro上是这样的:
[100% 255/255] /bin/bash -c "(export SGDISK=out/host/darwin-x86/bin/sgdisk; device/generic/goldfish/tools/mk_qemu_image.sh out/target/product/generic_x86_64/system.img)"
这就是从inputsystem.img
生成system qemu.img
的命令(这就是make snod
生成的)
因此,在更改framework/base下的.java文件后,我在机器上重建system.img
的方法是:
mmm frameworks/base -jN
make snod -jN
SGDISK=out/host/darwin-x86/bin/sgdisk device/generic/goldfish/tools/mk_qemu_image.sh out/target/product/generic_x86_64/system.img
然后,当我重新启动模拟器时,我看到我的更改已经生效。应该是
框架
而不是框架
?