zoukankan      html  css  js  c++  java
  • 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,如下图:

    libart.so'serror

    解决方法:

    编译之前建议先修改源码文件里的此文件: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

     
     
  • 相关阅读:
    发布说明
    Python批量读取人脸图片与数据互相转换
    Python图片与其矩阵数据互相转换
    在sklearn上读取人脸数据集保存图片到本地
    Python图片转换成矩阵,矩阵数据转换成图片
    lintcode :continuous subarray sum 连续子数组之和
    lintcode 中等题:digits counts 统计数字
    lintcode 中等题:Single number III 落单的数III
    lintcode 中等题:Singleton number II 落单的数 II
    lintcode 中等题:majority number III主元素III
  • 原文地址:https://www.cnblogs.com/jukan/p/6705400.html
Copyright © 2011-2022 走看看