在Ubuntu-14.04.3配置并成功编译Android6_r1源码

摘要:
在Ubuntu中配置并成功编译Android6-14.04.3_R1源代码已经使用了一周。VMware 8安装Win7和CentOS-7向导,并在官方网站上下载ubuntu映像:使用以下快捷键:Ctrl+Alt+T1,安装Git和其他相关组件:sudoapt get install ygiflexongperfbuild-essentitybncurses5-dev:
在Ubuntu-14.04.3配置并成功编译Android6_r1源码

折腾了一周,终于把Android6_r1的源码编译成功。先上图,这是在ubuntu中运行的Android模拟器:

在Ubuntu-14.04.3配置并成功编译Android6_r1源码第1张

由于我是在win8中安装虚拟机VMware,然后在虚拟机中安装Ubuntu进行编译,所以遇到诸多麻烦。如果直接在linux中编译,可能会更顺利。

--------------------------------------------------------------------------------------------------------------------------

准备工作:

VMware虚拟机,安装请参考:VMware8安装配置Win7、CentOS-7向导

官网下载ubuntu镜像:ubuntu-14.04.3-desktop-amd64.iso

安装ubuntu,一并参考“VMware8安装配置Win7、CentOS-7向导”

-----------------------------------------------------------------------------

建议:ubuntu内存分配4G,预留90G虚拟硬盘(之前选择了默认的20G,在解压tgz的时候直接报空间不足),网络选择“Bridged”方式。

在Ubuntu-14.04.3配置并成功编译Android6_r1源码第2张

为了编译Android源码,下面对安装好的ubuntu作一些配置工作。

首先调出终端,用以下快捷键

Ctrl + Alt + T

1、安装Git等依赖组件

sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386 libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 dpkg-dev libsdl-dev libesd0-dev

上面红色部分是数字“1”。当然,你也可以分开执行这些安装命令。

如果没有这些依赖组件,可能会遇到类似这样的错误:

在Ubuntu-14.04.3配置并成功编译Android6_r1源码第3张

2、安装JDK

首先用以下命令搜索JDK版本

apt-cache search openjdk

在Ubuntu-14.04.3配置并成功编译Android6_r1源码第4张

执行安装

sudo apt-get install openjdk-7-jdk

查看是否安装成功

java -version

在Ubuntu-14.04.3配置并成功编译Android6_r1源码第5张

3、配置java_home

直接运行

echo $JAVA_HOME

并不能看到输出。

设置:

echo export JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64/" >> ~/.bashrc

然后重启terminal或通过使用以下命令

source ~/.bashrc

此时重新输入$JAVA_HOME,就可以看到配置好的路径了

在Ubuntu-14.04.3配置并成功编译Android6_r1源码第6张

4、安装SSH Server

这个有什么用呢?利用Xshell方便我们在windows和虚拟机中操作文件。Ubuntu缺省下是没有安装SSH Server,Client倒是为我们装好了。

不知道怎么用Xshell的,请猛戳:Xshell连接linux(图文教程)

sudo apt-get install openssh-server

重启它

sudo /etc/init.d/ssh restart

5、下载Android源码

有人在百度云盘上共享了Android6_r1的源码,省去了我们-翻-墙-(博客园居然把这两个字屏蔽了,以FQ代替,呵呵~有这么敏感么)的麻烦,请看:Android6_r1分卷源码

原作者CSDN博客地址:Android 2.3.5源代码 更新至android 6.0,可以下载,度娘网盘

6、拷贝Android源码到Ubuntu

此办法笨了点。利用Xshell其实挺快的。直接拖进来。

在Ubuntu-14.04.3配置并成功编译Android6_r1源码第7张

7、合并文件

 监测文件Hash,看是否有损坏。具体对应什么字符串请对照hash.txt

md5sum Android6_r1_aa

然后把这几个文件合并成一个

cat Android6_r1_* > M.tgz

计算合并后的文件哈希

md5sum M.tgz

在Ubuntu-14.04.3配置并成功编译Android6_r1源码第8张

8、解压文件

tar zxvf M.tgz

 这是个漫长的过程。

 这个解压命令会创建mydroid文件夹,解压的东东都在里面

