0 前言

通过《Android源码下载 & 编译(高通)》的方法下载的源码是包含有kernel目录的(也就是包含Linux内核),然而,通过其它方法下载的源码可能并不包含kernel目录(也就是不包含Linux内核)。参考资料[9]在最后明确指出:Android4.0源码默认下载是不包括内核源码的。本文针对这种情况,分析如何下载Android & Linux源码,并进行编译。

本文默认读者已经安装好git,repo等工具,具体可参考《Android源码下载 & 编译(高通)》第1节。

1 下载源码

1.1 Android

由于无法直接从Google官网下载,改在TI OMAPZOOM下载[11][7]:

(1)登陆http://git.omapzoom.org,然后打开platform/manifest.git:

图1.1

(2)浏览tags,查看可用的Android源码版本(本文以4.4.4版本为例):

图1.2

更多tags如下所示:

图1.3

(3)通过repo下载源码

mkdir android-4.4.4
cd android-4.4.4
repo init -u git://git.omapzoom.org/platform/manifest -b android-4.4.4_r2.0.1
repo sync

:如果网络不稳定,可能会出现中断现象,根据参考资料[10]的说明,此时可以使用下面的脚本来实现自动下载:

#!/bin/bash
echo "======start repo sync======"
repo sync
while [ $? == 1 ]; doecho "======sync failed, re-sync again======"sleep 3repo sync
done
echo "======sync sucessed !======"

将上述内容保存到repo_sync.sh文件中(保存于android-4.4.4目录中),然后:

chmod +x repo_sync.sh

此时可以通过执行上述脚本来启动下载:

./repo_sync.sh

1.2 内核

通过上述方法仅仅是下载了Android源码部分,其中并没有包含Linux内核源码,下面进一步说明下载Linux内核源码的步骤:

(1)登陆http://git.omapzoom.org:

图1.4

(2)在上图搜索框中输入关键字“kernel”,然后点击“Search”按钮,结果如下:

图1.5

由上图可见,具有common,exynos,goldfish,msm,omap,samsung以及tegra六个平台的内核,本文以goldfish为例。

(3)双击上图“kernel/goldfish.git”进入如下页面:

图1.6

上图红色框内列出了goldfish.git的URL,可以通过该URL下载goldfish版本的Linux内核。

(4)克隆内核

mkdir kernel
cd kernel
git clone git://git.omapzoom.org/kernel/goldfish.git

(5)查询远程分支

cd goldfish
git branch -a

结果如下图所示:

图2.4

(6)checkout分支

git checkout remotes/origin/android-goldfish-3.4

注意:不能下载android-3.18android-goldfish-3.10android-goldfish-4.4dev这三个版本,因为其中缺乏goldfish_defconfiggoldfish_armv7_defconfig配置文件;android-goldfish-2.6.29android-goldfish-3.18-dev这两个版本虽然含有goldfish_defconfiggoldfish_armv7_defconfig,但是编译后无法正常启动,前者是黑屏,后者则是崩溃!

2 编译

2.1 Android

(1)配置 & 编译

cd android-4.4.4
source build/envsetup.sh
lunch 1
make -j4

:与《Android源码下载 & 编译(高通)》不同的是,上述编译过程并没有编译Linux内核,Linux内核需要另外编译,详见下文。

(2)编译结果

编译完成后,将会在Android源码目录中创建一个out子目录,并且在其中保存编译结果:

图2.1

其中target/product/generic子目录保存了目标板镜像文件,而host/linux-x86子目录保存了在PC端运行的工具,例如adbfastbootemulator

图2.2

这里我们通过emulator工具来模拟启动刚才所编译的Android镜像。

(3)步骤(1)的配置过程早已将上述路径添加到PATH环境变量中,因此可以在Android源码树中的任意路径执行下面命令来启动模拟器:

emulator

效果如下:

图2.3

2.2 内核

(1)进入第1.2小节所下载内核源码的目录

cd goldfish

(2)配置

make ARCH=arm goldfish_armv7_defconfig .config# or
make ARCH=arm goldfish_armv7_defconfig# or
cp arch/arm/configs/goldfish_armv7_defconfig .config
make ARCH=arm menuconfig

如果选择最下面的方法,退出配置菜单,选择保存即可。

:除了goldfish_armv7_defconfig(适用于Androd4.0以后版本),还有一个配置文件goldfish_defconfig(适用于Android2.3之前版本),这里不能选错,否则无法正常启动。

(3)编译

make -j3 ARCH=arm CROSS_COMPILE=${CROSS_COMPILE_DIR}/arm-eabi-

参数说明:

-j3, 表示开启3个线程进行编译以加快速度;

CROSS_COMPILE,指定交叉编译工具前缀;

CROSS_COMPILER_DIR,它是一个环境变量,其值应该设置为交叉编译工具所在的路径(通常在上述下载所下载的Android源码的prebuilts目录中,例如prebuilts/gcc/linux-x86/arm/arm-eabi-4.7/bin)。

(4)结果

图2.4

3 开启/关闭编译内核

在编译Android系统的时候,可以同时编译Linux内核,也可以不编译!可以通过设置Android源码device目录中相应平台的BoardConfig.mk中的TARGET_NO_KERNEL变量的人值来达到目的[1]:

图3.1

TARGET_NO_KERNEL的值为false时,表示 在编译Android源码的同时编译Linux内核;TARGET_NO_KERNEL的值为true时,表示 在仅仅编译Android源码,不编译Linux内核(内核需要另外独立编译)。

