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. 《Entity Framework 6 Recipes》中文翻译系列 (31) ------ 第六章 继承与建模高级应用之自引用关联

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 6-4  使用TPH建模自引用关系 问题 你有一张自引用的表,它代表数据库上不同类型 ...

  2. Qt5中的信号槽

    Qt4中的信号槽 Qt4中的信号槽是通过SIGNAL,SLOT两个宏,将参数转换成字符串.Qt编译前,会从源码的头文件中提取由signal和slot声明的信号和槽的函数, 将其组成一张信号和槽对应的字 ...

  3. Qt And MFC UI Layout

    界面布局 起初,计算机的交互是通过输入的代码进行的, 慢慢的有了图形之后, 就开始了图形界面的交互. 目前来说还有语音交互, 视频交互等多媒体的交互. 不管哪一种交互, 最终在计算机的角度都是信号的输 ...

  4. struts tags

    HTTP ERROR 500 Problem accessing /showognl.jsp. Reason: Server Error Caused by: org.apache.jasper.Ja ...

  5. 2013 duilib入门简明教程 -- 界面布局(9)

        上一个教程实现的标题栏代码中,并没有看到处理自适应窗口大小的代码,但是窗口大小变化后,按钮的位置会跟着变化,这是因为我们将按钮放到了HorizontalLayout.VerticalLayou ...

  6. 考勤系统代码分析——主页布局easyui框架

    考勤系统主页的布局用的是easyui的Layout控件 Layout:布局容器有5个区域:北.南.东.西和中间.中间区域面板是必须的,边缘的面板都是可选的.每个边缘区域面板都可以通过拖拽其边框改变大小 ...

  7. SSISDB5:Parameter

    Parameter 是Package 提供给外界的接口,通过传递不同的Parameter value,能够动态控制 Package 执行不同的Task或container,产生不同的结果. 一,Par ...

  8. [ASP.NET] 如果将缓存“滑动过期时间”设置为1秒会怎样?

    今天编写了一个采用ASP.NET Caching的组件,在为它编写Unit Test的过程中发现了一个有趣的问题,接下来我通过一个简单的实例说明这个问题.我们在一个控制台应用中编写了如下一段程序,这个 ...

  9. 实用的SQL语句

    行列互转 ) select * from test2 --列转行 select id,name,quarter,profile from test2 unpivot ( profile for qua ...

  10. php中调用WebService接口

    一.背景 调用第三方短信提供商的WebService接口. 二.介绍 1.WebService三要素: SOAP(Simple Object Access Protocol) 用来描述传递信息的格式 ...