下载并构建AOSP

我决定分享有关如何构建AOSP(Android开放源代码项目)的说明。对于那些希望在Android内部查看内容并可能进行系统开发的人员来说,此说明将非常有用。无论如何,这些知识对于理解Android本身都是有用的,为此我决定构建AOSP。



我在基本5.1操作系统Ubuntu 18.04 LTS(仿生)上构建项目,我试图在MacOS上构建它,但失败了。对于源代码和程序集,您需要200 GB的硬盘空间(比SSD更好,因为在正常性能下它会大量下垂)。我还花了很多时间来下载和组装大约20个小时,部分原因是计算机的“弱”配置。我只安装了8 GB的RAM,但是将交换的大小增加到16 GB。



加载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


创建一个文件夹并下载repo实用程序以下载源代码



mkdir aosp #     
cd aosp

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


AOSP源代码由具有各自git存储库的单独项目组成,repo允许您简化所有项目的整个下载并将它们放在必要的文件夹中。



初始化仓库



./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