参考资料

[1]Android下载目录结构中无kernel目录

[2]谁知道Android内核源码中goldfish部分代码到哪里去了?

[3]最近下载android4.3的源代码,可是找不到kernel那部分代码在什么目录下?

[4]ubuntu12.04(64bit)编译android4.4源码、sdk及kernel

[5]Android编译自己的kernel

[6]Android --- windows下搭建Linux环境下载编译Android源代码

[7]国内被墙后如何获取android源代码

[8]如何下载并编译Android4.0内核源码goldfish(图文)

[9]如何在Ubuntu11.10(32位)下编译Android4.0源码(图文)

[10]repo sync 时的自动续接脚本[转]

[11]OmapZoom_WIKIPEDIA

Android源码下载编译(TI)相关推荐

  1. android 源码下载编译

    引用:http://www.2cto.com/kf/201202/121175.html 最新的android4.0源代码公布以后,相信很多人和我一样都跃跃欲试,其实4.0的代码下载和编译和以前的版本 ...

  2. linux编译android源码,ubuntu16.04 Android源码下载编译

    本次编译源码的电脑为Ubuntu 16.04,4核 + 4G内存. 注. 对于电脑配置低的建议不要编译7.0以上的版本,就像我这台电脑,基本编译7.0以上都会报内存不足问题,因为在7.0版以上andr ...

  3. [记录] android源码下载编译

    记录一下android整个代码的下载和编译过程 一.下载android源码 由于国内不能访问googlesource网站,所以下面所有的代码都需要借助清华开源镜像站下载. 首先创建一个android文 ...

  4. android源码下载,编译及编译时遇到的错误整理

    一.环境搭建 因为android的源码编译只支持linux和mac,所以无法在windows下编译.我的电脑也没有双系统,因此只有装一个虚拟机.我用的是VMware workstation 我放到了百 ...

  5. 《深入理解Android内核设计思想(第2版)(上下册)》之Android源码下载及编译

    本文摘自人民邮电出版社异步社区<深入理解Android内核设计思想(第2版)(上下册)> 购书地址:http://item.jd.com/12212640.html 试读地址:http:/ ...

  6. 《深入理解Android内核设计思想(第2版)(上下册)》之Android源码下载及编译...

    本文摘自人民邮电出版社异步社区<深入理解Android内核设计思想(第2版)(上下册)> 购书地址:item.jd.com/12212640.ht- 试读地址:www.epubit.com ...

  7. VLC for Android源码下载和编译

    Project Hosting on 点击打开链接 最受欢迎的开源项目 点击打开链接 由Android的核心开发团队提供了15个优秀的示例项 目,包含了游戏.图像处理.时间显示.开始菜单快捷方式等. ...

  8. Android AOSP和Android-X86源码下载编译终极普法

        Android AOSP和Android-X86源码下载编译终极普法 引言   最近有朋友在询问怎么下载Android AOSP源码和Android-X86源码,编译学习!其实这个说简单也简单 ...

  9. android 清华镜像,清华镜像网站下载android源码并编译

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 下载android源码方法: 我的系统是ubuntu 18.04,主要参考了blog通过清华大学镜像下载Android源 ...

  10. android源码下载以及编译自己的ROM

    android源码下载以及编译自己的ROM 最近发现kernel.org被墙了,为什么这种网站也能被墙了? 要想下载源码的话,只能绕过去了.下面是我从网上搜索到的一些下载方法: =========== ...

最新文章

  1. Python 执行js的2种解决方案-乾颐堂
  2. jest java_✅使用jest进行测试驱动开发
  3. Windows编程初步(一)
  4. 织梦其他模型使用联动类型地区联动
  5. WCF 第二章 契约 系列文章
  6. 计算机处理信息的过程按先后顺序可表述为,信息加工理论按照信息处理的先后顺序将记忆区分为三个阶段系统;感觉记忆、()长时记忆。...
  7. linux常用命令笔记大全
  8. 自动化SQL Server Analysis Server表格模型的文档
  9. 【PAT Advanced Level】1011. World Cup Betting (20)
  10. 阿里云获ITSS最高等级认证:公共云、专有云服务能力双一级...
  11. python设置环境变量_小白Python进行中
  12. C#中String类的几个方法(IndexOf、LastIndexOf、Substring)
  13. 20170908在线编程之圆周上问两点间的距离问题
  14. 公文流转系统模式分析
  15. 【bzoj3034】Heaven Cow与God Bull
  16. vPro这个v字代表什么意思
  17. 流程图+BPMN+脑图 JointJS++ 3.6.3 Crack
  18. 配置web服务器 并运行,二、HelloTomcat(Web服务器配置)
  19. 孢子框架-互联网金融平台微服务架构设计(转)
  20. jsp onpropertychange

热门文章

  1. 【新手基础教程】maix asr(自动语音识别)
  2. APP自动化测试--IOS
  3. linux-CentOS7.6操作系统安装手册
  4. DNS劫持新方法(“侧信道攻击“攻破“端口随机化“的研究)
  5. sew制动器操作手册_SEW减速机中文操作手册
  6. 计算机系统分析师高级试题及答案,2013年计算机软考系统分析师试题及答案1
  7. Dubbo使用_尚硅谷视频学习笔记
  8. flash cs4 如何新增自定义控件
  9. 数学建模——蒙特卡罗模型
  10. 智能小车寻迹c语言程序,智能小车循迹记时测速程序