我一直在修改Dalvik虚拟机,想知道是否有办法只从Android源代码中构建Dalvik虚拟机。
如果可以单独构建Dalvik虚拟机,那么如何将修改后的Dalvik虚拟机添加到Android系统中呢?
我一直在修改Dalvik虚拟机,想知道是否有办法只从Android源代码中构建Dalvik虚拟机。
如果可以单独构建Dalvik虚拟机,那么如何将修改后的Dalvik虚拟机添加到Android系统中呢?
假设您已经完成了初始构建(我假设您已经遵循了这里描述的步骤:http://source.android.com/source/building.html),那么您可以通过以下方式仅构建Dalvik VM:
$ make libdvm
当编译完成后,你会看到附近一些输出,类似于:Install: out/target/product/generic/system/lib/libdvm.so
这是新构建的Dalvik VM(或更具体地说,实现Dalvik VM的库)。输出路径的最后一部分是期望安装文件的位置,在本例中为/system/lib/libdvm.so
。要安装您的新VM,请首先确保您是root用户,然后重新挂载系统分区。
$ adb root
adbd is already running as root
$ adb remount
remount succeeded
现在,您可以将新的虚拟机推送到系统中:
$ adb push out/target/product/generic/system/lib/libdvm.so /system/lib/libdvm.so
请注意,如果您运行模拟器,则此更改不是永久性的,因为模拟器每次启动时都会重新加载system.img
。 但是,在设备上,更改将是永久性的。另外,由于Android预加载一个名为Zygote的进程,该进程后来用于分叉应用程序进程,因此需要重新启动系统以使新的VM在应用程序中使用。
$ adb reboot
实际上,您可以通过以下步骤重建几乎所有的Android组件:
Android.mk
LOCAL_MODULE := libdvm
make
模块名称,对于Dalvik VM来说是 libdvm
Install:
开头进行公告。对于Dalvik VM来说,这是Install: out/target/product/generic/system/lib/libdvm.so
adb root
和adb remount
命令,然后使用adb push
命令将构建好的文件推送到正在运行的Android系统。目标路径是输出文件路径的最后部分,在dalvik的情况下是/system/lib/libdvm.so