本文为原创,转载请注明出处:http://blog.csdn.net/helloaugust11/article/details/20568671

写给想深入理解android的android开发爱好者。每个android开发爱好者,手头至少要有一份完整的Android源码,不管哪个版本。今天我给广大android开发人员推荐的是

Android4.4的源码下载和编译的全过程,解析的很详细包括了每个步骤和下载编译出错的解决方案。

该博客主要挑重点叙述,更详细,详细的内容我已经写好了一个文档,下载阅读就ok。

文档下载地址:http://download.csdn.net/detail/yxchen0811/6995527

首先android4.4源码的下载步骤:

1.     安装下载的客户端

$ sudo apt-get install curl

$ sudo apt-get install git-core

2.     创建一个~/bin目录,并添加到环境变量中

$ mkdir ~/bin

$ PATH=~/bin:$PATH

3.     下载repo脚本且修改他的权限为可执行

$ curl http://git-repo.googlecode.com/files/repo-1.13 > ~/bin/repo

$ chmod a+x ~/bin/repo

4.     创建一个保存android源码的目录,修改为最大权限且进入到该目录下

$ /home/august/android4.4

$ sudo chmod –R 777 /home/august/android4.4

$ cd  /home/august/android4.4

PS:由于android下载过程中有个.repo的隐藏目录,这个目录很大(12G),下载到其他分区,估计硬盘不够用,如果你按照我前面的教程安装的虚拟机只有下载到home目录下才能下载完。创建目录时目录中的august是我本人的英文名。读者可以根据自己的喜好随便命名,这里是允许自由发挥的,除了这好像没有其他的,如果想一次成功,就需要按照我的步骤一步一步来。

5.     初始化repo客户端,选择将要下载的android版本

$ repo init -u https://android.googlesource.com/platform/manifest

PS:输入回车后,可能会看到需要你输入你的姓名和邮箱,姓名可以随便输入,但是邮箱最好是可用的且最好是gmail的邮箱,原因我也不清楚,网上这么说的。

6.     上面的所有工作都弄完成后,就开始下载源码了

$ repo sync

下载代码就这么简单,总共就6个步骤,其中还有个步骤是创建个文件夹,整个下载过程出奇的简单,但是这小6个步骤可能会折腾你好长时间。需要你不停的解决错误,不停的repo sync。哈哈,这个单词我在命令行敲了不下100遍,这个后面会讲到,可以使用个脚本让计算机自己来重复的执行这个操作,人类真是太聪明了,我不得不佩服啊。还是回到下载源码让我们痛苦的错误上来,你解决了这些问题,就可以安心的睡觉,明天早上起来看看是否已经成功下载完成。

出现的第一个问题是repo客户端的问题,提示什么,按照他的提示输入什么就ok了是不是很简单。

Q:“A new repo command ( 1.18) is available”

A: 按照提示输入就可以了,cd /home/august/android4.4/.repo/repo/repo  /home/august/bin/repo

Q: 出现类似提示 Cannotfetch platform/tools/motodev   Fetchingprojects:   3% (7/228)  fatal: Not a git repository   fatal: HTTP request failed  error: RPC failed; result=56, HTTP code =200B  fatal: The remote end hung upunexpectedly  fatal: early EOF  fatal: index-pack failed

A: 编辑/etc/hosts文件 在文件末尾增加

74.125.31.82 www.googlesource.com

74.125.31.82 android.googlesource.com

203.208.46.172 cache.pack.google.com

59.24.3.173 cache.pack.google.com

添加完这些源后(好像这样表述是不对),重新回到命令行输入 repo sync

当有一天你看到命令行出现如下所示的字样时,表示你已经下载完android4.4的所有代码了,你应该兴奋了,我终于下载完了。

避免多次重复输入repo sync,写一个脚本,执行脚本就ok了。脚本很简单,这里也给出脚本的源码。

#! /bin/bash

echo "=====start repo sync======"

/home/august/android4.4/repo sync

while [ $? = 1 ]; do

echo “======sync failed, re-sync again======”

sleep 3

/home/august/android4.4/repo sync

done

到这里下载源码的过程就结束了,但是这个下载的工程确实很漫长,需要你有足够的耐心。下载源码必须要确保你的磁盘够大,这个主要是针对一些已经安装好虚拟机的读者,因为你没有按照我的教程说的步骤操作,可能会出现下载的过程中硬盘不够用。下载中由于.repo目录很大,需要的空间在25G左右才能顺利的下载完成android4.4.

编译android4.4源码

