从源代码构建Android后运行模拟器

win*_*006 25 android linux-kernel android-emulator

我能够将最新的android源代码下载到32位的Ubuntu虚拟机中(主机:Windows 7 64位).构建完成没有任何错误.

然后我尝试按照这些说明进行操作,其中提到我应该在源代码的根目录上运行模拟器.但是,当我尝试这个时,我收到一条错误,指出找不到此命令.

所以我去了文件夹out/host/linux-x86/bin,我发现有几个文件emulator*:

  • emulator
  • emulator-arm
  • emulator_renderer
  • emulator-ui
  • emulator-x86

当我键入emulatoremulator-x86在这里时,它也不起作用.这是我得到的错误:

xxxx/out/host/linux-x86/bin$ ./emulator-x86
emulator: ERROR: You did not specify a virtual device name, and the system
directory could not be found.

If you are an Android SDK user, please use '@<name>' or '-avd <name>'
to start a given virtual device (see -help-avd for details).

Otherwise, follow the instructions in -help-disk-images to start the emulator
Run Code Online (Sandbox Code Playgroud)

所以当我跑步时./emulator-x86 -help-disk-images,我看到以下内容:

If you are building from the Android build system, you should
have ANDROID_PRODUCT_OUT defined in your environment, and the
emulator shall be able to pick-up the right image files automatically.
See -help-build-images for more details.
Run Code Online (Sandbox Code Playgroud)

我自己构建了这个,所以我认为这ANDROID_PRODUCT_OUT是在我的环境变量中设置的,但是我没有看到它.所以我认为我应该运行一些其他shell脚本来获取该集合.

我查看了img文件,我在这个位置看到了几个out/target/product/generic:

  • ramdisk.img
  • system.img
  • userdata.img

任何人都可以对此有所了解并帮助我做下一步应该做的事情吗?我是Android的新手,我对此做了一些研究,但我找不到任何类似的问题.

Yur*_*ury 26

我不知道您构建哪个产品但是要运行模拟器,您可以使用以下命令:

out/host/linux-x86/bin/emulator -sysdir out/target/product/generic/-system out/target/product/generic/system.img -ramdisk out/target/product/generic/ramdisk.img -data out /target/product/generic/userdata.img -kernel prebuilt/android-arm/kernel/kernel-qemu -sdcard sdcard.img -skindir sdk/emulator/skins -skin WVGA800 -scale 0.7 -memory 512 -partition-size 1024

只需将其复制到.sh文件到Android源文件夹的根目录中即可运行此文件.或者你可以运行它,但你应该首先使用你的Android源文件夹root.

并且不要忘记使用命令在根文件夹中创建SD卡图像mksdcard.

  • 非常感谢,伙计们.显然我需要运行set_stuff_for_environment,它也是从envsetup.sh定义的.跑完之后,现在一切都很好看.说明页面根本没有提到. (7认同)
  • 谢谢.我按照你的指示,我得到了这个:模拟器:警告:无法加载皮肤文件'sdk/emulator/skins/WVGA800/layout',使用内置的一个模拟器:错误:无效或缺少内核映像文件:prebuilt/android- ARM /内核/内核QEMU.预建//arm-arm /下没有knernel文件夹(我只有gdbserver文件夹) (3认同)

Pau*_*sma 25

经过许多困惑和遇到许多相同的问题后,我找到了一种方法,让一切都在新环境中运作.

环境

首先,请确保使用~/.bashrc Android建议的更改来设置环境,包括:

export USE_CCACHE=1
ccache -M 10G
Run Code Online (Sandbox Code Playgroud)

如果您尚未执行此操作,请按照下载Android源的步骤进行操作.

然后为环境设置一些功能:

$ . build/envsetup.sh
Run Code Online (Sandbox Code Playgroud)

你现在应该实际执行其中一个函数来正确设置路径(正如Pingzhong Li指出的那样,这在Android构建指令中没有提到!):

$ set_stuff_for_environment
Run Code Online (Sandbox Code Playgroud)

第一次构建

开始建设!例如:

$ lunch full-eng
$ make -j4
Run Code Online (Sandbox Code Playgroud)

(这里,4个线程非常适合我的机器.根据需要进行更改.)

构建完成后,只需启动模拟器:

$ emulator
Run Code Online (Sandbox Code Playgroud)

后续构建

我发现system.img要重建,你需要删除以下文件/目录:

out/target/product/generic/obj/PACKAGING/
out/target/product/generic/system.img
Run Code Online (Sandbox Code Playgroud)

然后简单地重复:

$ make -j4
$ emulator
Run Code Online (Sandbox Code Playgroud)


SAU*_*_12 8

如何运行模拟器分步指南。 在下载的 android AOSP 源代码中运行模拟器如下:-

  • 步骤 1 如果您在当前运行的终端 (Ubuntu) 中正确完成了构建和生成系统映像,那么它是直接的。只需在终端中输入以下命令:- 模拟器

  • 第 2 步 如果您之前已经生成了系统映像并且您已经启动了一个全新的终端(Ubuntu),那么请一一运行以下命令:-

    1. source build/envsetup.sh
    2. lunch 1 这里 1 是我的午餐类型,你可以用你的(7、8 等)替换它,最后一个
    3. emulator

就是这样,它将正确地为您的模拟器提供午餐。谢谢你们快乐编码!!!!