Ubuntu16.04下编译android6.0源码

http://blog.csdn.net/cnliwy/article/details/52189349

作为一名合格的android开发人员,怎么能不会编译android源码呢!一定要来一次说编译就编译的旅程,否则你的人生是不完整的!好,那么我们进入正题!

本次编译环境采用Ubuntu16.04LTE,android源码选择android6.0!官方建议采用Ubuntu14版本,主要是我刚开始没在意系统版本,然后就直接下载安装16.04版本了,然后也懒得换了,所以就选择了这个版本....下面我们进入正题。

一、搭建Ubuntu环境。

去Ubuntu官网下载系统镜像,虚拟机可以用VMware Fusion,当然也可以用virtual box等等,这个没影响的。具体安装教程网上多的是,本文就不啰嗦了...

系统装好之后就是配置java环境,本人亲测,Oracle JDK8和open JDK9无法编译,这两个坑大家一定要注意....编译的时候报错提示使用open jdk 1.7.x....好,那么java环境就是open jdk1.7了,这个坑大家就不要踩了...

openjdk1.7的安装命令:

  1. $ sudo add-apt-repository ppa:openjdk-r/ppa
  2. $ sudo apt-get update
  3. $ sudo apt-get install openjdk-7-jdk

不要忘了环境变量的配置,如果java -version可以查看到当前的版本信息,说明环境就配置好了。

二、下载系统源码

源码的下载网上有很多是说用git+repo方式下载的,但是很多请求都已经无法访问了...墙的强大是无法直视的,所以我选择了放弃。我用的是下面这位大神提供的百度云,链接奉上http://blog.csdn.net/ilittleone/article/details/6823441。全部下载下来大概7个G左右,下载完了之后需要合并资源文件,总共10个资源文件,其中有个hash.txt是用来验证md5信息的,可以选择忽略。将下载下来的这10个文件放到统一文件夹里,然后在命令行里进入此文件夹,执行命令cat Android6_r1_*>android6.tgz

执行成功后你会发现当前文件夹里已生成android6.tgz压缩包,解压后即可得到android6.0的源码。好,下面我们就进入源码编译环节

三、编译源码的依赖配置

ubuntu12/14/16所需要的依赖包都是不同的,版本不对应的话依赖包是安装不成功的。

命令如下:

sudo apt-get install git-core gnupg flex bison gperf build-essential \

zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \

lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache \

libgl1-mesa-dev libxml2-utils xsltproc unzip m4

四、开始编译

命令行里进入源码目录,然后执行以下命令:

$ source build/envsetup.sh

$ lunch aosp_arm-eng

$ make -j8 (这里的数字是根据系统配置来的,比如2核2线程的就可以选择j4,数字越高编译越快,前提你的电脑硬件要支持。。。)

然后就进入漫长的源码编译了...由于我在编译的过程中遇到了很多坑,所以整天都在编译。。。睡觉前大概是11点我选择了最后一次尝试。。。然后就睡觉了,醒来的时候发现终于编译成功了,一行希望的绿色提示如下:

### makecompleted successfully (05:08:19 (hh:mm:ss))###

五、编译过程中遇到的错误。这里一定要看!

1 make:***[out/host/linux-x86/obj/lib/libart.so]Error 1,如下图:

解决方法:

编译之前建议先修改源码文件里的此文件:art/build/Android.common_build.mk里的内容

ART_HOST_CLANG := false
ifneq ($(WITHOUT_HOST_CLANG),true)
  # By default, host builds use clang for better warnings.
  ART_HOST_CLANG := true
endif

修改为

ART_HOST_CLANG := false
ifeq ($(WITHOUT_HOST_CLANG),false)
  # By default, host builds use clang for better warnings.
  ART_HOST_CLANG := true
endif

2make: *** [out/target/common/docs/api-stubs-timestamp] 错误 45

解决办法:

make clean

make update-api

make

3
编译完成后直接emulator即可运行刚编译成功的系统,但是我们退出当前命令行之后,再重新进来使用此命令会报找不到此命令的错误

解决方法:

进入源码目录

source
build/envsetup.sh

lunchaosp_arm-eng

然后就可以执行emulator了

六、总结

本次编译总体来说还是顺利的,一天的时间就搞定了...主要是我这网速快,下载系统镜像和andorid源码都是两三M每秒...书写此文的目的在于记录自己本次的经历,也希望能给想研究系统编译的人一点帮助!

下面是本次编译参考的文章,感谢各位大神的经验!

http://blog.csdn.net/u010856630/article/details/51678745

http://blog.csdn.net/chouretang/article/details/43769839

http://blog.csdn.net/ddk3001/article/details/51454055

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-07 04:17:33

Ubuntu16.04下编译android6.0源码的相关文章

在Ubuntu Server14.04上编译Android6.0源码

