android - 如何编译 Android AOSP 内核并使用 Android Emulator 对其进行测试?

标签 android android-emulator emulation android-source

有没有人成功编译安卓内核并在安卓模拟器中测试过,如果有,有什么特别需要做的吗?

SDK 的文档非常好,但是我很难找到编译内核和在模拟器中设置自定义机器的文档。

最佳答案

自 2009 年 8 月起,内核不再是您按照说明下载 android 开源项目的源代码时获得的标准 repo list 的一部分。在模拟器上成功下载、构建和运行特定内核所需的步骤如下:

  • 通过将 Android 内核添加到您的存储库 list 或通过运行手动获取 Android 内核:
    git clone https://android.googlesource.com/kernel/goldfish.git
  • 查看使用模拟器的正确分支,即金鱼:
    git checkout -t origin/android-goldfish-2.6.29 -b goldfish
  • 生成模拟器配置(qemu模拟器运行arm代码,即一个arm配置):
    制作 ARCH=arm goldfish_defconfig
    • 如果这不起作用,请尝试 make ARCH=arm goldfish_armv7_defconfig
  • 现在使用随开源项目分发的交叉编译工具构建内核:
    make ARCH=arm CROSS_COMPILE=mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-
  • 以这种方式构建的内核最终应位于内核树的 arch/arm/boot 文件夹中(您将来自 git clone 的代码放置在该文件夹中)
  • 要使用您的内核运行模拟器,有两种选择,将其复制到开源项目的预构建内核文件夹以替换标准内核。另一个选项是使用内核选项集启动模拟器:
    emulator -kernel mydroid/kernel/common/arch/arm/boot/zImage

请注意,我在上述说明中使用了默认路径,您需要将它们更改为适用于您的设置的路径。自从我上次测试以来已经有一段时间了,但我认为它应该可以工作。

一些额外的信息: 在标准的 Android 开源分发中,内核作为预构建的二进制文件分发在 mydroid/prebuilt/android-arm/kernel 文件夹中,并且不包含源代码。我认为内核源代码已从默认 list 中删除,原因有两个。一个是大多数人不会使用的平台组件需要大量带宽和磁盘空间。另一个原因是,由于内核是使用内核构建系统构建的,而不是作为 aosp 构建系统的一部分,因此将其分开是有意义的。内核的公共(public)分支是模拟器使用的分支。还有experimental、msm(Qualcomm 平台)和Omap(TI 平台)等分支。如果您想将 Android 内核与硬件一起使用,您可能会更感兴趣。

关于android - 如何编译 Android AOSP 内核并使用 Android Emulator 对其进行测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1809774/

相关文章:

android - 删除项目(文件)时动态更新 GridView

Android:以编程方式通过 URL 检索网页缩略图

java - 在屏幕上显示保存到文件的数据

Android studio 模拟器(设备未经授权)

android - 无法使用 Android 模拟器收听音频

java - 将特定项目从一个数组列表复制到另一个数组列表

android - glTexImage2D : got err pre :( 0x506 internal 0x1908 format 0x1908 type 0x1401

android - 在模拟器之间发送短信

java - 如何复制正在运行的应用程序的 RAM,保存它,然后将其重新加载到 RAM 中?

android - 无法启动。系统错误 : Calling js method onCreate failed