image.png
最初の記事:androidソースコードのコンパイル(ubuntu16.04 64ビット)
第2章:[コンパイル補足(コードのダウンロードとメモリ不足について)](https://www.jianshu.com/p/abb82793dc67)
1. ソースコードをダウンロードします; **** 2。コンパイル環境を構築します; **** 3。ソースコードをコンパイルします; **** 4。実行します。
コンパイルする前に、まずリポジトリツールとgittツールをダウンロードしてインストールします。
Googleは、AOSPプロジェクトのマルチウェアハウス管理にGitを使用しています。
必要性を促進するために、gitステートメントがカプセル化され、リポジトリが形成されます。
$ mkdir source
$ cd source
このフォルダが配置されているディスクスペースは100Gを超える必要があり、コンパイル後に多くのスペースが必要になることに注意してください。
$ repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
Tsinghuaミラーサーバーを使用しました。
$ repo sync
同期時間は非常に長いので、夜寝る前に同期することをお勧めします。数時間かかります。
[AOSPオープンソース](https://android.googlesource.com/)では、メインブランチはUbuntuの長期バージョンを使用して開発およびテストされているため、Ubuntuを使用してコンパイルすることもお勧めします。以下に、これらのandroidバージョンをコンパイルできるUbuntuのさまざまなバージョンを示します。
Androidバージョン | コンパイルに必要なUbuntuの最小バージョン |
---|---|
Android6.0からAOSPマスター | Ubuntu 14.04 |
Android2.3.xからAndroid5.x | Ubuntu 12.04 |
Android1.5からAndroid2.2.x | Ubuntu 10.04 |
対応するsdkバージョン:
Androidバージョン | 必要なJDKバージョンをコンパイルする |
---|---|
AOSPのAndroidメインライン | OpenJDK8 |
Android5.xからandroid6.0 | OpenJDK 7 |
Android2.3.xからAndroid4.4.x | Oracle JDK 6 |
Android1.5からAndroid2.2.x | Oracle JDK 5 |
* 今回はOpenJDK8を使用してください
$ sudo apt-get update
$ sudo apt-get install openjdk-8-jdk
$ sudo apt-get update
$ sudo apt-get install git-core gnupg flex bison gperf build-essential
$ sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386
$ sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache
$ sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
コンパイルターゲットの形式:BUILD-BUILDTYPE。たとえば、上記のaosp_arm-engのBUILDはaosp_armであり、BUILDTYPEはengです。
BUILDは、特定の機能の組み合わせの特定の名前、つまり、コンパイルされたイメージを実行できる環境を指します。その中で、aosp(Android Open Source Project)はAndroidオープンソースプロジェクトを表します。armは、システムがARMアーキテクチャプロセッサで実行されていることを意味します。 、arm64は64ビットarmアーキテクチャを指します。プロセッサ、x86はx86アーキテクチャプロセッサを指します。さらに、特定のNexusデバイスを表す単語がいくつかあります。以下は、一般的に使用されるデバイスコードとコンパイルターゲットです。
$ source build/envsetup.sh
$ lunch aosp_arm64-eng
============================================
PLATFORM_VERSION_CODENAME=Q
PLATFORM_VERSION=Q
TARGET_PRODUCT=aosp_arm64
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_ARCH=arm64
TARGET_ARCH_VARIANT=armv8-a
TARGET_CPU_VARIANT=generic
TARGET_2ND_ARCH=arm
TARGET_2ND_ARCH_VARIANT=armv8-a
TARGET_2ND_CPU_VARIANT=generic
HOST_ARCH=x86_64
HOST_2ND_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-4.4.0-131-generic-x86_64-Ubuntu-16.04.5-LTS
HOST_CROSS_OS=windows
HOST_CROSS_ARCH=x86
HOST_CROSS_2ND_ARCH=x86_64
HOST_BUILD_TYPE=release
BUILD_ID=PI
OUT_DIR=out
============================================
$ make -j8
コンパイル速度を向上させるために、-jパラメーターを使用してコンパイルに参加するスレッドの数を設定します。たとえば、ここでは、同時にコンパイルする8つのスレッドを設定します。
コンパイルに関係するスレッドが多いほど、通常はマシンのカップのコア(現在のcpuのコアの2倍であるcore * 2)に従って決定されることに注意してください。
正常に実行された結果:
image.png
これを4時間コンパイルしました。 。 。 。
$ source build/envsetup.sh
$ lunch
昼食時に、設定したターゲットバージョンを選択します。
$ emulator
動作結果:
image.png
なぜ黒い画面なのかわかりませんが、とにかくコンパイルは問題ありません。勉強を続けてください! !
Recommended Posts