1.获取Android源码

(1)下载repo

在用户目录下创建一个bin文件夹来存放repo,并把该路径设置到环境变量中

mkdir ~/bin

PATH=~/bin:$PATH

下载repo脚本

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo

设置repo可执行权限

chmod a+x ~/bin/repo

(2)初始化repo客户端

创建AndroidCode目录用来存放源码

mkdir AndroidCode

cd AndroidCode

运行repo下载源码

repo init -u https://android.googlesource.com/platform/manifest -b android-4.4_r1

repo sync

注:下载android源码对网络要求较高,如果中间出现错误,不要删除已缓存的文件,重新执行repo sync即可。如果网速不允许的话,推荐在论坛或者网盘上找资源,在windows下载后拷贝到ubuntu下即可(无需配置repo)。无论采用哪种方式,切记源码的路径一定不要含有中文。

2.搭建编译环境

(1)安装编译工具

sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386

sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib

sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386

sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev

sudo apt-get install git-core gnupg flex bison gperf build-essential

sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib

sudo apt-get install libc6-dev-i386

sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev

sudo apt-get install lib32z-dev ccache

sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4

注:安装过程中可能出现版本不匹配的问题,但是系统会给出应安装的正确版本提示,按照系统提示安装即可。如果出现不能安装的情况,可以执行 sudo apt-get update 后再进行安装,如果再安装不上,则可以放弃,影响不大。如果电脑里没有git一定要安装一下git。

(2)安装jdk

Android4.4的源码编译所使用的jdk为oracle jdk1.6。由于不能直接下载,所以可在论坛或网盘上找资源下载jdk1.6.0_45.下载后为.bin文件

首先在/usr/loacl目录下创建jvm文件夹用来存放jdk

mkdir /usr/local/jvm

然后进入到Downloads下找到刚才下载的jdk,复制到/usr/local/jvm中

cp jdk-6u45-linux-x64.bin /usr/local/jvm

然后进入到/usr/local/jvm下,给.bin文件一个可执行权限

chmod +x jdk-6u45-linux-x64.bin

执行.bin文件进行安装

./jdk-6u45-linux-x64.bin

安装成功后设置环境变量,打开/etc/profile,添加如下几行后保存

export JAVA_HOME=/usr/local/java/jdk1.6.0_45

export JRE_HOME=/usr/local/java/jdk1.6.0_45/jre

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH

修改后Log Out之后再进入,在终端输入java -version,显示java version "1.6.0_45"则为配置成功

注:编译的时候jdk一定要安装1.6的最高版本,即jdk1.6.0_45,否则编译中会报错,推荐下载地址http://download.csdn.net/detail/javahr/7291125

(3)安装make

由于ubuntu16.04自带make版本过高,无法编译。因此需要将make降至3.81或3.82版本

下载地址ftp://ftp.gnu.org/gnu/make/

下载后到Downloads下将文件拷到其他目录(home下即可),然后解压

tar -zxvf make3.8.2.tar.gz

解压后进入到make3.8.2的目录下

./configure

make

make install

执行完后在/usr/local/bin中可得到新版本的make,复制到/usr/bin中即可

注:make过程中可能会出现错误,不用理会,只要make install能够成功执行即可。

(4)编译

首先在.bashrc文件末尾追加export USE_CCACHE = 1

echo export USE_CCACHE=1 >> ~/.bashrc

然后导入编译Android源码所需的环境变量和其他参数:

source build/envsetup.sh

然后

make clean

make update-api

make

注:其中前两行不是必须的,make update-api可能会出错,但是影响不大。

最后一行make也可以用make -j4(四线程编译),电脑性能好的可以用make -j8或-j10,总之是二的倍数。我怕电脑死机只用了make,不过稍微有点慢。

如果没什么意外的话等待编译成功就好了。。。

(5)启动Android模拟器

source build/envsetup.sh

lunch sdk-eng

emulator

等待一会之后模拟器即可启动

(6)最后:

过程整理出来大概就是这样,由于上文好多命令都是我自己手敲上去的,可能有的敲错了,给大家推荐两篇参考博客

http://www.jianshu.com/p/6d97b4a10b18

http://blog.sina.com.cn/s/blog_6e65e8cc0102wm83.html

如果顺利的话整个编译过程是不会出现网上所说的各种错误的。

祝大家编译成功~

http://www.jianshu.com/p/2b2c723825a9