此前编译过Android4.4的源码,但是现在Android都到了7.0的版本,不禁让我感叹Google的步伐真心难跟上,趁这周周末时间比较充裕,于是在过去的24小时里,毅然花了9个小时编译了一把Android6.0的源码,但是昨天编译完之后已经很晚了,没来得及记录编译的步骤,今天才慢悠悠地来记录一下我在Ubuntu Server14.04上编译Android6.0源码的步骤.好了,废话不多说,我们开始吧! 步骤一: 安装Ubuntu系统.我们既可以通过虚拟机的方式安装Ubuntu,也可以直接在

【转】如何在Ubuntu11.10(32位)下编译Android4.0源码(图文)

原文网址:http://blog.csdn.net/flydream0/article/details/7046612 关于如何下载Android4.0的源码请参考我的另一篇文章: http://blog.csdn.net/flydream0/article/details/7036156 3 开始编译 3.1 初始化环境$ source build/envsetup.sh3.2 选择目标$ lunch full-eng大概会再现如下提示:============================

ubuntu12.04下编译 全志A33 android6.0 源码

有错误请指出. 入职4天了,为了编译android6.0搞的很烦,遇到了很多问题,会将我遇到的问题写出来,做个总结. 我用的是ubuntu12.04,16.04应该也是可行的. 编译时遇到的问题大部分是缺少包的问题,编译之前首先 我装完ubuntu自带了openjdk7,但是之前读开发手册需要jdk1.6,先去下载jdk-6-linux-64.bin安装过后,配置环境变量,配置环境变量后 执行以下命令,单单是编译,这里有很多都不需要,不过为了以防万一 $sudo apt-get install

Ubuntu 下载编译 Android5.0 源码

1.安装ubuntu 编译Android 5.0 需要ubuntu 64位的操作系统,在 http://mirrors.ustc.edu.cn/ubuntu-releases/14.10/ 下载Ubuntu 14.10 64 位版本. 提示: 1.建议下载14.10,不要下载14.04,在安装编译需要的软件时,各种依赖问题,很难麻烦 2.ubuntu 的磁盘空间需要给大一点,在创建虚拟机的时候,第一次改50g编译一半提示磁盘空间不够,给到100g就差不多了 2.安装openjdk-7-jdk A

Ubuntu12.04系统编译Android4.4源码

系统环境 系统:Ubuntu12.04 64位系统. 源码:Android4.4源码. 选择Ubuntu12.04,是因为在14.04上没能折腾成功,在上面兼容32位程序的配置有点烦.12.04必须要用64位的,编译Android4.4时需要64位环境,同时要兼容32位程序,折腾. 步骤 配置jdk6 Android官方给的步骤是用OpenJdk,实测是不行的.网上找到https://jdk6.java.net/download.html 这个网址有需要的jdk,下载自解压安装包.自解压后在当前

Ubuntu 下载 & 编译 Android5.0 源码

 1.安装openjdk-7-jdk Android 5.0 用到的jdk不再是Oracle 的 jdk ,而是开源的 openjdk,在ubuntu安装好后,使用如下命令安装jdk: $sudo apt-get install openjdk-7-jdk 安装好后,设置环境变量: 在/etc/profile 文件末尾加上: JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/ PATH=$PATH:$HOME/bin:$JAVA_HOME/bin expor

编译jmeter5.0源码

jmeter5.0使用过程中,遇到request或者response乱码的情况,想要一次性解决这个问题,需要编译ApacheJMeter_http.jar这个包(lib\ext文件下)里的RequestViewHTTP.class文件把encoding默认值修改成UTF-8 由于不懂java本想网上下载编译好的ApacheJMeter_http.jar,有同学应用可以 但是我这边还是不可以,还有http录制的时候录制到的中文也是乱码 所以还得编译DefaultSamplerCreator.cla

Android6.0 源码修改之 仿IOS添加全屏可拖拽浮窗返回按钮

前言 之前写过屏蔽系统导航栏功能的文章,具体可看Android6.0 源码修改之屏蔽导航栏虚拟按键(Home和RecentAPP)/动态显示和隐藏NavigationBar 在某些特殊定制的版本中要求完全去掉导航栏,那么当用户点进一些系统自带的应用界面如设置.联系人等,就没法退出了,虽然可以在actionBar中添加back按钮,但总不能每一个app都去添加吧.所以灵机一动我们就给系统添加一个全屏可拖拽的浮窗按钮,点击的时候处理返回键的逻辑.它大概长这样(审美可能丑了点,你们可以自由发挥) 图1

Ubuntu16.04下编译安装vim8

在Ubuntu16.04下编译安装vim8,并配置vim-plug插件管理器,以及安装YouCompleteMe等插件. 安装依赖 sudo apt-get install libncurses5-dev libgnome2-dev libgnomeui-dev libgtk2.0-dev libatk1.0-dev libbonoboui2-dev libcairo2-dev libx11-dev libxpm-dev libxt-dev python-dev python3-dev ruby