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+~/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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257790.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第三方登录接入-qq,weibo-java

开发之前 需求:网站接入qq,sina微博登录,本文最后付效果图: 说明:大部分网站本身是需要用户概念的,很多操作依附于用户,而qq或微博作为一种登录方式指向用户而已,我参考了一下其他网站的做法&am…

python替换img的路径为新的路径_以“五智”为核心 南宁电信打造5G时代数字家庭新路径...

来源:通信信息报本报讯(特约记者 许辉坚)近日,中国电信广西南宁分公司在协助广西自治区通信管理局主办的“电信用户委员会体验活动”中,以发挥用户委员会的平台和纽带作用,促进持续改善电信服务质量为主题,以“五智”能…

0118——RTLabel和正则表达式

RTLabel和RegexKitLite都要导入第三方库 使用Regexkitlite库进行正则表达式的解析 1.库是使用MRR,如果在ARC工程里面使用这个类,必须在project->build phases->compile resources里面将regexKitLite.m的编译指令设为:-fno-objc-arc 2.需…

热带雨林绘画软件测试,儿童画教程|色彩练习与思维创想——好热闹的热带雨林!...

课程类型综合创意绘画课程参考课时90分钟工具材料勾线笔、水彩笔、卡纸课程构思小朋友们知道吗?热带雨林是地球上抵抗力和稳定性最高的生态系统,常年气候非常的炎热,雨量充沛,没有明显的季节差异,生物群落演替速度极快…

对于一个IE8兼容性问题的反思

近期做了一个需求,功能非常easy,把用户的优惠券数量读取出来,然后显示到“用户中心”上。开发完毕后。别的浏览器正常。可是到IE8上就不行了。并且,按下F12之后,就又能够载入出来了。首先,找了前端人员&…

Grunt + Bower—前端构建利器

目前比较流行的WEB开发的趋势是前后端分离。前端采用重量级的Javascript框架,比如Angular,Ember等,后端采用restful API的Web Service服务,通过JSON格式进行数据交互。 对于后端服务语言来说,不论是Ruby的rake&#xf…

apache服务器性能诊断,Apache服务器性能评测

。51Testing软件测试网m#z"fX}0H:P{(bHP~bd7h5z7I(Sn3H01.比较现有T2000 Apache2.2.8经过优化前后的效果51Testing软件测试网 R4VsR^4MO!G7fWebserver IP:10.56.234.3151Testing软件测试网e{]Q/\(p|优化前httpd.conf:da*Z"[d0----------------…

Linux命令行编辑快捷键

2019独角兽企业重金招聘Python工程师标准>>> ctrl ? 撤消前一次输入 ctrl c 另起一行 ctrl r 输入单词搜索历史命令 ctrl u 删除光标前面所有字符相当于VIM里d shift^ ctrl k 删除光标后面所有字符相当于VIM里d shift$ 删除 ctrl d 删除光标所在位置上的字符…

kali装电脑_Kali Linux可以安装到平板电脑吗?

在用Windows的电脑上克隆Kali插入U盘.运行Win32 Disk Imager.选择Kali Linux ISO文件作为被克隆的文件,然后核实要克隆的U盘是否正确.克隆完成后,从Windows机器安全弹出U盘.现在你可以用U盘启动Kali Linux了.在用Linux的电脑上克隆Kali在Linux环境下制作可启动的Kali Linux U盘…

思科查看服务器启动配置文件,启动配置检查UCS

本文解释如何使用UCS将启动功能和命令迅速执行配置状态检查。UCS将启动功能允许用户迅速执行一粗略检查为了保证刀片适当地配置允许BIOS继续。意志启动配置检查是验证CPU和DIMM配置。此检查迅速帮助用户调试启动问题。思科UCS在意志启动配置检查提供几个工具帮助。这些工具包括…

lnmp下配置虚拟主机

一:首先熟悉几个命令 which php ---> which是通过 PATH环境变量到该路径内查找可执行文件,所以基本的功能是寻找可执行文件 whereis php ----> 将和php文件相关的文件都查找出来 service php-fpm/nginx/mysqld restart 重启服务 二&…

AssetBundle.CreateFromFile的有趣事情

有趣的事情发生了: [MenuItem("AssetBundles/Build AssetBundles")] staticvoid BuildABs () { AssetBundleBuild[] buildMap new AssetBundleBuild[1]; buildMap [0].assetBundleName "test.assetbundle";//打包的资源包名称 string[] resou…

[cocos2dx笔记010]用于UI的事件管理器

cocos2dx有一个编辑器:cocostudio。眼下来说,已经是比較好用了。仅仅要载入导出的资源。就能够用上了。省去手动搭建面的麻烦。可是。非常多须要事件的地方,操作比較麻烦,所以这里提供一个事件管理器来集中和简化管理事件。对于C事…

异形3×3魔方还原教程_【理论篇】三阶魔方4.33千亿亿种变化是怎么计算出来的?...

本篇文章主要介绍三阶魔方总状态数是如何计算出来的,并介绍了两种算法,尽量保证语言通俗易懂,不涉及高深的理论知识(当然我也不懂:P)一、4.33千亿亿到底有多大?我们都知道三阶魔方的总变化状态数…

Jquery 对话框确认

$("#aa").click(function(){if(confirm("是否继续")){$(#aa).fadeOut(500);} }) 转载于:https://www.cnblogs.com/chen-lhx/p/5149469.html

datazen Active Directory AD 配置

今天苦心经营的datazen 链接AD,文档已经无法吐槽了简单的几句话,根本不够用。 先说一下链接AD 的好处吧, 1 首先免去设置密码的麻烦,因为直接用AD账号的密码。 2 更安全,因为客户可不想自己的自己的系统,开…

Android CardView卡片布局 标签: 控件

CardView介绍 CardView是Android 5.0系统引入的控件,相当于FragmentLayout布局控件然后添加圆角及阴影的效果;CardView被包装为一种布局,并且经常在ListView和RecyclerView的Item布局中,作为一种容器使用。CardView应该被使用在显…

橱柜高度与身高对照表_下一套房子装修,橱柜就照这样打,布局尺寸这么详细,不信不好用...

闲在家的时候,动手给自己做一顿色香味俱全的美食,是一个享受的过程。享受的,不仅仅是味蕾的体验,择菜、洗菜、切菜、下锅...每一个环节都是。不过,这取决于你是否有一个好厨房;而厨房最最最重要的家具&…

DOSbox汇编集成环境下的具体设置

altenter能够全屏幕,假设认为游戏执行速度不合适,能够改动 cycles3000 。将3000适当调整大小。 3。执行 DOSBox,会打开两个 DOS 窗体。我们仅仅需在例如以下窗体中键入 mount c h:\pal 此命令的作用为将 h:\pal 挂载为 C 盘,h:\p…

.NET手记-JS获取Url参数

最近为App做活动专区,其中很多活动都是采用html 5页面来制作的。一方面体量较小,制作快速,更新维护容易;另一方面,嵌入App后适配效果也不会很差。 这里我们采用混编形式来从native app传参给web页面,我们采…