ubuntu14.04 配置 AOSP(android open source project)android系统源码编译环境

来源:互联网 发布:产业链分析理论 知乎 编辑:程序博客网 时间:2024/05/01 22:21

        先说明下, 该文章主要是参考 android 官方文档总结的, 主要参考以下两个链接: http://source.android.com/source/requirements.html  和 http://source.android.com/source/initializing.html 的文章。 


         一,搭建软件的编译环境,首先是操作系统,因为我用的linux 系统, 下面把对使用 linux 系统编译源码的相关信息贴上来:

  • Android 6.0 (Marshmallow) - AOSP master: Ubuntu 14.04 (Trusty)
  • Android 2.3.x (Gingerbread) - Android 5.x (Lollipop): Ubuntu 12.04 (Precise)
  • Android 1.5 (Cupcake) - Android 2.2.x (Froyo): Ubuntu 10.04 (Lucid)
我的系统是 ubuntu 14.04, 我接下来准备编译的源码是 android 5.0,因为向下兼容的关系,那么我的操作系统完全没问题。


        二,接下来是安装JDK,先贴官方文档:

         Please note, since there are no available supported OpenJDK 8 packages for Ubuntu 14.04, the Ubuntu 15.04 packages must be installed manually. See JDK for Ubuntu LTS 14.04 for precise instructions.

  • The master branch of Android in AOSP: Ubuntu - OpenJDK 8, Mac OS - jdk 8u45 or newer
  • Android 5.x (Lollipop) - Android 6.0 (Marshmallow): Ubuntu - Java JDK 7, Mac OS - jdk-7u71-macosx-x64.dmg
  • Android 2.3.x (Gingerbread) - Android 4.4.x (KitKat): Ubuntu - Java JDK 6, Mac OS - Java JDK 6
  • Android 1.5 (Cupcake) - Android 2.2.x (Froyo): Ubuntu - Java JDK 5
        1,先看 “Please note, since there are no available supported OpenJDK 8 packages for Ubuntu 14.04, the Ubuntu 15.04 packages must be installed manually. See JDK for Ubuntu LTS 14.04 for precise instructions.” 这段英文的解释。 这里告诉我们,在Ubuntu 14.04 和 Ubuntu 15.04上面没有 OpenJDK8 的安装包,需要我们自己手动安装OpenJDK8, 具体参考 JDK for Ubuntu LTS 14.04  超链接的说明。这里先不管怎么 安装OpenJDK8。

        2,接下来看具体的版本对应的JDK。

  • The master branch of Android in AOSP: Ubuntu - OpenJDK 8, Mac OS - jdk 8u45 or newer
  • Android 5.x (Lollipop) - Android 6.0 (Marshmallow): Ubuntu - Java JDK 7, Mac OS - jdk-7u71-macosx-x64.dmg
  • Android 2.3.x (Gingerbread) - Android 4.4.x (KitKat): Ubuntu - Java JDK 6, Mac OS - Java JDK 6
  • Android 1.5 (Cupcake) - Android 2.2.x (Froyo): Ubuntu - Java JDK 5

 这段文字,说明了每个版本使用什么JDK, 在这里,如果仔细一点,会发现一个官方文档的问题, 看前面的一 ,

有这样一个说明:

