上一篇文章提到,启动模拟器使用的Android内核镜像是AOSP提前编译好的。而AOSP中又不包含Linux Kernel的源码。为了能全方位立体化的搞懂Android那就自己下载并编译Linux Kernel for Android吧。

1.下载

Linux Kernel for Android的源代码使用Git管理
首先我们新建一个文件夹用来装即将下载的代码

mkdir kernelcd kernel/

然后执行git clone命令进行下载

git clone https://android.googlesource.com/kernel/goldfish.git

内核的工程也就几百M大小,远不及AOSP那样庞大,所以一会儿就下载完了。
下载完成后,kernel目录下会出现一个goldfish文件件

2.切换分支

先来看一下情况

git branch -a

得到如下输出

remotes/origin/android-3.10remotes/origin/android-3.18remotes/origin/android-3.4remotes/origin/android-goldfish-2.6.29remotes/origin/android-goldfish-3.10remotes/origin/android-goldfish-3.10-k-devremotes/origin/android-goldfish-3.10-l-mr1-devremotes/origin/android-goldfish-3.10-m-devremotes/origin/android-goldfish-3.10-n-devremotes/origin/android-goldfish-3.18remotes/origin/android-goldfish-3.18-devremotes/origin/android-goldfish-3.4remotes/origin/android-goldfish-3.4-l-mr1-devremotes/origin/android-goldfish-4.4-devremotes/origin/heads/for/android-goldfish-3.18-devremotes/origin/linux-goldfish-3.0-wipremotes/origin/master

由于编译的内核需要运行在模拟器上,所以应该选择goldfish版本,而我选择了android-goldfish-3.4。

 git checkout remotes/origin/android-goldfish-3.4

3.编译

添加交叉编译工具目录到PATH

export PATH=$PATH:/home/windcake/Documents/aosp/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin

然后执行如下命令指定要编译的体系结构和交叉编译工具前缀

export ARCH=armexport SUBARCH=armexport CROSS_COMPILE=arm-eabi-

执行配置编译选项

make goldfish_armv7_defconfig

开始编译

make -j4

编译完成后会看到如下输出

OBJCOPY arch/arm/boot/zImageKernel: arch/arm/boot/zImage is ready

是的,zImage已经准备好了。

4.运行模拟器

-kernel告诉模拟器使用指定内核来启动后面的参数是zImage的路径

emulator -kernel /kernel/goldfish/arch/arm/boot/zImage

5.查看版本信息

adb shellcd proc/cat version

会看到如下输出

Linux version 3.4.67-g880d9af-dirty ([email protected]-ubuntu)(gcc version 4.8 (GCC) ) #5 PREEMPT Wed Feb 21 18:09:14 CST 2018

更多相关文章

  1. 升级Android内置apk版本
  2. android 版本检测与自动更新
  3. Android 系统版本
  4. Android检测版本更新(读取apk配置文件中的版本信息)
  5. Android各版本占比信息统计
  6. Android api对应系统版本
  7. Android获取手机的型号和系统版本

随机推荐

  1. Android(安卓): 等待view加载完成后执行
  2. Android开发艺术探索
  3. Android自定义控件中的自定义attrs
  4. [文件] Python读取txt存储至xls
  5. Android(安卓)设计模式 笔记 - 深入了解
  6. android添加library遇到的问题
  7. android viewmodel 数据刷新异常
  8. 秒懂Android(安卓)Studio的奇技淫巧
  9. android20个实用快捷键
  10. android动态控制组件的位置、大小和新的