生成的 system.img 未在模拟器上运行

Generated system.img not running on emulator

提问人:krupal.agile 提问时间:7/16/2018 最后编辑:Alain C. Jiménezkrupal.agile 更新时间:9/16/2023 访问量:1786

问:

我想为 Android TV 构建一个自定义 ROM。

我已按照 Android 源代码 - AOSP 网站上给出的步骤操作,并使用以下命令下载了源代码:

repo init -u https://android.googlesource.com/platform/manifest -b master
repo sync -j16 -c

source build/envsetup.sh
lunch aosp_x86-eng

为了构建系统映像,我使用以下命令:

make -j16

它使用最新的 Q 版本来构建:

PLATFORM_VERSION_CODENAME=Q
PLATFORM_VERSION=Q
TARGET_PRODUCT=aosp_x86
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=LiveTv
TARGET_ARCH=x86
TARGET_ARCH_VARIANT=x86
HOST_ARCH=x86_64
HOST_2ND_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-4.4.0-130-generic-x86_64-Ubuntu-16.04.4-LTS
HOST_CROSS_OS=windows
HOST_CROSS_ARCH=x86
HOST_CROSS_2ND_ARCH=x86_64
HOST_BUILD_TYPE=release
BUILD_ID=OC-MR1
OUT_DIR=out

生成始终成功。 并且也会生成。system.imgramdisk.img

我想在模拟器上测试系统映像。我使用了以下命令:

./emulator -avd tvrom -sysdir out/target/product/generic_x86/ -system out/target/product/generic_x86/system.img -ramdisk out/target/product/generic_x86/ramdisk.img -data out/target/product/generic_x86/userdata.img -kernel prebuilts/qemu-kernel/x86/kernel-qemu

名称是,其他参数是我构建的系统映像的路径。avdtvrom

但是,执行此操作后,没有在模拟器中启动,并且在那里仍然是黑屏。system.img

此外,终端中出现打印错误:

Segmentation fault (core dumped)

我搜索了它,但没有找到任何解决方案。谁能帮忙?

编辑

如果有人提供了在 Android 模拟器上刷新和启动最新 AOSP_X86 或自定义 ROM AOSP_X86_64步骤列表,那么它将很有用。

安卓 Linux 安卓电视

评论

0赞 Susmit Agrawal 7/16/2018
您是否正在使用下载源代码?如果是,则需要将版本作为参数提及。repo sync
0赞 krupal.agile 7/16/2018
@SusmitAgrawal是的,我正在使用 repo sync -j8 -c
0赞 Susmit Agrawal 7/16/2018
对不起,我的意思是.您需要在此处指定 android 版本。查看此链接以获取更多信息: source.android.com/setup/build/downloadingrepo init
0赞 krupal.agile 7/19/2018
@SusmitAgrawal 请参阅更新的问题。我也对这个问题给予了赏金。
0赞 Susmit Agrawal 7/19/2018
模拟器是否与其他映像一起运行?就像 Android Studio 中提供的一样?

答:

0赞 Vitaliy 12/20/2023 #1
  1. master 分支不是一个稳定的分支。始终同步官方标记的分支。

  2. 仿真器的正确午餐目标是 32 位sdk_phone_x86 位或 64 位的 sdk_phone_x86_64。

-1赞 Jigar Patel 12/20/2023 #2

验证生成配置: 仔细检查您的生成配置,尤其是 lunch 命令。确保您为 Android TV x86 选择了正确的目标。您可以利用午餐来选择正确的目标:

午餐 aosp_x86-eng

使用预构建的内核: 您可以尝试使用模拟器本身提供的内核,而不是使用预构建目录中的内核。使用 -kernel-qemu 选项而不指定路径:

./emulator -avd tvrom -sysdir out/target/product/generic_x86/ -system out/target/product/generic_x86/system.img -ramdisk out/target/product/generic_x86/ramdisk.img -data out/target/product/generic_x86/userdata.img -kernel prebuilts/qemu-kernel/x86/kernel-qemu

使用 Android TV AVD: 创建专门用于 Android TV 的 AVD。您可以使用 AVD 管理器执行此操作:

avdmanager 创建 avd -n tvrom -k “系统映像;安卓-29;google_apis_playstore;x86英寸

然后,使用 AVD 名称启动模拟器:

模拟器 -AVD TVROM

重建并重试: 如果上述步骤都不能解决问题,您可能需要清理构建并尝试重建 ROM。有时,问题可能是由不完整或损坏的构建引起的。

清洁 制造 -j16