“ Android 6.0 (Marshmallow) - AOSP master: Ubuntu 14.04 (Trusty)”,然后再看本点中的 “ The master branch of Android in AOSP: Ubuntu - OpenJDK 8 ” 和 “Android 5.x (Lollipop) - Android 6.0 (Marshmallow): Ubuntu - Java JDK 7” ,发现一个问题,前面说 主分支是 Android6.0, 而后面好像不是。关于这个,我认为是google在制作文档时的一个疏忽,现在主分支上面的代码应该是 Android N了,也就是 Android7.0了。 而我要编译的是 android 5.0的源码,所以直接装oracle JDK7(实际上在编译5.0.1_r1 源码时,发现不能够用Oracle JDK7, 应该用 OpenJDK, 又一文档问题)就好了。至于怎么安装 OpenJDK8,  JDK for Ubuntu LTS 14.04  这个超链接有详细说明,这里就不说了。另外要说明一点的是,在 JDK for Ubuntu LTS 14.04  在 这个超链接里面说了 Ubuntu 15.04 可以直接用 apt-get 命令来安装 OpenJDK8,也就是说这个和前面说的, 在Ubuntu15.04里面没有OpenJDK8安装支持包又是矛盾的, 看样子还是文档本身的问题,这里就不纠结了。

        3,下载 Java JDK 7。在 http://www.oracle.com/technetwork/java/archive-139210.html 这个地址列出了所有版本的JDK,找到 jdk7, 然后再找到 linux 版本的jdk, 发现有jdk-7u79-linux-x64.rpm 和 jdk-7u79-linux-x64.tar.gz  两种格式。 查资料了解到:

         3.1, .rpm格式是针对 Red Hat 的格式, 如果 linux 系统是 Red Hat 的话,那么可以直接双击安装,ubuntu 的话,需要进行转换,需要其它工具进行转换成 .deb 格式,而且有可能失败,所以就没有下载 .rpm 格式。

         3.2, .tar.gz, 该格式适用于所有linux 系统。所以选择该格式下载。

       4, 安装 Java JDK 7。

         4.1,解压 jdk, tar xvf jdk-7u79-linux-x64.tar.gz ;

         4.2,配置环境变量, 执行 sudo vi /etc/profile , 在 pfofile 文件 末尾 加上如下信息:

         export JAVA_HOME=/home/zhangquan/jdk1.7.0_79
         export JRE_HOME=${JAVA_HOME}/jre
         export CLASSPATH=$CLASSPATH:.:${JAVA_HOME}/lib:${JAVA_HOME}/jre/lib
         export PATH=${JAVA_HOME}/bin:${JAVA_HOME}/jre/bin:$PATH  

         通常,在配置好环境变量后,肯定要执行 java , javac 命令来看看 jdk有没有安装号,环境变量有没有配置好。我在这个过程中,发现 java, javac 命令都不管用, 这是因为修改没有立即生效,这里要让修改立即生效的话,执行 source /etc/profile 命令即可

       5,在上面2中说了, 实际上在编译5.0.1的源码时,会发现需要OpenJDK,如果用Oracle JDK 会 报如下错误:

         Checking build tools versions...
         ************************************************************
         You asked for an OpenJDK 7 build but your version is
         java version "1.7.0_79" Java(TM) SE Runtime Environment (build 1.7.0_79-b15) Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed       mode).
        ************************************************************

        build/core/main.mk:191: *** stop。 停止。

        出现这个错误后,我尝试过修改 build/core/main.mk文件用 Oracle JDK 来编译, 最终编译过程中出了错,后来就放弃了,于是就安装OpenJDK7, 具体安装:

         5.1,安装命令: sudo apt-get install openjdk-7-jdk

         5.2,安装完成后,默认openjdk7是安装在 /usr/lib/jvm 目录下的,我把它放在了 ~/ 目录下了,因为我的oracle jdk是放在该目录下的。

         5.3,配置环境变量:

          #export JAVA_HOME=/home/zhangquan/jdk1.7.0_79
           export JAVA_HOME=/home/zhangquan/java-7-openjdk-amd64
           export JRE_HOME=${JAVA_HOME}/jre
           export CLASSPATH=$CLASSPATH:.:${JAVA_HOME}/lib:${JAVA_HOME}/jre/lib
           export PATH=${JAVA_HOME}/bin:${JAVA_HOME}/jre/bin:$PATH
           注意:我配了两个JAVA_HOME, 其中oracle jdk 的被我注释掉了, 如果要换着使用的话,把对应的JAVA_HOME注释放开和加上就好了。

       6,安装 Python,官方要求 Python 2.6 —— 2.7 版本, 默认 ubuntu 14.04.1 就装了 Python 2.7.6, 所以不用安装了

       7,安装 GNU Make,官方要求 3.81 —— 3.82,默认ubuntu 14.04.1 安装了 3.81,这个工具需要注意的是,如果要安装时,它的名字叫 make  , 如 apt-get install make, 而不是 GNU Make。

       8,安装 Git, 要求最低 1.7 或 1.7 以上的版本, 默认 ubuntu 14.04.1 安装了1.9.1;

       9,安装一些其它的相关包,不同版本安装的不一样,具体的看 http://source.android.com/source/initializing.html 这个链接, 我的是 14.04, 安装命令是:

 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


0 0