在Ubuntu-14.04.3配置并成功编译Android6_r1源码第9张

9、编译前配置

在 .bashrc文件中添加:export USE_CCACHE = 1,操作如下:

echo export USE_CCACE=1 >> ~/.bashrc

为了提高编译效率,设置编译器高速缓存。执行以下命令:

prebuilts/misc/linux-x86/ccache/ccache -M 30G

-M 30G 两个参数表示设置30G大小的空间作为缓存,这个数值可以根据自己的硬盘空间大小继续调整

在Ubuntu-14.04.3配置并成功编译Android6_r1源码第10张

接着导入编译Android源码所需的环境变量和其它参数,运行以下命令

source build/envsetup.sh

在Ubuntu-14.04.3配置并成功编译Android6_r1源码第11张

运行lunch命令选择编译目标

lunch

在Ubuntu-14.04.3配置并成功编译Android6_r1源码第12张

比如选择1,会出现以下提示信息,告诉我们编译的源码的一些相关信息

在Ubuntu-14.04.3配置并成功编译Android6_r1源码第13张

10、编译

make -j8

因为笔记本是i5 4210u,所以使用8(CPU核心的两倍),此处可能设置过大了。

在Ubuntu-14.04.3配置并成功编译Android6_r1源码第14张

11、不断地编译(error不断,无奈)

看来并不是一帆风顺啊,出问题了。开始我还以为JDK版本不对,进入build/core/main.mk

在Ubuntu-14.04.3配置并成功编译Android6_r1源码第15张

发现默认就是1.7。

错误停止在下面的地方:

在Ubuntu-14.04.3配置并成功编译Android6_r1源码第3张

上面提过了,一开始我也没安装这些依赖组件,导致了一些不必要的麻烦。

还有其它常见编译错误,已经有人整理出来了,适合的就参考以下吧:

1、编译Android源码致命错误解决方案

2、Build on Ubuntu 14.04 does not work

3、编译Android系统源码和内核源码

 

继续编译

make -k

用了make -k之后,就悲剧了,编译了一个晚上还没好。

早上起来的时候果断用“Ctrl + C”中断编译,重新安装以上的依赖包,接着做清理工作

make clean

然后继续开始,多加个sudo,因为之前的编译输出了“没有权限操作”类似的提示。

sudo make -j8

 大约两个小时后,硬盘利用率100%,一直没动。编译也似乎停住了。一个小时后,貌似挂了T~T

在Ubuntu-14.04.3配置并成功编译Android6_r1源码第17张

难道高速缓存占用太多硬盘空间?虚拟机给的空间不够?

好吧,我重新装一个ubuntu。然后分配60G的虚拟空间,2G内存,20G编译高速缓存。又跑一个晚上。

第二天一看,又是error,真是泪流满面!

在Ubuntu-14.04.3配置并成功编译Android6_r1源码第18张

arm-linux-androideabi-g++: Internal compiler error: Killed (program cc1plus)

这是什么鬼?

通过命令build-essential,g++我也装了呀。

在Ubuntu-14.04.3配置并成功编译Android6_r1源码第19张

google了一下,有一个bug report:Build #478 Failed,可是没看到解答。

看到stackoverflow上一个类似问答:arm-linux-androideabi-gcc: Internal error: Killed (program cc1) from Android NDK r8

整理几个答案:

This error went away for me when I used "make" instead of the recommended "make -j4".
But rebooting the virtual machine seems to fix the problem for me. // are you sure??
For those having this issue with VMs, the solution that worked for me was bumping up the base memory. It was originally set to 512MB to 1536MB.

可是这是gcc呀。 

然后又找到这个:firefox build for Android fails,里面提到:

well the problem was caused by too little RAM allocated to my VM. Upped the RAM from 1Gb to 4Gb and the compile is now proceeding nicely. 

真是RAM小了?

再试试吧。由于机器配置原因,最多好像只能给虚拟机分配3G的内存。然后直接sudo make执行命令。

在Ubuntu-14.04.3配置并成功编译Android6_r1源码第20张

抓狂啊!!难道ARM还小了?

重装ubuntu再来。这次分配90G硬盘空间,4G内存(开始我还以为只能给3G)。

