编译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 ...
随机推荐
- 记一个简单的保护if 的sh脚本
真是坑爹,就下面的sh,竟然也写了很久! if [ `pwd` != '/usr/xx/bin/tomcat' ] then echo "rstall is not allowed in c ...
- 微信小程序DEMO初体验
小程序虽然被炒的很热,但是绝大部分人却从未亲自体验过,在2017年的上班第一天,献上一个小程序DEMO,您可以体验! 注意:由于微信限制,只能使用扫一扫来体验下方小程序DEMO. DEMO首页截图如下 ...
- Python框架之Tornado(一)
本系列博文计划: 1.剖析基于Python的Web框架Tornado的源码 2.为Python开发一个完善的MVC框架 首先将带着大家一起来剖析基于python编写的Web框架 tornado ,本着 ...
- Laravel 5.3 auth中间件底层实现详解
1. 注册认证中间件, 在文件 app/Http/Kernel.php 内完成: protected $routeMiddleware = [ 'auth' => \Illuminate\Aut ...
- show master/slave status求根溯源
show master/slave status分别是查看主数据库以及副数据库的状态,是一种能查看主从复制运行情况的方式. 这里仅仅讨论linux下的nysql5.7.13版本的执行情况 一.show ...
- 【Win10 应用开发】OCR识别
OCR,即Optical Character Recognition,光学字符识别.以下介绍来自搜索: OCR(Optical Character Recognition,光学字符识别)是指电子设备( ...
- 前端MVVM框架设计及实现(一)
最近抽出点时间想弄个dom模块化的模板引擎,不过现在这种都是MVVM自带的,索性就想自己造轮子写一个简单的MVVM框架了 借鉴的自然还是从正美的avalon开始了,我记得还是去年6月写过一个系列的av ...
- jQuery 2.0.3 源码分析 事件体系结构
那么jQuery事件处理机制能帮我们处理那些问题? 毋容置疑首先要解决浏览器事件兼容问题 可以在一个事件类型上添加多个事件处理函数,可以一次添加多个事件类型的事件处理函数 提供了常用事件的便捷方法 支 ...
- WPF 浏览文件夹,获取其路径
public void GetPath(System.Windows.Controls.TextBox TB) { FolderBrowserDialog FBD = new FolderBrowse ...
- Don't let self-built concept imprison yourself
If Self-inferiority is disease, but self-confidence is hazard. Leo moon personalities can be extreme ...