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 無効
userdebugroot、adb 権限を開放、一般的に実機デバッグに使用
eng最大権限 (root) を持ち、追加のデバッグツールを持つ、一般的にエミュレーターに使用

make コンパイル:自分のコンピュータの CPU コア数に応じてコンパイルできます

  # make -j$(nproc)
  
  make -j10

Android Source 単体コンパイル - モジュール#

全体をコンパイルする以外に、特定のアプリモジュール (例:Settings アプリモジュール) を単体でコンパイルできます
Android Source のルートディレクトリで、以下のコマンドを実行します

  source ./build/envsetup.sh
  
  lunch xxx

Setting ディレクトリに入って、mm でコンパイルします

  mmm packages/apps/Settings

mm コマンドの他にも、他のコマンドで単体コンパイルができます

コマンド機能
mm現在のディレクトリ下のモジュールをコンパイル(指定されたプロジェクトのディレクトリに入る必要があります)
mmm指定されたディレクトリ下のモジュールをコンパイルしますが、その依存モジュールはコンパイルしません (Android ソースコードのディレクトリ構造の任意のレベルで、任意の指定されたプロジェクトをコンパイルできます)
mma現在のディレクトリ下のモジュールをコンパイルし、その依存モジュールも含めます
mmma指定されたパス下のすべてのモジュールをコンパイルし、その依存も含めます

エミュレーターの実行#

  source ./build/envsetup.sh
  
  lunch xxx
  
  emulator
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。