Android源码编译全过程记录(基于最新安卓5.1.0)【转】
本文转载自:http://blog.csdn.net/drg1612/article/details/44802533
我的编译条件:
1 Ubuntu Kylin 14.04 长期支持版 下载地址 : http://www.ubuntu-china.cn/download
2 我的电脑是联想G470 i3处理器 内存4G,120g固体硬盘,配置不高,但是足够编译了(编译花费了5小时)
3 Ubuntu我的分区状况:/home 100g(至少80g),swap分区8g(至少4g),空间请务必满足最低条件,不然无法编译成功
4 一个速度快且稳定的v-p`n,我用的是green,线路选择的是日本高速线路,差不多有10m带宽
前后我总共花费了3 天的时间,一直在看网上的教程,期间还有下载和编译需要花费大量的时间,这个和我电脑配置低有很大的关系,最后结果还不错,成功运行了虚拟机。
开始具体过程:
1 首先检查是否满足编译的条件,缺一不可,如果你的swap分区(输入 free -m查看)如果没有4g,那么按照教程增加
具体教程见:http://blog.csdn.NET/mznewfacer/article/details/7334592
修改swap无需重启电脑
还有v-p~n的事情,我是花钱买了一个月,18块,不是广告,毕竟花钱稳定点,同步安卓源码库必须要挂。
2 然后按照官网教程一步一步来
具体见http://source.Android.com/source/initializing.html
我总结一个简化步骤:
(1)配置ubuntu的编译环境(仅限于安卓5.1.0,其余版本请到官网看各自的编译环境):
sudo apt-get update
sudo apt-get install openjdk-7-jdk
sudo apt-get install bison g++-multilib Git gperf libxml2-utils make zlib1g-dev:i386 zip
(2)同步5.1.0源码
2.1 安装repo(用于同步库的软件,基于git)
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
2.2 开始下载源码(需要很长时间(14g左右),我当时记得挂了一晚上,下载好了,具体时间要看各自的v-p~n速度)
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
repo init -u https://android.googlesource.com/platform/manifest -b android-5.1.0_r3
repo sync
同步完成之后,目录是这样的:
(3)开始编译
source build/envsetup.sh (编译环境参数)
lunch aosp_arm-eng (目标设备)
make -j4 (以4个线程开始编译)
如果顺利的话,我的机器花费了5个小时编译(out目录占29.1g),第一次编译花费时间很长,以后增量更新速度就快了,编译时间具体看个人机器了,编译完成之后,终端会显示:
然后输入emulator运行虚拟机:
祝各位编译顺利!
3 我遇到的问题
3.1问题1:过时的API
注: 某些输入文件使用或覆盖了已过时的 API。
注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
如果此问题造成编译停止,请看有没有执行过:sudo apt-get install bison g++-multilib git gperf libxml2-utils make zlib1g-dev:i386 zip
如果没有造成编译停止,请忽略
3.2问题2:内存溢出
make: *** [out/target/product/generic/obj/SHARED_LIBRARIES/libwebviewchromium_intermediates/LINKED/libwebviewchromium.so] 错误 1
make: *** 正在等待未完成的任务....
swap分区过小了,试试改成6g。
最后附上对我此次编译帮助最大的文档,感谢他们:
1 一些编译出错的解决方案
http://www.cnblogs.com/tao560532/p/3302444.html
2 目录结构(学习资料)
http://www.it165.net/pro/html/201403/10393.html
3 深入理解Android编译系统(学习资料)
http://blog.csdn.Net/huangyabin001/article/details/36383031
Android源码编译全过程记录(基于最新安卓5.1.0)【转】的更多相关文章
- 有关android源码编译的几个问题
项目用到编译环境,与源码有些差异不能照搬,关键是连源码都没编译过,下面基本上是行网上照的各种自学成才的分享,病急乱投医了,都记在下面作为参照吧. 1.验证是否编译正确,在终端执行 emulator & ...
- Android源码编译jar包BUILD_JAVA_LIBRARY 与BUILD_STATIC_JAVA_LIBRARY的区别(二)
上文简单介绍了BUILD_JAVA_LIBRARY 与BUILD_STATIC_JAVA_LIBRARY编译出来jar包的区别, 那么你如果拿到了一个内容是dex格式的jar包,而你又偏偏需要这个ja ...
- 【Android开发】构建Android源码编译环境
原文:http://android.eoe.cn/topic/android_sdk 构建Android源码编译环境 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...
- mysql5.7.10 源码编译安装记录 (centos6.4)【转】
一.准备工作 1.1 卸载系统自带mysql 查看系统是否自带MySQL, 如果有就卸载了, 卸载方式有两种yum, rpm, 这里通过yum卸载 rpm -qa | grep mysql //查看系 ...
- [Android Pro] Android源码编译之Nexus5真机编译
reference to : http://blog.csdn.net/liu1075538266/article/details/51272398 1. 前言 在Android安全的研究工作中, ...
- Android源码编译的全过程记录
写本篇文章主要参考了官方文档和网上的一些资料,但是对于Android最新的代码来说,网上资料有些已经过时.本文中步骤已经作者实验,大家可以亲自执行试试.由于没有使用Eclipse的习惯,所以没有做Ec ...
- android 源码编译及其运行模拟器相关问题记录
最近一直在看android源码相关的文档,包括编译源码,还有framework层的代码,本人很懒,一直没有写博客,今天想自己在编译一下源码,并且运行在模拟器中. 源码的版本不同,需要的jdk可能也有所 ...
- android源码编译1
一.环境说明: 1.liunx系统:Ubuntu12.04 2.jdk:sun-java6-jdk 3.g++4.5 gcc4.5 二.android源码的目录结构 |-- Makefile |-- ...
- android.mk android源码编译
http://www.cnblogs.com/chenbin7/archive/2013/01/05/2846863.html Android.mk简单分析 2013-01-05 22:51 by . ...
随机推荐
- linux php全能环境一键安装,小白福利!
phpStudy Linux版&Win版同步上线 支持Apache/Nginx/Tengine/Lighttpd/IIS7/8/6 phpStudy for Linux 支持Apache/Ng ...
- Java&Xml教程(四)使用DOM方式生成XML文件
在前面的教程中,我们学习了使用DOM解析方式读取和修改XML文件内容,今天我们来学习如何使用DOM解析机制生成XML文件. 下面是我们对要生成的XML文件的具体要求: 1.根节点元素为"Em ...
- Angular——tab切换案例
基本介绍 angular框架下的tab切换,相比较于之前的纯js写的代码,有一个很大的特点就是以数据为驱动,基本上不用搜索dom元素就可以实现效果 基本使用 (1)导航部分使用的是的状态使用的是ng- ...
- python发送文本邮件
#!/usr/bin/env python #coding=utf-8 #Author: Ca0Gu0 import time import smtplib from email.mime.text ...
- Python 之列表操作
# len(list)列表元素个数 # max(list)返回列表元素最大值 # min(list)返回列表元素最小值 # list(seq)将元组转换为列表 # list.append(obj)在列 ...
- PHP 之CURL请求封装GET、POST、PUT、DELETE
/** * @Description: curl请求 * @Author: Yang * @param $url * @param null $data * @param string $method ...
- linux强制踢出已登录的用户及本地用户
方法一: pkill -kill -t pts/0 方法二: fuser -k /dev/pts/0 你也可以给他发送关闭信息然后关闭 echo "你被管理员踢出了" > / ...
- 前端精选文摘:css之GFC 神奇背后的原理(整理)
CSS3 Grid Layout Web页面的布局,我们常见的主要有“浮动布局(float)”.“定位布局(position)”.“行内块布局(inline-block)”.“CSS3的多栏布局(Co ...
- 所有对象的父类(java.lang.Object)
一.介绍 Object类是类层次结构的根源,每一个类都存在一个父类为Object类.所有的对象,包括数组,都实现了 Object 类的方法. 二.对象初始化 这里使用了静态代码块进行Object类的初 ...
- JavaScript day4(逻辑运算符)
逻辑运算符 逻辑运算符用于测定变量或值之间的逻辑 逻辑与运算符:&&.同时满足(and). 通过if语句的嵌套来实现: if (num > 5) { if (num < 1 ...