编译android 4.4.2
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的更多相关文章
- Visual Studio Xamarin编译Android项目出错的解决办法
安装完Xamarin后,编译Android项目时,你会发现好长时间进度都不动,当你取消编译后,会发现其实是出错了,就是因在Android项目在第一次编译时要去google网站上下一个andorid s ...
- 在Mac mini上编译Android源码
参考文章 1.Android 6.0 源代码编译实践 2.编译Android源码致命错误解决方案 实践过程 1.Mac下安装Ubuntu双系统 (1)Ubuntu版本:Ubuntu 15.10 注:实 ...
- 深入理解gradle编译-Android基础篇
深入理解gradle编译-Android基础篇 导读 Gradle基于Groovy的特定领域语言(DSL)编写的一种自动化建构工具,Groovy作为一种高级语言由Java代码实现,本文将对Gradle ...
- [原]Ubuntu 14.04编译Android Kernel
如何编译android kernel参考官方文档:https://source.android.com/source/building-kernels.html 在Ubuntu 14.04上编译a ...
- [原]编译Android源码过程中遇到的问题
编译Android源码的过程参考Android官网介绍: 1.下载Android源码的步骤:https://source.android.com/source/downloading.html 2.编 ...
- 转:Android开发实践:用脚本编译Android工程
转自: http://ticktick.blog.51cto.com/823160/1365947 一般情况下,我们都是使用Eclipse+ADT插件或者Android studio软件来编译Andr ...
- 深入浅出 - Android系统移植与平台开发(五)- 编译Android源码(转)
2.3编译Android源码 Android源码体积非常庞大,由Dalvik虚拟机.Linux内核.编译系统.框架代码.Android定制C库.测试套件.系统应用程序等部分组成,在编译Android源 ...
- [转]编译Android源代码常见错误解决办法
1. 编译时出现/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libz.so when ...
- 一次编译Android源码实验
注意,本文只供参考,是老文章 1.必要的软件环境 sudo apt-get install build-essential sudo apt-get install make sudo apt-get ...
随机推荐
- Bower是什么?
一.简介 Bower是一个客户端技术的软件包管理器,它可用于搜索.安装和卸载如JavaScript.HTML.CSS之类的网络资源.其它一些建立在Bower基础之上的开发工具,如YeoMan和Grun ...
- JavaWeb配置外部应用的两种方式
原来我们的项目放到webapps下,现在放到外面,也希望tomcat可以找到它!把应用放到tomcat之外,这就是外部应用了.应用已经不在tomcat中了,这时我们需要在tomcat中配置外部应用的位 ...
- 仿h5拖拽
在h5中有个拖拽的声明式命令,就如html属性一样,简单强大. 而在网页上拖拽的功能还是需求很大的,所以对这方面应该去仔细了解一下. 所以仿一一下它的实现.只是仿了它的复制一份到目标容器的功能.它还有 ...
- MongoDB 搭建分片集群
在MongoDB(版本 3.2.9)中,分片是指将collection分散存储到不同的Server中,每个Server只存储collection的一部分,服务分片的所有服务器组成分片集群.分片集群(S ...
- SSIS 数据源组件的External Metadata和Advanced Property
1,SSIS的组件属性ValidateExternalMetadata 如果一个Destination组件使用的是上游创建的staging table,那么必须设置 ValidateExternalM ...
- WPF datagrid 加入图片
<DataGridTemplateColumn Header="图像" Width="SizeToCells"> <DataGridTempl ...
- Android播放gif动画,增加屏幕掉金币效果
前言:播放gif的版本有很多,我这边使用Android自带的Movie类播放gif动画,也是在别人的基础上进行修改.有同样需求的朋友可以参考我的demo. 1.效果图如下: 2.部分主要代码 Main ...
- MySQL学习笔记十二:数据备份与恢复
数据备份 1.物理备份与逻辑备份 物理备份 物理备份就是将数据库的数据文件,配置文件,日志文件等复制一份到其他路径上,这种备份速度一般较快,因为只有I/O操作.进行物理备份时,一般都需要关闭mysql ...
- MyCAT ER分片的验证
在这里,构造了两张表,熟悉Oracle的童鞋都知道,dept(部门表)和emp(员工表),其中dept中的deptno是emp表中dept_no的外键. 两表的建表语句如下: create table ...
- swift 新特性
switch支持任意类型的数据以及各种比较操作——不仅仅是整数以及测试相等. 运行switch中匹配到的子句之后,程序会退出switch语句,并不会继续向下运行,所以不需要在每个子句结尾写break. ...