从源代码构建Android - 模拟器和AVD

时间:2011-07-29 09:55:45

标签: android open-source android-emulator android-source

我为模拟器构建了Android源代码。我在Android Source documentation中读到,在成功构建期间自动添加了“模拟器”的路径。不过我对此有两个问题:

  1. 如果我打开一个新shell或关闭我现有的shell,则不再找到“模拟器”。当然,每次我想运行模拟器时都不需要构建它?

  2. 如果模拟器需要AVD,我如何创建和管理这些,因为我的机器上没有Android SDK?

  3. 谢谢, 千斤顶

    第2部分的解决方案。

    我需要创建一个名为ANDROID_PRODUCT_OUT的环境变量。从以下命令:

    emulator -help-build-images
    

    我看了......

      

    模拟器检测到您正在使用Android版本   系统通过查看你的ANDROID_PRODUCT_OUT变量   环境。

         

    如果已定义,则应指向特定于产品的目录   包含生成的系统映像。

    然后我在'out'目录中搜索'system.ing'。因为我正在为模拟器构建图像所在:

    out/target/product/generic
    

    我在.bashrc文件中添加了以下行:

    export ANDROID_PRODUCT_OUT=/home/jack.wootton/code/out/target/product/generic
    

    然后我可以从:

    运行模拟器
    /home/jack.wootton/code/out/host/linux-x86/bin
    

    第1部分的解决方案。

    我不知道Android虚拟设备,所以这个问题仍然存在 - 但是在成功构建并设置ANDROID_PRODUCT_OUT环境变量后,我不需要提供一个来运行模拟器。

    更新解决方案

    显然,在构建期间和使用envSetup.sh脚本时,应自动创建ANDROID_PRODUCT_OUT等变量。我想我的环境设置出了问题就是没有发生。

5 个答案:

答案 0 :(得分:8)

您分享了:

  

显然,在构建期间和使用envSetup.sh脚本时,应自动创建ANDROID_PRODUCT_OUT等变量。我想我的环境设置出了问题就是没有发生。

我也试图让它发挥作用并了解:

  1. lunch full-eng设置所有相应的env
  2. 检查它,只需运行:
    env | grep ANDROID
    您将看到所有相应的env变量设置 这些只是当前shell的本地!
  3. emulator然后做它应该做的事情。
  4. 当我稍后回到壳中时,我只是再次吃完午餐,以恢复我的环境 我希望这对其他人也有帮助!

答案 1 :(得分:5)

请执行以下操作:

source build/envsetup.sh or . build/envsetup.sh
setpaths

这就是诀窍。确保从源目录运行它。

答案 2 :(得分:3)

要检查我构建的模拟器源,我在项目的根文件夹中创建了以下脚本。我从另一个命令行运行它,它不需要一直运行. build/envsetup.shlunch full-eng命令。您可以根据需要编辑此脚本,如果需要运行其他设备,只需更改文件夹即可。

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

答案 3 :(得分:2)

您可以将这些添加到.bashrc文件

export ANDROID_PRODUCT_OUT=$ANDROID_SRC/out/target/product/generic
export ANDROID_BIN=$ANDROID_SRC/out/host/linux-x86/bin
PATH=$ANDROID_BIN:$PATH

答案 4 :(得分:0)

实际上,程序“模拟器”只是真实模拟器-qemu的包装器,例如emulator-arm或emulator-x86。您调用的“模拟器”将收集您输入的参数,并找到要执行的正确模拟器-qemu。

您遇到的问题是您没有明确描述要启动的图像/ avd。您可以使用参数“@ avd YOUR-AVD_NAME”或“ANDROID_PRODUCT_OUT”环境变量来设置放置avd的目录。 BTW,avd目录包含一些文件来描述这个设备的外观。

“。build / envsetup.sh”是为Android构建过程设置环境变量的脚本。因此很容易理解为什么会在那时设置“ANDROID_PRODUCT_OUT”。其默认值应为“PATH / TO / ANDROID / out / target / product / generic”。

PS:如果你想了解更多,你可以参考源文件:“PATH / TO / ANDROID / external / qemu / android / main-emulator.c”。你可以找到那里的模拟器。