将文件修补到system.img以与android模拟器一起使用

时间:2011-02-02 18:20:46

标签: android android-emulator

我需要将文件修补到Android模拟器使用的system.img文件中,特别是我想将一个ARM二进制文件添加到/ system / bin目录。

我预先编译了这个二进制文件,它在我的模拟器中完美运行,但我不能简单地将system.img重新安装为rw和adb推送它,因为更改在重新启动时是非持久的。我在system.img的副本上尝试了这个,然后用-system将它传递给模拟器,但这很遗憾。

在理想世界中,我想修改“make sdk”进程,以便sdk构建过程在生成system.img时自动包含我的二进制文件。可以这样做吗?

如果无法做到这一点,是否还要手动将其修补到图像中?

非常感谢。

2 个答案:

答案 0 :(得分:3)

我有兴趣永久修改/ system文件夹并尝试解压缩system.img文件,但是我没能创建一个模拟器很满意的新img(使用mkyaffs2和unyaffs2工具来提取和创建一个新的system.img)。

相反,我找到了一个更简单的解决方案:

  1. 从/ data /目录中删除所有内容(lost + found除外)
  2. 将/ system的内容复制到/ data文件夹
  3. 对/ data /
  4. 进行所需的更改
  5. 杀死模拟器
  6. 您现在将〜/ .android / avd / MYANDROID.avd / userdata-qemu.img移​​动到〜/ system.img(或任何地方) 并使用新的系统映像启动您的模拟器:

    emulator -debug all -show-kernel -verbose -avd MYANDROID -no-boot-anim \
    -gpu on -partition-size 800 -system [path to your new system.img]
    

    / data文件夹是userdata-qemu.img文件的挂载位置。 它在第一次运行模拟器时创建,如果删除它将重新创建。 (虽然您安装的应用程序将消失)。 通过使用/ system文件夹的内容填充它,然后进行所需的修改,您已经创建了system.img文件的替换。

答案 1 :(得分:0)

system.img替换为原始版本,因此您需要在模拟器启动时提供补丁检查logcat&然后使用ADB推送您手动推送补丁。