源码下载完后,还有个比较重要的环节没有完成,当然是Android的编译了。可能由于版本的原因,每个版本的编译还略有点不一样。比如以前我编译4.2的时候需要gcc和g++的版本都要比ubuntu12.04带的要低,所以要进行一次降级处理,但是编译4.4的代码不需要降级,编译版本可能还是有点不一样吧,但是大体还是相同的。下面就进入编译的环节以及出现的错误解决方案。

编译比下载时需要输入的命令还更少,但是编译出现的错误却比下载出现的错误要更多,且耗时也较长,这个我记录下我的编译时间(CPU采用4核8线程)

17:35 2014/2/22 start build

19:16 2014/2/22 end build

编译android的步骤如下:

1.     初始化编译环境

$ source build/envsetup.sh

2.     选择需要编译的版本类型

$ lunch full-eng

3.     编译源码

$ make –jN

PS:N表示的是你创建虚拟机时cpu核心数,比如我的上图虚拟机的核心数为8,所以命令为 $ make –j8。即采用8核来编译源码。

编译就这么简单,就这3步骤,遇到的问题也会很多。下面将是遇到的问题按照先后顺序解答,读者也按照这个顺序,因为这个顺序是编译能通过的。

1.     Executing the followingcommands would install ia32-libs multiarch package.

Answer:

sudo apt-get update

sudo apt-get installia32-libs-multiarch:i386

PS: 此过程很慢,ubuntu下网速不好,下载耗时接近2个小时,耐心等待。

2.     /bin/bash: flex: command notfound

out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp:In function ‘int yyparse()’:

out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp:1827:warning: deprecated conversion from string constant to ‘char*’

out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp:1970:warning: deprecated conversion from string constant to ‘char*’

Lex: aidl <=frameworks/base/tools/aidl/aidl_language_l.l

/bin/bash: flex: command not found

make: ***[out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_l.cpp]Error 127

Answer:

sudo apt-get install flex

PS:此过程大概3分钟

3.     /bin/bash: xmllint: command notfound

Answer:

sudo apt-get  install libxml2-utils

PS:此过程大概3分钟

4.     gcc: error trying to exec'cc1plus': execvp: No such file or directory

Answer:

sudo apt-get install g++

PS:此过程5分钟

5.     sh: gperf: not found

target Generated: libwebcore <=external/webkit/Source/JavaScriptCore/create_regex_tables

Generating CSSPropertyNames.h <=CSSPropertyNames.in

sh: gperf: not found

calling gperf failed: 32512 at./makeprop.pl line 140.

make: ***[out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/css/CSSPropertyNames.h]Error 25

