Ubuntu14.04 Androidシステムソースコードコンパイル環境初期化
37275 ワード
Androidシステムのソースコードのコードレビューと更新プロセスのプレビューはLife of a Patchを参照してください.
ブランチを選択
ブランチを選択
あなたのコンパイル環境のいくつかのニーズは、どのバージョンをコンパイルするかによって異なります.Build Numbersで選択できるブランチを確認します.最新バージョンのソースコードを選択して構築することもできます(ライブラリを初期化すると簡単に詳細を省略します).
ブランチを選択したら、次の手順に従ってコンパイル環境を設定します.
Linuxコンパイル環境の設定
以下の説明は、すべてのブランチに適用され、メインにも適用されます.
Androidコンパイルの定期テストはUbuntu LTS(10.04)で行われていますが、ほとんどのリリース版にはAndroidコンパイル作業に必要なコンパイルツールがあるはずです.
Android 2を行うなら3.xと以上のバージョンのプライマリブランチのコンパイル作業では、あなたのシステムは64ビットでなければなりません.さらに古いAndroidバージョンでは、32ビットシステムでコンパイルできます.
JDKのインストール
最新バージョンのAndroidソースコンパイル環境に必要なJavaバージョンは7.UbuntuではOpenJDKを使用します.
Java 7:最新バージョンのAndroid$ sudo apt-get update $ sudo apt-get install openjdk-7-jdk
オプションで、デフォルトのJavaを更新します$ sudo update-alternatives --config java $ sudo update-alternatives --config javac
Android , Java JDK:
Java 6:Android2.3.x Android4.4
Java 5:Android2.3
必要なパッケージのインストール
Ubuntu Android
$ sudo apt-get install git gnupg flex bison gperf build-essential \ zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \ libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \ libgl1-mesa-dev g++-multilib mingw32 tofrodos \ python-markdown libxml2-utils xsltproc zlib1g-dev:i386 $ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
USBアクセスの設定
# adb protocol on passion (Nexus One) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e12", MODE="0600", OWNER="<username>" # fastboot protocol on passion (Nexus One) SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0fff", MODE="0600", OWNER="<username>" # adb protocol on crespo/crespo4g (Nexus S) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e22", MODE="0600", OWNER="<username>" # fastboot protocol on crespo/crespo4g (Nexus S) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e20", MODE="0600", OWNER="<username>" # adb protocol on stingray/wingray (Xoom) SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", ATTR{idProduct}=="70a9", MODE="0600", OWNER="<username>" # fastboot protocol on stingray/wingray (Xoom) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="708c", MODE="0600", OWNER="<username>" # adb protocol on maguro/toro (Galaxy Nexus) SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0600", OWNER="<username>" # fastboot protocol on maguro/toro (Galaxy Nexus) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e30", MODE="0600", OWNER="<username>" # adb protocol on panda (PandaBoard) SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d101", MODE="0600", OWNER="<username>" # adb protocol on panda (PandaBoard ES) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="d002", MODE="0600", OWNER="<username>" # fastboot protocol on panda (PandaBoard) SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d022", MODE="0600", OWNER="<username>" # usbboot protocol on panda (PandaBoard) SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d00f", MODE="0600", OWNER="<username>" # usbboot protocol on panda (PandaBoard ES) SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d010", MODE="0600", OWNER="<username>" # adb protocol on grouper/tilapia (Nexus 7) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e42", MODE="0600", OWNER="<username>" # fastboot protocol on grouper/tilapia (Nexus 7) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e40", MODE="0600", OWNER="<username>" # adb protocol on manta (Nexus 10) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee2", MODE="0600", OWNER="<username>" # fastboot protocol on manta (Nexus 10) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee0", MODE="0600", OWNER="<username>"
推奨方法は、ファイル/etc/udev/rulesを作成することです.d/51-android.rules(rootユーザーの下)は、以下の内容をこの価格にコピーし、は自分でUSB接続された携帯電話の実際の所有者に置き換えなければならない.この新しいrulesはあなたのデバイスが次に挿入されるときに機能しなければならないので、新しいデバイスを挿入する必要があります.
キャッシュの設定
このccacheコンパイルツールを使用するためにこのbuildを選択的に伝えることができます.ccacheはコンパイラキャッシュとしてrebuildを高速化するために使用できます.「make clean」をよく使うか、異なるbuild productの間でよく使うなら、キャッシュを設定するのがいいです.
次の文をあなたのに置きます.bashrcなどの場所.export USE_CCACHE=1
デフォルトでは、キャッシュは~//に保存する.ccache.もしあなたのホームディレクトリがNFS上または他の非ローカルファイルシステム上にあるならば、あなたもあなたの必要があります.bashrcでこのディレクトリを指定しました.export CCACHE_DIR=<path-to-your-cache-directory>
このキャッシュの推奨サイズは50 GB-100 GBです.ソースコードをダウンロードしたら、次のコマンドを実行する必要があります.prebuilts/misc/linux-x86/ccache/ccache -M 50G
Sandwich(4.0.x)以上のバージョンを構築している場合、ccacheは異なる場所にあります.prebuilt/linux-x86/ccache/ccache -M 50G
この設定はCCACHE_に格納されますDIR上では持続的です.
個別の出力ディレクトリの使用
デフォルトでは、各コンストラクション出力はout/のソースツリーに一致するサブディレクトリに保存されます.
複数のストレージデバイスがあるマシンでは、コードファイルとoutputを異なるパーティションで構築するとより高速になります.outputを速度最適化されたファイルシステムに配置すると、不安定なファイルシステムではなく、すべてのファイルシステムがクラッシュすると再作成できるため、追加のパフォーマンス向上をもたらすことができます.
これを設定するために、環境変数OUT_を設定できます.DIR_COMMON_BASEはあなたのoutputディレクトリをどこに置くかを指定します.export OUT_DIR_COMMON_BASE=<path-to-your-out-directory>
各ソースツリーブランチに対応するoutputディレクトリの名前にも一定のルールがあります.次のようになります.
たとえば、/source/master 1や/source/master 2などのソースツリー構造があり、OUT_DIR_COMMON_BASEが/outputに設定されると、outputディレクトリは/output/master 1および/output/master 2となる.
以下の説明は、すべてのブランチに適用され、メインにも適用されます.
Androidコンパイルの定期テストはUbuntu LTS(10.04)で行われていますが、ほとんどのリリース版にはAndroidコンパイル作業に必要なコンパイルツールがあるはずです.
Android 2を行うなら3.xと以上のバージョンのプライマリブランチのコンパイル作業では、あなたのシステムは64ビットでなければなりません.さらに古いAndroidバージョンでは、32ビットシステムでコンパイルできます.
JDKのインストール
最新バージョンのAndroidソースコンパイル環境に必要なJavaバージョンは7.UbuntuではOpenJDKを使用します.
Java 7:最新バージョンのAndroid
$ sudo apt-get update $ sudo apt-get install openjdk-7-jdk
オプションで、デフォルトのJavaを更新します
$ sudo update-alternatives --config java $ sudo update-alternatives --config javac
Android , Java JDK:
Java 6:Android2.3.x Android4.4
Java 5:Android2.3
必要なパッケージのインストール
Ubuntu Android
$ sudo apt-get install git gnupg flex bison gperf build-essential \ zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \ libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \ libgl1-mesa-dev g++-multilib mingw32 tofrodos \ python-markdown libxml2-utils xsltproc zlib1g-dev:i386 $ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
USBアクセスの設定
# adb protocol on passion (Nexus One) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e12", MODE="0600", OWNER="<username>" # fastboot protocol on passion (Nexus One) SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0fff", MODE="0600", OWNER="<username>" # adb protocol on crespo/crespo4g (Nexus S) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e22", MODE="0600", OWNER="<username>" # fastboot protocol on crespo/crespo4g (Nexus S) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e20", MODE="0600", OWNER="<username>" # adb protocol on stingray/wingray (Xoom) SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", ATTR{idProduct}=="70a9", MODE="0600", OWNER="<username>" # fastboot protocol on stingray/wingray (Xoom) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="708c", MODE="0600", OWNER="<username>" # adb protocol on maguro/toro (Galaxy Nexus) SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0600", OWNER="<username>" # fastboot protocol on maguro/toro (Galaxy Nexus) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e30", MODE="0600", OWNER="<username>" # adb protocol on panda (PandaBoard) SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d101", MODE="0600", OWNER="<username>" # adb protocol on panda (PandaBoard ES) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="d002", MODE="0600", OWNER="<username>" # fastboot protocol on panda (PandaBoard) SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d022", MODE="0600", OWNER="<username>" # usbboot protocol on panda (PandaBoard) SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d00f", MODE="0600", OWNER="<username>" # usbboot protocol on panda (PandaBoard ES) SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d010", MODE="0600", OWNER="<username>" # adb protocol on grouper/tilapia (Nexus 7) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e42", MODE="0600", OWNER="<username>" # fastboot protocol on grouper/tilapia (Nexus 7) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e40", MODE="0600", OWNER="<username>" # adb protocol on manta (Nexus 10) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee2", MODE="0600", OWNER="<username>" # fastboot protocol on manta (Nexus 10) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee0", MODE="0600", OWNER="<username>"
推奨方法は、ファイル/etc/udev/rulesを作成することです.d/51-android.rules(rootユーザーの下)は、以下の内容をこの価格にコピーし、
キャッシュの設定
このccacheコンパイルツールを使用するためにこのbuildを選択的に伝えることができます.ccacheはコンパイラキャッシュとしてrebuildを高速化するために使用できます.「make clean」をよく使うか、異なるbuild productの間でよく使うなら、キャッシュを設定するのがいいです.
次の文をあなたのに置きます.bashrcなどの場所.
export USE_CCACHE=1
デフォルトでは、キャッシュは~//に保存する.ccache.もしあなたのホームディレクトリがNFS上または他の非ローカルファイルシステム上にあるならば、あなたもあなたの必要があります.bashrcでこのディレクトリを指定しました.
export CCACHE_DIR=<path-to-your-cache-directory>
このキャッシュの推奨サイズは50 GB-100 GBです.ソースコードをダウンロードしたら、次のコマンドを実行する必要があります.
prebuilts/misc/linux-x86/ccache/ccache -M 50G
Sandwich(4.0.x)以上のバージョンを構築している場合、ccacheは異なる場所にあります.
prebuilt/linux-x86/ccache/ccache -M 50G
この設定はCCACHE_に格納されますDIR上では持続的です.
個別の出力ディレクトリの使用
デフォルトでは、各コンストラクション出力はout/のソースツリーに一致するサブディレクトリに保存されます.
複数のストレージデバイスがあるマシンでは、コードファイルとoutputを異なるパーティションで構築するとより高速になります.outputを速度最適化されたファイルシステムに配置すると、不安定なファイルシステムではなく、すべてのファイルシステムがクラッシュすると再作成できるため、追加のパフォーマンス向上をもたらすことができます.
これを設定するために、環境変数OUT_を設定できます.DIR_COMMON_BASEはあなたのoutputディレクトリをどこに置くかを指定します.
export OUT_DIR_COMMON_BASE=<path-to-your-out-directory>
各ソースツリーブランチに対応するoutputディレクトリの名前にも一定のルールがあります.次のようになります.
たとえば、/source/master 1や/source/master 2などのソースツリー構造があり、OUT_DIR_COMMON_BASEが/outputに設定されると、outputディレクトリは/output/master 1および/output/master 2となる.