有没有人成功编译安卓内核并在安卓模拟器中测试过,如果有,有什么特别需要做的吗?
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/