编译android 4.4.2的更多相关文章

  1. Visual Studio Xamarin编译Android项目出错的解决办法

    安装完Xamarin后,编译Android项目时,你会发现好长时间进度都不动,当你取消编译后,会发现其实是出错了,就是因在Android项目在第一次编译时要去google网站上下一个andorid s ...

  2. 在Mac mini上编译Android源码

    参考文章 1.Android 6.0 源代码编译实践 2.编译Android源码致命错误解决方案 实践过程 1.Mac下安装Ubuntu双系统 (1)Ubuntu版本:Ubuntu 15.10 注:实 ...

  3. 深入理解gradle编译-Android基础篇

    深入理解gradle编译-Android基础篇 导读 Gradle基于Groovy的特定领域语言(DSL)编写的一种自动化建构工具,Groovy作为一种高级语言由Java代码实现,本文将对Gradle ...

  4. [原]Ubuntu 14.04编译Android Kernel

    如何编译android kernel参考官方文档:https://source.android.com/source/building-kernels.html   在Ubuntu 14.04上编译a ...

  5. [原]编译Android源码过程中遇到的问题

    编译Android源码的过程参考Android官网介绍: 1.下载Android源码的步骤:https://source.android.com/source/downloading.html 2.编 ...

  6. 转:Android开发实践:用脚本编译Android工程

    转自: http://ticktick.blog.51cto.com/823160/1365947 一般情况下,我们都是使用Eclipse+ADT插件或者Android studio软件来编译Andr ...

  7. 深入浅出 - Android系统移植与平台开发(五)- 编译Android源码(转)

    2.3编译Android源码 Android源码体积非常庞大,由Dalvik虚拟机.Linux内核.编译系统.框架代码.Android定制C库.测试套件.系统应用程序等部分组成,在编译Android源 ...

  8. [转]编译Android源代码常见错误解决办法

    1. 编译时出现/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libz.so when ...

  9. 一次编译Android源码实验

    注意,本文只供参考,是老文章 1.必要的软件环境 sudo apt-get install build-essential sudo apt-get install make sudo apt-get ...

随机推荐

  1. Git命令汇总

    1. 工作区和版本库 说明: 工作区(Working Directory)就是创建仓库的文件夹 版本库(Repository)就是工作区的隐藏目录.git,版本库中有暂存区(stage/index)和 ...

  2. [Linux] linux下安装配置 zookeeper/redis/solr/tomcat/IK分词器 详细实例.

    今天 不知自己装的centos 出现了什么问题, 一直卡在 启动界面, 找了半天没找见原因(最后时刻还是发现原因, 只因自己手欠一怒之下将centos删除了, 而且选择的是在本地磁盘也删除. ..让我 ...

  3. 2013 duilib入门简明教程 -- 界面设计器 DuiDesigner (10)

        上一个教程讲解了怎么布局最大化.最小化.关闭按钮,但是如果手动去计算这三个按钮的位置和大小的话,非常的不直观,也很不方便.     所以这一章准备介绍duilib的UI设计器,由于这个设计器很 ...

  4. Sql Server系列:通用表表达式CTE

    1 CTE语法WITH关键字 通用表表达式(Common Table Express, CTE),将派生表定义在查询的最前面.要使用CTE开始创建一个查询,可以使用WITH关键字. CTE语法: WI ...

  5. 数据访问模式:Identity Map(标识映射)模式

    1.Identity Map模式简介 Identity Map(标识映射)模式是通过将所有已加载对象放在一个映射中确保所有对象只被加载一次,并且在引用这些对象时使用该映射来查找对象.在处理数据并发访问 ...

  6. google浏览器截图工具 Open Screenshot(代码截图)

    有的时候特别想把自己写的代码保存为图片,但是代码的内容很长,用普通的截图工具只能一次一次的拼接起来,太麻烦了.这里使用了Google的截图插件,很好用. 或者使用360极速浏览器-->保存网页也 ...

  7. android UI 仿 win 8 模块化 标题,并实现 可长按拖动交换图片位置、可点击,且伴随动画特效

    转载请声明出处,谢谢!http://www.cnblogs.com/linguanh/ 先上效果图,给大家个直观效果,后上实现代码:  ->  ->->  ok,现在简单说下我上面的 ...

  8. Hibernate之HQL添加过滤器查询的用法

    HQL查询过程中支持添加过滤器.使用步骤是这样的: 首先在要查询的实体对象的映射中使用<filter-def>标签配置过滤器,并在相对应的<class>标签中添加对应的< ...

  9. 简析GeoServer服务的内部文件组织以及GeoServer自动化服务发布工具的开发思路

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 通过GeoServer发布的服务,在GeoServer内部有 ...

  10. (1)从底层设计,探讨插件式GIS框架的实现

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 研一时,听当时的师兄推荐,买了蒋波涛的一本关于GIS插件框架的书.当时 ...