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 . ...
随机推荐
- P2871 [USACO07DEC]手链Charm Bracelet
题目描述 Bessie has gone to the mall's jewelry store and spies a charm bracelet. Of course, she'd like t ...
- [转]深入理解/proc目录
Linux系统上的/proc目录是一种文件系统,即proc文件系统.与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过 ...
- mysql中返回当前时间的函数或者常量
引用:http://blog.sina.com.cn/s/blog_6d39dc6f0100m7eo.html 1.1 获得当前日期+时间(date + time)函数:now() 除了 now() ...
- Gradle的属性Property设置与调用
Gradle在默认情况下已经为Project定义了很多Property: project:Project本身 name:Project的名字 path:Project的绝对路径 description ...
- js indexOf 列表筛选
先来一堆效果图: 代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- MySQL 执行计划中Extra的浅薄理解
1.using where: Extra中出现“Using where”,通常来说,意味着全表扫描或者在查找使用索引的情况下,但是还有查询条件不在索引字段当中. 如果需要回表也是用这个. 2.usin ...
- mysql_数据查询_单表查询
1.单表查询: 1.1选中表中若干列: SELECT子句的<目标列表达式>可以是表中属性列,也可以是表达式,还可以是字符常量. SELECT Sname,'year of birth:', ...
- mysqlconnector将EXCEL表数据导入数据库
测试excel和脚本放在同一个目录 测试excel和脚本放在同一个目录 #!/usr/bin/env python #coding=utf-8 import xlrd import mysql.con ...
- Requirejs常用配置和应用
requirejs.require方法冲突 如果加载了多个requirejs脚本,每个requirejs会判断是否浏览器已经实现了require和define方法.如果浏览器已经自带require和d ...
- Lua操作符的优先级
lua 操作符的优先级 lua操作符的优先级 如表所示(从高到低) 在二元操作符中,除了指数操作符 “^” 和连接操作符 “..” 是 ”右结合” 的,是所有其他操作符都是 “左结合” 的.因此如 ...