Ubuntu12.04下载编译android4.4源码
本文为原创,转载请注明出处: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源码相关推荐
- android 4.4 源码编译,ubuntu12.04(64bit)编译android4.4源码、sdk及kernel
最近闲来无事,就想编译一下android源码折腾折腾.过程还算顺利,编译源码用了近3小时,编译sdk用了近30分钟.关于为什么要编译4.4的源码,而不编译5.0.6.0的源码,一是正好笔记本中有下载好 ...
- 在Ubuntu Server14.04上编译Android6.0源码
此前编译过Android4.4的源码,但是现在Android都到了7.0的版本,不禁让我感叹Google的步伐真心难跟上,趁这周周末时间比较充裕,于是在过去的24小时里,毅然花了9个小时编译了一把An ...
- ubuntu18.04下编译mysql5.7源码
1.安装ncurses,bison sudo apt install libncurses5-dev sudo apt install bison 2.下载openssl编译 git clone ht ...
- [2013.7.5新鲜出炉] Ubuntu12.04下载Android4.0.1源码全过程----------------折腾两天,终于下好,附若干问题解决
杂家算后知后觉了,学校里一直在做应用层开发,考虑到日后就业问题,这次决定研究源码和驱动,并进行编译.没想到就下载源码这一步折腾了我整整两天,期间遇到很多问题,哎,记录于此,希望日后再下源码的人不要再走 ...
- 2013 7 5新鲜出炉 Ubuntu12 04下载Android4 0 1源码全过程---------------
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 杂家算后 ...
- android源码编译烧鸡,android4.0源码下载 编译 系统体验~图解
近来着眼于ANDROID4.0的关注与研究,第一时间把ANDROID4.0源码下 下来了,只是时间问题,所以没能第一时间把过程记录下来,今天算是富裕点时间就给写下来,希望能给灼热于ANDROID继续平 ...
- Ubuntu 16.04下载编译Android11源码
Ubuntu 16.04下载编译Android11源码 Ubuntu 16.04下载编译Android11源码 1. 硬件要求 2. 设置Linux构建环境 1. 安装所需的软件包 2. 安装Open ...
- Ubuntu18.04 编译Android 10源码 并烧录源码到pixel3的避坑指南
Ubuntu18.04 编译Android 10源码 并烧录源码到pixel3的避坑指南 实验环境 下载Android源码树 在pixel3上安装手机驱动版本 编译Android源码 Android ...
- 从谷歌官网下载android 6.0源码、编译并刷入nexus 6p手机
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/fuchaosz/article/details/52473660 1 前言 经过一周的奋战,终于从谷 ...
最新文章
- Xamarin XAML语言教程Progress属性设置进度条进度
- Py之pytest-shutil:Python库之pytest-shutil简介、安装、使用方法之详细攻略
- 网络编程2之Socket简介和java.net包
- 日历控件源码开放--适用于ASP.NET 1.1
- ios 自动缩小字体_小字体紫筑B丸85%中粗体文件+deb双版本
- Maven学习-使用Nexus搭建Maven私服
- 深入探究Spark -- Cluster Manger部署(最常用为YARN实现Task Scheduler)
- axios请求报Uncaught (in promise) Error: Request failed with status code 404
- Bootstrap 3: accordion menu 手风琴效果
- 湖北文理学院数学与计算机科学学院,数学与计算机科学学院计算机协会十一月总结会议...
- 类里面没有参缺省构造函数 的带来的问题
- 微服务学习之OpenFeign【Hoxton.SR1版】
- 屏蔽网站广告插件:广告终结者
- Matlab Coder杂记
- 微信小程序一些常用标签与html的对应关系
- 类的定义,成员函数和内置成员函数
- 有效的预防电脑辐射的方法
- 启动kibana报错:Elasticsearch cluster did not respond with license information
- 多径效应(时间色散、多普勒效应)及其他描述多径传播影响的参数(电平通过率、平均衰落时间)
- 音频设备的接线图了解