banner
fwrite

fwrite

好好生活
twitter
github
email

Android 源碼編譯

使用 apt 安裝以下工具 先使用 apt 安裝以下工具

  sudo apt upgrade
  sudo apt update
  
  sudo apt install -y \
      vim \
      git-core \
      gnupg \
      flex \
      bison \
      gperf \
      build-essential \
      zip \
      unzip \
      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 \
      libncurses5 \
      libelf-dev \
      libswitch-perl

安裝 google 的 repo 工具來下載 Android 源碼、Android 內核代碼
下載安裝 repo 工具

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

下載源碼#

  mkdir android_source && cd android_source

確認有設定 git 的基本資訊, name 、 email

  git config --global user.name <Your Name>
  git config --global user.email <you@example.com>

repo init :指定你要下載的 url & branch (branch name 可以參考官方文檔)

  repo init -u https://android.googlesource.com/platform/manifest \
      -b android-13.0.0_r1
  repo sync

編譯 Android#

初始化環境:在 Android 下載好的根資料夾下達以下命令

  cd ~/android_source
  
  source ./build/envsetup.sh

lunch 選擇編譯目標:選擇要編譯的目標,格式組成是 BUILD 、 BUILDTYPE
Build 是指編譯完後要運行的平台

BUILD目標設備補充
Full模擬器全編譯,包含所有語言、應用、輸入法… 等等
full_manguromanguro全編譯,運行於 Galaxy Nexus GSM/HSPA+("manguro")
full_pandapanda全編譯,運行於 PandaBoard ("panda")

BUILDTYPE 則分為三種類型

BUILDTYPE功能特點
user發布到市場上的版本,預設沒有 root 權限、adb 關閉
userdebug開放 root、adb 權限,一般用於真機調試
eng擁有最大權限 (root),並具有額外調試工具,一般用於模擬器

make 編譯:可以按照自己電腦的 CPU 核心數量來編譯

  # make -j$(nproc)
  
  make -j10

Android Source 單編譯 - 模組#

除了全部編譯以外,我們可以使用單單編譯某一個應用模組 (eg. Settings 應用模組)
在 Android Source 根目錄中,執行以下命令

  source ./build/envsetup.sh
  
  lunch xxx

進入 Setting 目錄下,使用 mm 編譯

  mmm packages/apps/Settings

除了 mm 指令以外,還可以使用其他命令單編譯

指令功能
mm編譯當前目錄下 Module(必須進入指定工程的目錄中才能編譯)
mmm編譯指定目錄下 Module,但不編譯其依賴的 Module (可以在 Android 源代碼的目錄結構中的任意級目錄,編譯任意指定的工程)
mma編譯當前目錄下 Module,包含其依賴的 Module
mmma編譯 指定路徑下的 所有 Module,並包含其依賴

模擬器運行#

  source ./build/envsetup.sh
  
  lunch xxx
  
  emulator
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。