12、编译成功

最终使用以下编译命令

sudo make -j2

从上午11点半左右开始执行,晚上10点回来,看到居然编译成功了!看到system.img没有?哈哈~

在Ubuntu-14.04.3配置并成功编译Android6_r1源码第21张

进入目录/out/target/product/generic,可以看到ramdisk.img, system.img, userdata.img, cache.img这四个镜像文件

在Ubuntu-14.04.3配置并成功编译Android6_r1源码第22张

13、运行Android模拟器

由于刚刚编译成功,如果此时尚未退出终端的话,可以直接启用命令运行Android模拟器。

emulator

在Ubuntu-14.04.3配置并成功编译Android6_r1源码第23张

如果退出了先前编译的终端命令行窗口,那么运行模拟器就完全不一样了。具体请参考:android4.4 源码编译之运行模拟器

如果对你有用,请支持一下~

 

参考:在Ubuntu上下载、编译和安装Android最新源代码

        Android 2.3.5源代码 更新至android 6.0,可以下载,度娘网盘

        android4.4源码编译

免责声明:文章转载自《在Ubuntu-14.04.3配置并成功编译Android6_r1源码》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Epplus 使用的简单介绍API安全(八)-审计下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

OpenStack云计算快速入门之三:OpenStack镜像管理

第三部分OpenStack镜像管理 一、简介 很多源都有为OpenStack已经编译好的各种镜像了,您可以直接下载并通过使用这些镜像来熟悉OpenStack。 不过如果是为生产环境进行部署的话,您一定需要构建含有定制软件或配置的镜像文件。不要着急,本章将引领您完成几种较为流行的Linux发行版镜像,最后也将制作一份Windows的镜像。 由不同的Lin...

VMware 15.5虚拟机安装群晖NAS

 一、群晖nas简介 NAS(Network Attached Storage:网络附属存储),按字面意思理解其实就是网络存储器,可以理解为存储资料的网盘,云盘。NAS本身支持多种协议(如NFS、CIFS、FTP、HTTP等),且支持各种操作系统。可以通过任何一台终端设备(如PC、手机等),用浏览器对其进行直观方便的管理。群晖NAS可集中存储和备份数据、简...

小米笔记本安装ubuntu虚拟机提示CPU禁用的解决办法

原来的笔记本配置太低,第5代i3+4G内存,还是传统的机械硬盘,用作开放比较吃力,直接安装了一个Ubuntu1804,跑开发没有问题。但还是精彩需要用到windows系统实在是没办法,于是入手小米pro笔记本,第10代i7+16G内存+固态硬盘+独立显卡MX250。同等配置里,小米的价格是最低的,再三权衡下入手。 在win10里跑一个ubuntu的虚拟机作...

公众号文章集合-2020整理回顾

​ 公众号运营快一年,都是记录个人工作记录和分享,自己也比较佛系,有觉得发的必要才发,最近整理了一下一年来的相关的公众号推文(也把相关的文章进行归类整理一下)。 一、漏洞复现(原创) 1、CVE -2020-13942 (Apache Unomi 远程代码执行漏洞)复现 https://mp.weixin.qq.com/s/fQSRXk9FilS4ImU...

chromium浏览器开发系列第三篇:chromium源码目录结构

上两篇介绍了下载源码和编译源码,这次主要介绍chromium的源码目录结构,我也是通过源码和官网结合来跟大家说,如果有说的不准确的,欢迎交流。 另外,官网的不一定准确,他们其实也很懒,所以最主要还是靠自己。官网只能作为一个参考。 Chromium结构相对两年前变化很大。目录结构依然很清晰,主要有三个部分(不包括其他的库):浏览器,渲染器,webkit。浏览...

Linux命令(六) 查看文件 cat tac more less tail

如果要查看文件,使用 cat  less  tac   tail  和 more 中的任意一个即可。 1.cat     使用 cat 命令查看文件时会显示整个文件的内容,注意cat只能查看文本文件的内容,如查看二进制文件,则屏幕会显示乱码。另外 cat 可创建文件、合并文件等。 命令格式: cat [选项] [参数] 选项:   -A    等同于 -...