AOSPのダウンロードと構築

AOSP(Android Open Source Project)の構築方法についての説明を共有することにしました。この手順は、Android内で何かを見たい、場合によってはシステム開発を行いたい人に役立ちます。いずれにせよ、この知識はAndroid自体を理解するのに役立ちます。そのために、私はAOSPを構築することにしました。



エレメンタリー5.1OS Ubuntu 18.04 LTS(bionic)でプロジェクトをビルドし、MacOSでビルドしようとしましたが、失敗しました。ソースとアセンブリには、200 GBのハードディスクスペースが必要です(SSDよりも優れており、通常のパフォーマンスでは大幅に低下します)。また、コンピューターの「弱い」構成のせいもあって、ダウンロードして組み立てるのに約20時間多くの時間を費やしました。8 GBのRAMしかインストールしていませんが、スワップのサイズを16GBに増やしました。



AOSPを読み込んでいます



ダウンロードとビルドに必要なパッケージをインストールします。



sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig


フォルダを作成し、リポジトリユーティリティをダウンロードして、ソースコードをダウンロードします



mkdir aosp #     
cd aosp

curl https://storage.googleapis.com/git-repo-downloads/repo > repo
chmod a+x repo


AOSPソースは、独自のgitリポジトリを持つ個別のプロジェクトで構成されています。リポジトリを使用すると、すべてのプロジェクトのダウンロード全体を簡素化し、必要なフォルダに配置できます。



リポジトリの初期化



./repo init -b android-10.0.0_r45 --depth 1 -u https://android.googlesource.com/platform/manifest


パラメーター:



  • -u-マニフェストを含むgitリポジトリのURL
  • -b-ブランチ(現時点で最新)
  • —depth — ( , , )


Android 10. develop master, .



AOSP



./repo sync -c  -j $(nproc) --no-tags --no-clone-bundle


:



  • -c — ( — android-10.0.0_r45)
  • -j — ,
  • —no-tags —
  • —no-clone-bundle — clone.bundle ( , , bundle),


—no-clone-bundle , , 404

, repo , : https://source.android.com/setup/develop/repo





:



source build/envsetup.sh




lunch aosp_x86_64-eng


x86_64 — , Generic x86_64 , Nexus , https://source.android.com/setup/build/building#choose-a-target



eng — ( engineering), .



java Heap size, , StackOverflow :



export _JAVA_OPTIONS="-Xmx4g"


.bashrc

, :



USE_CCACHE=1 CCACHE_DIR=ccache make -j $(nproc)


CCACHE, , . "" - 16 .



, :



emulator -show-kernel


-show-kernel —



Enter,



,

エミュレータ



IDE



IDE, IDEA. :



mmm development/tools/idegen


AOSP ,



development/tools/idegen/idegen.sh


IDEA "". . IDEA , Android



development/tools/idegen/intellij-gen.sh frameworks/base




cat .repo/project.list


base.iml ( frameworks/base) IDEA. Java, java , AOSP- .



プロジェクトでのJavaの設定





monitor



 ~/Android/Sdk/tools/lib/monitor-x86_64/monitor


jre

sudo apt install openjdk-8-jre-headless

, . monitor- /8700, , IDEA.

system_process. .



monitor AOSP

Androidからモニター



プロジェクトで、新しいリモート構成を追加し、ポート8700のみを指定します。接続するのはこのポートです



リモート構成をIDEAに追加



デバッグの実行(実行→デバッグ)



すべてが接続されていることを確認するには、frameworks / base / services / core / java / com / android / server / wm /ActivityTaskManagerService.javaファイルにブレークポイントを次のメソッドに配置します。



// line 1040
int startActivityAsUser(IApplicationThread caller, String callingPackage,
            Intent intent, String resolvedType, IBinder resultTo, String resultWho, int requestCode,
            int startFlags, ProfilerInfo profilerInfo, Bundle bOptions, int userId,
            boolean validateIncomingUser) {
//...
}


エミュレータで任意のアプリケーションを実行します(例:設定)。



これで、すべてを実験する準備が整いました。




All Articles