Docker 编译Android源码

1.安装和配置Docker

  • 安装Docker : 自行百度

  • 配置Docker 镜像源: 自行百度

  • 安装基础镜像, 由于我们编译的是Android 6.0系统,推荐使用Ubuntu 14.04 x64系统去编译,可以省去很多麻烦(比如:编译器版本、构建套件版本、依赖库版本等不兼容的问题),这也是我们使用docker的原因。
    执行以下命令获取镜像:

    $ sudo docker pull ubuntu:14.04 、

2. 镜像系统基础配置

  • 简单的docker操作

    查询本地已有的镜像:

    $ sudo docker images

    查看本地所有的容器 :

    $ sudo docker ps -a

    启动镜像,并获取一个伪终端

    $ sudo docker run -it REPOSITORY:TAG /bin/bash # 使用 仓库名+标签 启动​

    $ sudo docker run -it /bin/bash # 使用 IMAGE ID 启动

    退出镜像

    $ exit # 或使用快捷键 Ctrl + D

    启动容器

    $ sudo docker start /bin/bash # 使用 CONTAINER ID 启动

    链接到容器,并获取一个伪终端:

    $ sudo docker exec -it /bin/bash

    退出容器

    $ sudo docker stop

    停止

    $ sudo docker kill

    杀死运行的容器 其他有关docker的更多命令以及用法就需要大家自己去学习了。

  • 更换系统源
    使用Ubuntu系统的童鞋就轻车熟路了,这里我使用的是阿里的源。
    启动指定容器后执行操作:

    cp /etc/apt/sources.list /etc/apt/sources.list.bak

    echo “xxx” > /etc/apt/sources.list // 使用源替换 xxx

    apt-get update

    exit

    Ubuntu 14.04 阿里云的源如下:

    deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse

3. 配置编译专用镜像

  • 准备容器: 使用以下命令创建一个容器,并挂载 ~/share 目录到容器中的 /home/share 目录:

    $ docker run -it -v ~/share:/home/share ubuntu:14.04 /bin/bash

  • 安装支持库

    sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0

  • 添加编译Android源码需要的依

    安装编译工具以及构建套件:

    $ sudo apt-get install gcc-multilib g+±multilib build-essential

    安装必要的工具软件

    sudo apt-get install git-core gnupg bison flex gperf pngcrush bc zip curl lzop

    sudo apt-get install schedtool libxml2 libxml2-utils xsltproc squashfs-tools

    安装其他需要的库

    sudo apt-get install libesd0-dev libsdl1.2-dev libwxgtk2.8-dev libswitch-perl
    sudo apt-get install libssl1.0.0 libssl-dev lib32readline-gplv2-dev libncurses5-dev

    附:命令说明:

    bc 命令行计算器
    lzop 快速压缩工具
    flex 词法分析器生成器
    curl 基于URL的文件传输工具
    gperf 哈希函数生成器
    bison 语法分析器生成器
    xsltproc 快速XSLT引擎,可以通过XSL文件把XML转为HTML,XHTML,PDF…
    schedtool 查询或设置CPU状态
    squashfs-tools linux内核压缩工具,只读式压缩文件系统Image
    pngcrush 批量压缩PNG图片
    libxml2 libxml2-utils 操作XML文档工具

  • 安装JDK
    编译Android 5.1需要安装Java开发环境,我们使用Jdk-7的版本。这里我们使用oracle jdk 1.7,我们使用手动安装的方式,可以从官网下载对应版本的安装包(http://www.oracle.com/technetwork/java/javase/archive-139210.html)。
    我们下载的是 jdk-7u79-linux-x64.tar.gz 的版本,把下载下来的安装包拷贝到~/share目录下,由于之前做了目录挂载,我们可以在容器的 /home/share 目录下找到此安装包,接下来进行安装:

    $ tar -xvf ./jdk-7u79-linux-x64.tar.gz

    $ sudo mkdir -p /usr/lib/jvm/jdk1.7.0/

    $ sudo mv jdk1.7.0_79/* /usr/lib/jvm/jdk1.7.0/

    修改 /etc/profile 文件,添加如下内容:

    export JAVA_HOME=/usr/lib/jvm/jdk1.7.0
    export JAVA_BIN = $JAVA_HOME/bin
    export JAVA_LIB= J A V A H O M E / l i b e x p o r t C L A S S P A T H = JAVA_HOME/lib export CLASSPATH= JAVAHOME/libexportCLASSPATH=JAVA_LIB/tools.jar:$JAVA_LIB/dt.jar

    export PATH= J A V A B I N : ​ JAVA_BIN:​ JAVABIN:PATH

  • 提交容器保存为镜像
    配置好环境之后,保存此容器为一个镜像:

    $ sudo docker commit -m “xxx” TEPO:TAG

    例如,使用$ docker ps -a指令查询刚才的容器编号为1a61adfb1953,我们保存为一个本地镜像,则可执行:

    $ sudo docker commit -m “android-build” 1a61adfb1953 local:v1.0

    使用$ docker images可以查看刚生成的镜像:

    # 输出
    REPOSITORY TAG IMAGE ID CREATED SIZE
    build-android v1.0 49df00985bd1 2 hours ago 971 MB
    ubuntu 14.04 b969ab9f929b 5 weeks ago 188 MB

4. 使用镜像编译Android系统源码

  • 准备系统源码
    在宿主机上,创建源码目录,如 /home/android 目录,并放入Android系统源码。

  • 挂载源码目录到docker容器中

    $ docker run -it -v /home/android:/home/android 49df00985bd1 /bin/bash

  • 开始编译源码

    cd /home/android

    ./build.sh

    make -j8

你可能感兴趣的:(Docker 编译Android源码)