このページは現在 LineageOS Wiki の中で機種共通なビルド環境の構築を取り上げたテンプレート、 device_build_before_init.md の非公式な参考訳を置いています。
(将来的に追加の注意事項などを含めて書き直す可能性はあります)
必要なパッケージについてなど、14.1 よりも古い LineageOS (というかCyanogenMod時代じゃんね…)向けの情報は省略しています。
特に内容に関する保証はしませんが、質問は受けたり受けなかったりするので 連絡先 とかに投げてください。
lineage-17.1
以前であれば 16GB 、lineage-18.1
以降であれば 32GB 以上)。
lineage-17.1
以前であれば 200 GB 、lineage-18.1
以降であれば 300 GB)。
ccache
を有効にしたり、複数の端末向けにビルドする場合は更に多くの容量が必要です。また、 SSD を使用することは従来の HDD よりもビルド時間を大幅に短縮することに繋がります。cd
が “change directory” の略であることや、ディレクトリ構造の概念、Linux では /
で区切られることなど、基礎的なコマンドラインの概念を知っていると役に立つでしょう。TIP: Linux を使い慣れていないのであれば、これを期に学習する絶好のチャンスです。無料で VirtualBox などの仮想マシン(VM)をダウンロードして実行し、Ubuntu などの Linux ディストリビューション(AOSP も Ubuntu でのテストを行っています)をインストールするだけです。
最近の 64bit 版であればちゃんと動くはずですが、最新の 長期サポートリリース (LTS) の利用をおすすめします。VirtualBox で Ubuntu を動作させるための設定などについては、インターネット上に情報がいくらでも存在するのでここではわざわざ説明しません。既に Linux ディストリビューションや macOS をお使いの場合は、そのまま次に進んでください。
さあ、始めましょう!
NOTE: この手順は一回のみ必要です。既にビルド環境の準備ができてソースコードのダウンロードが済んでいる場合は、この章はスキップしてください。
過去に adb
と fastboot
をインストールしたことがなければ、Google からダウンロードすることができます。
以下の通りに実行して展開します:
unzip platform-tools-latest-linux.zip -d ~
TIP: 実際のファイル名は上記のコマンドと必ずしも一致するとは限らないので、適宜調整してから実行してください。
次に、 adb
と fastboot
を環境変数(PATH)に追加する必要があります。 ~/.profile
を開いて以下を追記します:
# add Android SDK platform tools to path
if [ -d "$HOME/platform-tools" ] ; then
PATH="$HOME/platform-tools:$PATH"
fi
そして、 source ~/.profile
を実行して適用します。
LineageOS のビルドにはいくらかのパッケージが必要です。お使いの Linux ディストリビューションのパッケージ管理システムを使用して、これらをインストールすることができます。
TIP: Linux における パッケージ管理システム とは、ソフトウェア(ふつう、インターネット経由で提供されます)をコンピューターにインストールしたり、削除したりするために使用されるシステムのことです。Ubuntu では、Ubuntu ソフトウェアセンター を使うことができます。更に、ターミナルを開いて
apt install
コマンドを直接使用することもできます。
LineageOS をビルドするには以下のパッケージが必要です:
bc bison build-essential ccache curl flex g++-multilib gcc-multilib git git-lfs gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev libelf-dev liblz4-tool libncurses5 libncurses5-dev libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev
Ubuntu 20.04 (focal) より古いバージョンの場合は以下のパッケージも必要です:
libwxgtk3.0-dev
Ubuntu 16.04 (xenial) より古いバージョンの場合は以下をインストールします:
libwxgtk2.8-dev
LineageOS のバージョンによって、必要となる JDK (Java Development Kit) のバージョンも異なります。
LineageOS | requirement | note |
---|---|---|
18.1~ | OpenJDK 11 | ソースコードに同梱されています |
16.0 - 17.1 | OpenJDK 1.9 | ソースコードに同梱されています |
14.1 - 15.1 | OpenJDK 1.8 | openjdk-8-jdk をインストールする必要あり |
LineageOS 17.1 移行のビルドには python3
が(訳注: python
を実行した場合の)システムのデフォルトである必要があります。python --version
で確認することができます。
より古いブランチでビルドする場合は、代わりに python2
が必要です。 手動でシンボリックリンクを作成する か、ビルド用に virtualenv を作成してください。私たちは後者を推奨します:
virtualenv --python=python2 ~/.lineage_venv
を一度実行することで作成することができます。以降は、python2
がデフォルトで必要な端末ごとに ~/.lineage_venv/bin/activate
を実行して有効化してください。
~/.lineage_venv
はただの一例であり、パスは好きなようにしてくださいね!
ビルド環境にいくつかのディレクトリを用意する必要があります。
以下の通りに実行して作成してみましょう:
mkdir -p ~/bin
mkdir -p ~/android/lineage
~/bin
ディレクトリには git-repo (主に "repo" と呼ばれます) というツールが、 ~/android/lineage
ディレクトリには LineageOS のソースコードがそれぞれ格納されます。
repo
コマンドをインストールする以下の通りに実行することで、 repo
のバイナリをダウンロードして実行可能な権限を付与します:
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
~/bin
ディレクトリを環境変数に追加するUbuntu の最近のバージョンでは、 ~/bin
は既に PATH に含まれているはずです。 ~/.profile
をテキストエディターで開き、以下の記述を探すことで確認ができます(なければ追記してください):
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
そして、環境の更新のために source ~/.profile
を実行してください。
repo
は Android のソースコードを同期するためにユーザー情報を必要とするので、情報を設定するために以下のコマンドを実行します。
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
今後のビルドを高速化したい場合は、以下のように実行することで ccache
を使用してください。
export USE_CCACHE=1
export CCACHE_EXEC=/usr/bin/ccache
上の内容を ~/.bashrc
に追記します。そして ccache
に使って欲しいディスク領域の上限を以下のように指定します:
ccache -M 50G
ここでの 50G
は 50GB のキャッシュに相当します。これは一度だけ実行する必要があります。25GB~100GB の範囲で、ビルドを非常に高速にできます(例えば、通常なら1時間のビルドが20分にまで短縮されたりします)。1台向けにビルドする場合は、25GB~50GB で十分です。同じカーネルソースを共有しない複数の端末向けにビルドする場合は、75GB~100GB を目安にしてください。この領域はドライブ上で恒久的に確保・占有されることを十分考慮に入れるようにしてください。
また、オプションで ccache
の圧縮を有効にすることもできます。パフォーマンスに若干の低下が予想されますが、キャッシュに収まるファイルの数が増えます。以下の通りに実行することで有効化できます:
ccache -o compression=true
NOTE: 圧縮を有効にすると、
ccache
が使用するキャッシュサイズを抑えることができます(1台の場合で約20GBが目安になります)。