zoukankan      html  css  js  c++  java
  • 使用Docker编译Android(AOSP)


    http://www.longxk.com/posts/2014/03/18/using-docker-to-build-aosp/


    一直以来编译Android(AOSP)都是很蛋疼的事情,不仅要下载体积超大的源代码,还要冒着搞坏系统的风险安装一大堆构建工具。另外如果不是使用Google指定的Linux发行版(目前是Ubuntu 12.04 64bit),还要解决不同的工具版本的问题,比如Arch Linux上就会因为make、Python还有Java的版本不对应造成编译出错,虽然有办法解决,但是会打乱当前系统环境,平添不少麻烦。曾经也用过Virtualbox安装Ubuntu 12.04 64bit来编译AOSP,但是因为性能不好、使用非常不方便而放弃了。Docker在理念上类似于虚拟机,但是却与虚拟机有很大不同,它没有虚拟层,而是直接使用宿主机的内核,因此性能上的损耗很小,启动速度飞快,几乎不耗时,跟宿主机之间共享文件也是非常方便,用来编译AOSP再合适不过了。

    如何安装Docker就不多说了,参考这里,基本上主流发行版都支持了。

    Arch Linux上安装后需要手动启动docker服务,使用命令:

    # systemctl start docker
    

    不过,启动这个服务,Docker会默认将数据文件存放在/var/lib/docker目录,如果该目录所在的分区不是很大,那么建议将这个目录改到其他容量将大的分区下。首先创建一个新的docker服务

    # cp /usr/lib/systemd/system/docker.service /usr/lib/systemd/system/docker-alt.service
    

    然后编辑docker-alt.service,将ExecStart=/usr/bin/docker -d改为ExecStart=/usr/bin/docker -d -g /other/dir。以后如果需要启动docker服务,就改为启动docker-alt服务,当然也可以让它自动启动:

    # systemctl enable docker-alt
    

    然后下载ubuntu的image:

    # docker pull ubuntu
    

    使用这个命令会下载13.10, 13.04, 12.10, 12.04四个版本,如果只需要某个版本,如12.04,可以将ubuntu改为ubuntu:12.04。

    下载完成后,就可以基于这些image来建立自己的image了,创建任意一个目录,再创建一个名为Dockerfile的文件,加入下列内容:

    FROM ubuntu:12.04
    
    ADD sources.list /etc/apt/sources.list
    
    ENV DEBIAN_FRONTEND noninteractive
    RUN apt-get -qq update
    RUN apt-get install -y build-essential g++-multilib
    RUN apt-get install -y file git gnupg flex bison gperf zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 openjdk-6-jdk openjdk-6-jre
    
    WORKDIR /var/aosp
    

    保存Dockerfile文件,然后在同目录下新建一个sources.list文件,也就是ubuntu的软件源配置文件,里面根据你所使用的镜像填入对应地址。

    接下来就可以构建新的image了,在Dockerfile所在目录运行:

    # docker build -t aosp-build .
    

    其中aosp-build为image名称,可随意修改。

    等构建完成后,我们就可以在得到的image上运行命令,并创建container了,比如运行一个bash shell,并创建一个在宿主机和container之间共享的目录:

    # docker run -v /host/aosp-dir:/var/aosp/source -i -t --name aosp aosp-build bash
    

    这里宿主机上的/host/aosp-dir目录将会和container中的/var/aosp/source目录共享,并且使用--name选项指定了container的名字,以后便可以通过下面的命令再次启动这个container:

    # docker start -i -a aosp
    

  • 相关阅读:
    JVM系列五:JVM监测&工具[整理中]
    Washing Text Animation
    Cloth
    藤条生长为字母的动画
    音频驱动曲线
    Wood Chipping Text Animation
    融化的文字
    流体文本动画
    Blender Tutorial
    UV纹理+修改器:VertexWeightEdit+修改器:Mask遮罩
  • 原文地址:https://www.cnblogs.com/ztguang/p/12646418.html
Copyright © 2011-2022 走看看