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

    不出意外,在等待一會之後,你會看到運行界面:

    這裏寫圖片描述


    發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章