模拟器无法在内核映像文件中找到“Linux version”字符串

43

我正在为Nexus Player构建AOSP,在成功编译之后,我尝试运行模拟器,但是我收到的消息是:

emulator: 错误:无法在内核镜像文件中找到“Linux version”字符串: /home/mita/Work/Nexus/out/target/product/fugu/kernel

我找不到关于这个问题的任何信息,请有经验的人帮忙。

完整的输出如下:

emulator: 找到ANDROID_PRODUCT_OUT:/home/mita/Work/Nexus/out/target/product/fugu emulator: 找到构建目标架构:x86 emulator: 查找用于模拟“x86”CPU的emulator-x86 emulator: 探查程序:./emulator64-x86 emulator: 探查程序:./emulator-x86 emulator: 探查路径以获取:emulator64-x86 emulator: 返回结果:/home/mita/Work/Nexus/prebuilts/android-emulator/linux-x86_64/emulator64-x86 emulator: 找到特定于目标的模拟器二进制文件:/home/mita/Work/Nexus/prebuilts/android-emulator/linux-x86_64/emulator64-x86 emulator: 禁用GPU仿真 emulator: 运行: /home/mita/Work/Nexus/prebuilts/android-emulator/linux-x86_64/emulator64-x86 emulator: qemu后端:argv[00] = "/home/mita/Work/Nexus/prebuilts/android-emulator/linux-x86_64/emulator64-x86" emulator: qemu后端:argv[01] = "-verbose" emulator: 合并后端参数: /home/mita/Work/Nexus/prebuilts/android-emulator/linux-x86_64/emulator64-x86 -verbose emulator: 找到Android构建根目录:/home/mita/Work/Nexus emulator: 找到Android构建输出: /home/mita/Work/Nexus/out/target/product/fugu emulator: 在 /home/mita/Work/Nexus/out/target/product/fugu/system/build.prop读取属性文件 emulator: 无法找到引导属性文件: /home/mita/Work/Nexus/out/target/product/fugu/boot.prop

模拟器:发现目标API SDK版本:25

模拟器:虚拟设备没有配置文件-不用担心 模拟器: 使用核心硬件配置路径: /home/mita/Work/Nexus/out/target/product/fugu/hardware-qemu.ini 模拟器:找到特定于皮肤的hardware.ini: /home/mita/Work/Nexus/development/tools/emulator/skins/HVGA/hardware.ini 模拟器:自动配置:-skin HVGA 模拟器:自动配置:-skindir /home/mita/Work/Nexus/development/tools/emulator/skins 模拟器:找到特定于皮肤的hardware.ini: /home/mita/Work/Nexus/development/tools/emulator/skins/HVGA/hardware.ini 模拟器:从以下位置加载密钥集:/home/mita/.android/default.keyset 模拟器:尝试加载皮肤文件'/home/mita/Work/Nexus/development/tools/emulator/skins/HVGA/layout' 模拟器:皮肤网络速度为:'全速' 模拟器:皮肤网络延迟为:'无' 模拟器:自动配置:-kernel /home/mita/Work/Nexus/out/target/product/fugu/kernel 模拟器:目标架构='x86' 模拟器:自动配置:-qemu -cpu qemu32 模拟器:错误:无法在内核映像文件中找到'Linux version '字符串: /home/mita/Work/Nexus/out/target/product/fugu/kernel


你用了哪个命令进行编译?另外,你能否发布/home/mita/Work/Nexus/out/target/product/fugu/目录下可用文件的列表? - Sanyam Jain
抱歉没有回复。我刚刚发布了解决问题的方案,但如果您需要,这里是文件: 2ndbootloader installed-files.txt recovery.id android-info.txt kernel recovery.img boot.img module-info.json root build_fingerprint.txt obj symbols clean_steps.mk previous_build_config.mk system data ramdisk.img system.img dex_bootjars ramdisk-recovery.img gen recovery - Mita_
8个回答

146

我遇到了这个错误,原因是我的仿真器运行的是旧版本。我去了SDK管理器并更新了Android仿真器。

工具> SDK管理器> SDK工具> Android仿真器> 将其勾选以强制更新 > 接受

之后,仿真器正常运行。


