使用 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_manguro | manguro | 全コンパイル、Galaxy Nexus GSM/HSPA+("manguro") で実行 |
full_panda | panda | 全コンパイル、PandaBoard ("panda") で実行 |
BUILDTYPE は三種類に分かれます
BUILDTYPE | 機能特徴 |
---|---|
user | 市場に出すバージョン、デフォルトで root 権限なし、adb 無効 |
userdebug | root、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