Ubuntu 在Ubuntu 18.04编译Android 8.1

感谢博主:https://blog.csdn.net/qq_42889470/article/details/81463559

硬件要求:
越高越好,不建议在虚拟机内编译
内存越大越好,推荐200G,在这里就不赘述怎么安装ubuntu双系统了,网上教程很多,有时间写一教程出来传送门

  • 推文:传送门
  • 安装并配置git

    sudo apt-get install git -y
    git config --global user.name "your name"
    git config --global user.email "[email protected]"

    安装repo

    sudo apt install repo -y

    sudo apt-get install curl -y

    下载repo工具

    mkdir ~/bin
    PATH=~/bin:$PATH
    curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
    chmod a+x ~/bin/repo

    若下载不了,用下面的方法(推荐)

    git clone https://mirrors.tuna.tsinghua.edu.cn/git/git-repo
    cp ~/git-repo/repo ~/bin/
    chmod a+x ~/bin/repo

    下载源码
    1. repo的运行过程中会尝试访问官方的git源更新自己,如果想使用tuna的镜像源进行更新,可以将如下内容复制到你的~/.bashrc里:
    export REPO_URL=’https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/

    2.并编辑 ~/bin/repo文件,找到REPO_URL这一行,然后将其内容修改(注释并增加一行)为:

    REPO_URL = 'https://gerrit-google.tuna.tsinghua.edu.cn/git-repo'

    顺带说一声清华源用起真爽!

    echo " export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/' ">> ~/.bashrc #执行步骤1

    vi ~/bin/repo
    mkdir ~/android8source #将会存放源码

    cd ~/android8source/

    初始化仓库
    查看分支表:

    打开新终端,下载manifests
    mkdir ~/tabl
    cd ~/tabl
    repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
    cd ~/tabl/.repo/manifests/
    git branch -a

    同步8.1分支:

    我们将上面的source文件夹作为仓库,现在需要来初始化这个仓库了.通过执行初始化仓库命令可以获取AOSP项目master上最新的代码并初始化该仓库,命令如下:
    repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-8.1.0_r2

    同步源码到本地
    初始化仓库之后,就可以开始正式同步代码到本地了,命令如下:

    repo sync
    这里写图片描述

    出现……success…….即同步完成,下面是编译
    编译过程易错且过程漫长,需要耐心。 I am too young?!?!?!
    我现在在Ubuntu 18.04下编译AOSP主线代码,因此需要安装OpenJDK 8,执行命令如下:

    sudo apt-get update
    sudo apt-get install openjdk-8-jdk -y

    构建依赖

    sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib -y
    sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
    sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
    sudo apt-get install git-core gnupg flex bison gperf build-essential
    sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib
    sudo apt-get install libc6-dev-i386 -y
    sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev
    sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
    sudo apt-get install lib32z-dev ccache
    sudo apt install make make-guile -y
    sudo apt-get install tofrodos -y
    sudo apt-get install python-markdown libxml2-utils xsltproc zlib1g-dev:i386

    为了应对下面的错误需要加点内容:

    这里写图片描述

    在当前用户的.bashrc文件中增加:
    export LC_ALL=C

    echo "export LC_ALL=C" >> ~/.bashrc

    加链:

    sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

    修改prebuilts/sdk/tools/jack-admin文件,找到文件中的这一行:
    JACK_SERVER_COMMAND=”java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=TMPDIRTMPDIRLAUNCHER_NAME”

    在 -cp 前加上-Xmx4096m (4096尽量为RAM也就是运行内存或者说swap的一半大小,其实看不见括号这句话也没关系的)如:
    JACK_SERVER_COMMAND=”java -Djava.io.tmpdir=TMPDIRTMPDIRLAUNCHER_NAME”

    vi ~/android8source/prebuilts/sdk/tools/jack-admin

    # ~/android8source 为刚才同步源码的目录,编译会在这里面进行

    cd android8source/prebuilts/sdk/tools/

    ./jack-admin install-serve jack-launcher.jar jack-server-4.11.ALPHA.jar

    重启终端:

    # 键入Ctrl + D
    #键入Ctrl + Alt +T

    初始化编译环境
    确保上述过程完成后,接下来我们需要初始化编译环境,命令如下:

    cd ~/android8source/

    source build/envsetup.sh
    这里写图片描述

    #该命令执行成功后,我们会得到了一些有用的命令,比如下面要用到的lunch命令

    这里写图片描述

    lunch aosp_arm64-eng

    #我手机架构为arm64

    这里写图片描述

    开始编译

    通过make指令进行代码编译,该指令通过-j参数来设置参与编译的线程数量,以提高编译速度.比如这里我设置8个线程同时编译:

    make -j8

    #看自己电脑配置选择线程。参与编译的线程并不是越多越好,通常是根据你机器cup的核心来确定:core*2,即当前cpu的核心的2倍.比如,我现在的笔记本是双核四线程的,因此根据公式,最快速的编译可以make -j8.

    (通过cat /proc/cpuinfo查看相关cpu信息)

    #如果一切顺利的化,在几个小时之后,便可以编译完成.
    #看到### build completed successfully (01:41:38 (hh:mm:ss)) ###表示你编译成功了.

    这里写图片描述

    运行模拟器

    在编译完成之后,就可以通过以下命令运行Android虚拟机了,命令如下:

    source build/envsetup.sh
    lunch aosp_arm64-eng #选择刚才你设置的目标版本
    emulator

    如果你是在编译完后立刻运行虚拟机,由于我们之前已经执行过source及lunch命令了,因此现在你只需要执行命令就可以运行Android虚拟机:

    emulator

    不出意外,在等待一会之后,你会看到运行界面:

    这里写图片描述


    发布了184 篇原创文章 · 获赞 70 · 访问量 37万+

    猜你喜欢

    转载自blog.csdn.net/qq_31939617/article/details/100124157
    今日推荐