我能够将最新的android源代码下载到32位的Ubuntu虚拟机中(主机:Windows 7 64位)。构建完成没有任何错误。
然后我尝试关注these instructions,它提到我应该在源代码的根目录上运行模拟器。但是,当我尝试这个时,我收到一条错误,指出找不到此命令。
所以我转到out/host/linux-x86/bin
文件夹,发现emulator*
有几个文件:
emulator
emulator-arm
emulator_renderer
emulator-ui
emulator-x86
当我在此输入emulator
和emulator-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
因此,当我运行./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.
我自己构建了这个,所以我认为ANDROID_PRODUCT_OUT
是在我的环境变量中设置的,但是我没有看到它。所以我认为我应该运行一些其他shell脚本来获取该设置。
我查看了img
个文件,我在位置out/target/product/generic
看到了一对:
ramdisk.img
system.img
userdata.img
有没有人可以对此有所了解并帮助我做下一步应该做的事情?我是Android的新手,我对此做了一些研究,但我找不到任何类似的问题。
答案 0 :(得分:25)
经过许多困惑和遇到许多相同的问题后,我找到了一种方法,让一切都在新环境中运作。
首先,请务必根据~/.bashrc
that Android recommends的更改设置环境,包括:
export USE_CCACHE=1
ccache -M 10G
如果您尚未执行此操作,请按照downloading the Android source的步骤进行操作。
然后为环境设置一些功能:
$ . build/envsetup.sh
你现在应该实际执行其中一个函数来正确设置路径(正如Pingzhong Li指出的那样,Android构建说明中没有提到这一点!):
$ set_stuff_for_environment
开始建设!例如:
$ lunch full-eng
$ make -j4
(这里,4个线程非常适合我的机器。根据需要进行更改。)
构建完成后,只需启动模拟器:
$ emulator
我发现要重建system.img
,您需要删除以下文件/目录:
out/target/product/generic/obj/PACKAGING/
out/target/product/generic/system.img
然后简单地重复:
$ make -j4
$ emulator
答案 1 :(得分:24)
我不知道您构建哪个产品但运行模拟器可以使用以下命令:
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-大小1024
只需将其复制到.sh文件到Android源文件夹的根目录中即可运行此文件。或者你可以运行它,但你应该首先使用你的Android源文件夹root。
不要忘记使用命令mksdcard
在根文件夹中创建SD卡图像。
答案 2 :(得分:4)
仅供参考我有类似的问题,在尝试不同的事情后,我发现解决方案是运行lunch
(在运行envsetup.sh之后)并在这种情况下选择目标aosp_arm-eng
。每次启动一个新shell时都必须这样做,因为它设置了模拟器运行avd所需的某些环境变量。提供了你已经构建了目标。
答案 3 :(得分:3)
如何逐步运行模拟器指南。 在下载的Android AOSP源代码中运行模拟器如下: -
如果你已经在当前运行的终端(Ubuntu)中正确完成了构建并生成了系统映像,那么它就是向前发展的。只需在终端中键入以下命令: - 的 模拟器 强>
第2步 如果您之前已生成系统映像并且已启动新终端(Ubuntu),则逐个运行以下命令: - 1. source build / envsetup.sh 2. 午餐1 这里1是我的午餐类型,你可以用你的午餐类型替换它(7,8等)和最后一个 3. 模拟器
这就是它会正确地为您的模拟器提供午餐。 谢谢Guys Happy Coding !!!!
答案 4 :(得分:2)
#!/usr/bin/env bash
ANDROID_BUILD_OUT=/path/to/android/build/output/
ANDROID_SDK_LINUX=/path/to/android/sdk
ANDROID_BUILD=${ANDROID_BUILD_OUT}/android/target/product/generic
${ANDROID_SDK_LINUX}/tools/emulator \
-sysdir ${ANDROID_BUILD} \
-system ${ANDROID_BUILD}/system.img \
-ramdisk ${ANDROID_BUILD}/ramdisk.img \
-data ${ANDROID_BUILD}/userdata.img \
-kernel ${ANDROID_SDK_LINUX}/system-images/android-18/armeabi-v7a/kernel-qemu \
-skindir ${ANDROID_SDK_LINUX}/platforms/android-18/skins \
-skin WVGA800 \
-scale 0.7 \
-memory 512 \
-partition-size 1024
答案 5 :(得分:2)
在Mac上,您可以将以下行添加到〜/ .bash_profile文件中。相应地更改磁盘映像和src文件夹。
# start emulator
function startEmulator { hdiutil attach ~/android.dmg.sparseimage -mountpoint /Volumes/android;
cd /Volumes/android/AndroidSrc;
source build/envsetup.sh;
lunch aosp_arm-eng;
/Volumes/android/AndroidSrc/out/host/darwin-x86/bin/emulator; }
之后,创建一个新终端并输入:
startEmulator
您的模拟器可以启动。这适用于mac。
答案 6 :(得分:1)
只需在shell上键入模拟器,它就会启动最新版本的模拟器,因为它的路径设置为shell的PATH变量。
答案 7 :(得分:0)
如果你的机器上有“android sdk”,那么你的“模拟器”可以从那里取而代之而不是/ out / .... dir。 当您想使用“自己的”模拟器时,可以重命名“android sdk”目录。然后你的“模拟器”将被拿起。
希望这能帮到你!
此致 Sammoh
答案 8 :(得分:0)
export MY_PWD=/work/ABC/Google_Android
export ANDROID_BUILD_TOP=/work/ABC/Google_Android
export PATH=$PATH:$MY_PWD/prebuilts/gcc/linux
export ANDROID_PRODUCT_OUT=$MY_PWD/out/target/product/generic
以上是我的环境设定。 ANDROID_BUILD_TOP解决了
"emulator: ERROR: You did not specify a virtual device name, and the system
directory could not be found"
在我的机器上
答案 9 :(得分:0)
我是这样表演的
我修改了./build/envsetup.sh文件,只更改了set_stuff_for_environment
function set_stuff_for_environment()
{
setpaths
set_sequence_number
export ANDROID_BUILD_TOP=$(gettop)
# With this environment variable new GCC can apply colors to warnings/errors
export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
export ASAN_OPTIONS=detect_leaks=0
export ANDROID_PRODUCT_OUT=/var/www/android/out/target/product/generic_x86_64
echo $ANDROID_PRODUCT_OUT
}
在项目的根目录下,我创建了一个名为start.sh的文件
#!/usr/bin/env bash
ANDROID_BUILD_OUT=/var/www/android/out
ANDROID_SDK_LINUX=/opt/android-studio/sdk
ANDROID_BUILD=${ANDROID_BUILD_OUT}/target/product/generic_x86_64
sudo chmod -R 777 /dev/kvm
source build/envsetup.sh
set_stuff_for_environment
./prebuilts/android-emulator/linux-x86_64/emulator \
-debug-init -logcat '*:v' -verbose \
-sysdir ${ANDROID_BUILD} \
-system ${ANDROID_BUILD}/system.img \
-ramdisk ${ANDROID_BUILD}/ramdisk.img \
-skindir ${ANDROID_SDK_LINUX}/platforms/android-28/skins \
-skin WVGA800 \
-partition-size 2000
-scale 0.7 \
-memory 2000 \
-data ${ANDROID_BUILD}/userdata.img \