1
要从命令行更新,请转到 <Android Sdk dir>/cmdline-tools/latest/bin 并运行 ./sdkmanager --update。这将更新所有软件包到最新版本。注意:<Android Sdk dir> 通常是 ~/Android/Sdk - Yirmi

13

请参考 @voghDev 的回答:

工具 > SDK 管理器 > SDK 工具 > Android 模拟器 > 勾选以强制更新 > 接受


4

我之前也遇到过这个错误,原因是我的模拟器版本太旧了。我打开SDK Manager并更新了Android模拟器。

我按照@voghdev的步骤进行操作:

工具 > SDK Manager > SDK 工具 > Android 模拟器 > 选中以强制更新 > 接受

还要确保有足够的空间来运行模拟器。

需要大约8GB的磁盘空间。

完成后,模拟器可以正常运行。


2

在这里输入图片描述工具 SDK管理器 SDK工具...

以下是一个简单的技巧。

  1. 如果(Android模拟器)复选框已经选中。
  2. 取消复选框的选择。
  3. 应用
  4. 确定
  5. 再次打开TOOLS-->SDK MANAGER-->SDK TOOLS
  6. 选中Android模拟器复选框

这样做旧设置将被默认删除。 模拟器的新设置将可用。

在这里输入图片描述


0

在构建AOSP并从同一终端启动模拟器时,我遇到了类似的问题。

虽然这篇文章对 OP 来说有些晚了,但我希望这可以帮助那些构建早期版本 AOSP 的人(OP 发布了 API 25 的构建)。

问题:

如您所知,要配置 AOSP 构建,您需要运行以下命令:

  1. $ . build/envsetup.sh
  2. $ lunch (然后选择您的构建目标)

envsetup.sh 中,如果您看一下 function lunch() 底部,会调用 set_stuff_for_environment。在 function set_stuff_for_environment() 中,会调用 setpaths

function setpaths() 如其名称所示,为您的 AOSP 构建添加了一些路径以正确运行。其中一个添加到 $PATH 的路径是 AOSP 打包的 emulator 命令的版本。

由于 AOSP 模拟器的路径将首先在您的 $PATH 中找到,因此在运行$ emulator 时,系统将使用 emulator 的 AOSP 版本,而不是您的 Android SDK 版本的 emulator

简而言之,在运行 $ lunch 后从命令行运行 $ emulator,则将运行与正在构建的 AOSP 版本相关联的 emulator 的 AOSP 版本。 (在我的情况下,它是较旧的版本的AOSP)

解决方案:

除了其他答案之外,这些答案正确地指出您需要更新 Android SDK 中的模拟器版本,还需要确保您正在从 Android SDK 路径而不是 AOSP 模拟器路径运行emulator 命令。

要快速检查这一点,可以使用 $ which emulator。 这将向您显示在运行 $ emulator 时将运行的完整命令的路径。

"正确"路径应类似于:

  • /home/user-name/Android/Sdk/emulator/emulator
在运行$ lunch之后,路径会显示类似以下的内容:
  • /home/user-name/aosp-home-dir/prebuilts/android-emulator/<target>/emulator
简而言之: 如果您是从与构建AOSP相同的终端运行$ emulator,请尝试从新的终端运行$ emulator。此外,您应该通过使用$ which emulator来确认emulator命令的路径。

$ which emulator指向的应该是< Android Sdk dir >/emulator/emulator的模拟器位置,而不是AOSP版本的模拟器。

注意:< Android Sdk dir >通常安装在~/Android/Sdk中。


在Ubuntu上,不要使用sudo apt install google-android-emulator-installer命令,而是创建一个别名(alias),将模拟器指向Android SDK目录中的程序。对于我来说,别名为emulator="/home/sagar/Android/Sdk/emulator/emulator"。 谢谢Yirmi! - Sagar Devkota

0

只需前往工具 > SDK 管理器 > SDK 工具,然后更新您所选择的选项下可能可用的内容。

这可能包括以下内容:

  • Android SDK 构建工具xxx
  • Android 模拟器
  • Intel x86 模拟器加速器(HAXM 安装程序)

0

检查您的Android SDK设置 -> SDK工具 启用HAXM安装程序(如果您有英特尔) 像这里一样

它帮助了我,祝你好运!


-5
回答自己的问题:
如果你编译为fugu - Nexus Player版本,就不能在模拟器上运行构建。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接