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

     
     
  • 相关阅读:
    每日一水 POJ8道水题
    编译和使用 MySQL C++ Connector
    j2ee model1模型完成分页逻辑的实现 详解!
    DB查询分析器访问EXCEL时,要在表名前后加上中括弧或双引号
    指向结构体变量的指针
    EOSS V3.0 企业运营支撑系统(基于RBAC原理的权限管理)
    MybatisGen1.0 Mybatis JavaBean Mapper生成工具
    The table name must be enclosed in double quotation marks or sqare bracket while accessing EXCEL by
    资源-Android:Android
    软件-开发软件:Android Studio
  • 原文地址:https://www.cnblogs.com/jukan/p/6705400.html
Copyright © 2011-2022 走看看