make: *** Deleting file`out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/css/CSSPropertyNames.h'

Answer:

sudo apt-get install gperf

PS:此过程不到1分钟

6.     /bin/bash: bison: command notfound

Yacc: aidl <=frameworks/base/tools/aidl/aidl_language_y.y

bison -d  -oout/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cppframeworks/base/tools/aidl/aidl_language_y.y

/bin/bash: bison: command not found

make: ***[out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp]Error 127

Answer:

sudo apt-get install bison

PS:此过程很快1分钟内

解决了上面的所有的问题,基本能顺利的一次通过android4.4源码的编译。这时候你需要等待的时间大概2个小时左右。

编译成功

编译成功之后,会在out/target/product/generic下面看到system.img, ramdisk.img, userdata.img

如果在该目录下没有看到上面的3个img文件,说明编译没有成功。需要重新检查编译出现的问题。

运行模拟器

$ emulator

源码编译成功后,生成的system.img就是可以刷机用的system。这里我们采用命令来启动模拟器,看看Android4.4的庐山真面目。

运行命令后可能会出现一个ERROR:

Q:No command'emulator' found, did you mean:Command 'qemulator' from package 'qemulator'(universe) emulator: command not found

A:重新运行以下命令:

source build/envsetup.sh

lunch full-eng

emulator

运行上面的命令后能顺利的启动模拟器,下面是启动模拟器的截图:

至此,整个Android源码,下载和编译都完成了,你可以自由定制修改android代码,实现自己的私人定制Android ROM,同时你也查看源代码,和Google大神近距离的接触,体会和感受Google大神是怎样书写高质量的代码。

更详细的文档图文并茂解析下载和编译的全过程,请点击下载该文档:http://download.csdn.net/detail/yxchen0811/6995527

本文为原创,转载请注明出处:http://blog.csdn.net/helloaugust11/article/details/20568671

Ubuntu12.04下载编译android4.4源码相关推荐

  1. android 4.4 源码编译,ubuntu12.04(64bit)编译android4.4源码、sdk及kernel

    最近闲来无事,就想编译一下android源码折腾折腾.过程还算顺利,编译源码用了近3小时,编译sdk用了近30分钟.关于为什么要编译4.4的源码,而不编译5.0.6.0的源码,一是正好笔记本中有下载好 ...

  2. 在Ubuntu Server14.04上编译Android6.0源码

    此前编译过Android4.4的源码,但是现在Android都到了7.0的版本,不禁让我感叹Google的步伐真心难跟上,趁这周周末时间比较充裕,于是在过去的24小时里,毅然花了9个小时编译了一把An ...

  3. ubuntu18.04下编译mysql5.7源码

    1.安装ncurses,bison sudo apt install libncurses5-dev sudo apt install bison 2.下载openssl编译 git clone ht ...

  4. [2013.7.5新鲜出炉] Ubuntu12.04下载Android4.0.1源码全过程----------------折腾两天,终于下好,附若干问题解决

    杂家算后知后觉了,学校里一直在做应用层开发,考虑到日后就业问题,这次决定研究源码和驱动,并进行编译.没想到就下载源码这一步折腾了我整整两天,期间遇到很多问题,哎,记录于此,希望日后再下源码的人不要再走 ...

  5. 2013 7 5新鲜出炉 Ubuntu12 04下载Android4 0 1源码全过程---------------

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 杂家算后 ...

  6. android源码编译烧鸡,android4.0源码下载 编译 系统体验~图解

    近来着眼于ANDROID4.0的关注与研究,第一时间把ANDROID4.0源码下 下来了,只是时间问题,所以没能第一时间把过程记录下来,今天算是富裕点时间就给写下来,希望能给灼热于ANDROID继续平 ...

  7. Ubuntu 16.04下载编译Android11源码

    Ubuntu 16.04下载编译Android11源码 Ubuntu 16.04下载编译Android11源码 1. 硬件要求 2. 设置Linux构建环境 1. 安装所需的软件包 2. 安装Open ...

  8. Ubuntu18.04 编译Android 10源码 并烧录源码到pixel3的避坑指南

    Ubuntu18.04 编译Android 10源码 并烧录源码到pixel3的避坑指南 实验环境 下载Android源码树 在pixel3上安装手机驱动版本 编译Android源码 Android ...

  9. 从谷歌官网下载android 6.0源码、编译并刷入nexus 6p手机

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/fuchaosz/article/details/52473660 1 前言 经过一周的奋战,终于从谷 ...

最新文章

  1. Xamarin XAML语言教程Progress属性设置进度条进度
  2. Py之pytest-shutil:Python库之pytest-shutil简介、安装、使用方法之详细攻略
  3. 网络编程2之Socket简介和java.net包
  4. 日历控件源码开放--适用于ASP.NET 1.1
  5. ios 自动缩小字体_小字体紫筑B丸85%中粗体文件+deb双版本
  6. Maven学习-使用Nexus搭建Maven私服
  7. 深入探究Spark -- Cluster Manger部署(最常用为YARN实现Task Scheduler)
  8. axios请求报Uncaught (in promise) Error: Request failed with status code 404
  9. Bootstrap 3: accordion menu 手风琴效果
  10. 湖北文理学院数学与计算机科学学院,数学与计算机科学学院计算机协会十一月总结会议...
  11. 类里面没有参缺省构造函数 的带来的问题
  12. 微服务学习之OpenFeign【Hoxton.SR1版】
  13. 屏蔽网站广告插件:广告终结者
  14. Matlab Coder杂记
  15. 微信小程序一些常用标签与html的对应关系
  16. 类的定义,成员函数和内置成员函数
  17. 有效的预防电脑辐射的方法
  18. 启动kibana报错:Elasticsearch cluster did not respond with license information
  19. 多径效应(时间色散、多普勒效应)及其他描述多径传播影响的参数(电平通过率、平均衰落时间)
  20. 音频设备的接线图了解

热门文章

  1. 视听语言-2镜头系列
  2. 成都年末最具干货的技术沙龙,小游戏小程序一网打尽!
  3. 在线作图|小基因组——叶绿体基因组圈图
  4. 资治通鉴直解 (张居正)内容摘要
  5. Git 的基本操作于配置 -码之狼
  6. mysql 命令行 外键_MySQL基本命令行MySql外键设置详解
  7. Cef语言(Locales)本地化问题
  8. 管理知识和解决信息爆炸问题的4种方法
  9. Python自动化办公word、ppt转pdf
  10. 可可英语奇文老师 全方位搞定英语词汇听说读写,无压力听懂电台看懂原著!奇文(免费下载)