AOSP(二)AndroidStudio导入Android系统源码

前言

下载了AOSP源码,那我们要考虑如果开发和查看,查看的工具有Source Insight,开发和查看AndroidStudio和Eclipse,当然选择 Android Studio,Android Studio 是我熟悉且十分强大的工具。问题来了,那么我们如何将 AOSP 源码导入 Android Studio里面?

一、生成源代码工程配置文件

在导入项目之前我们要先保证代码至少成功编译了一次且并未执行make clean命令清除先前编译的内容清除,我们要先使用aosp提供的idegen工具来生成aosp项目的工程配置文件,它位于aosp根目录下的development/tools/idegen/目录

1.1 编译生成idegen.jar

bash 复制代码
source build/envsetup.sh        # 每次新启动电脑都要进入目录初始化编译环境变量一次
mmm development/tools/idegen/   # 编译生成idegen.jar

1.2 生成 android.ipr 和 android.iml

bash 复制代码
./development/tools/idegen/idegen.sh

运行完毕上面的命令之后,就在根目录生成了2个文件:

android.ipr 和 android.iml

二、AOSP导入Android Studio导入代码

2.1 修改Android Studio内存配置

打开System Setings->Memory Setings ->IDE max heap size这个大小调大一点

2.2 修改android.iml文件

sourceFolder : 顾名思义就是包含的文件目录,通常我们只需要留下framework即可,我怕这边保留了framework和packages。 excludeFolder:这个标签自然就是不包含的意思,有什么目录我们不想让Android Studio去管它我们就可以使用这个目录将其排除掉。

为了排除不必要的模块,提高加载速度打开android.iml, 找到excludeFolder属性,我们可以看到默认有14个模块是被排除了,不会被导入的

ini 复制代码
   <excludeFolder url="file://$MODULE_DIR$/./external/emma" />
   <excludeFolder url="file://$MODULE_DIR$/./external/jdiff" />
   <excludeFolder url="file://$MODULE_DIR$/out/eclipse" />
   <excludeFolder url="file://$MODULE_DIR$/external/bluetooth" />
   <excludeFolder url="file://$MODULE_DIR$/external/chromium" />
   <excludeFolder url="file://$MODULE_DIR$/external/icu4c" />
   <excludeFolder url="file://$MODULE_DIR$/external/webkit" />
   <excludeFolder url="file://$MODULE_DIR$/frameworks/base/docs" />
   <excludeFolder url="file://$MODULE_DIR$/out/host" />
   <excludeFolder url="file://$MODULE_DIR$/out/target/common/docs" />
   <excludeFolder url="file://$MODULE_DIR$/out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates" />
   <excludeFolder url="file://$MODULE_DIR$/out/target/product" />
   <excludeFolder url="file://$MODULE_DIR$/prebuilt" />
   <excludeFolder url="file://$MODULE_DIR$/.repo" />

但实际上,整个AOSP代码中,一般我们不会全部需要去关心,我们只需要关心framework模块,因此可以根据自己的需求多去掉一些模块,可以多加如下:

ini 复制代码
<excludeFolder url="file://$MODULE_DIR$/art" />
<excludeFolder url="file://$MODULE_DIR$/bionic" />
<excludeFolder url="file://$MODULE_DIR$/bootable" />
<excludeFolder url="file://$MODULE_DIR$/build" />
<excludeFolder url="file://$MODULE_DIR$/cts" />
<excludeFolder url="file://$MODULE_DIR$/dalvik" />
<excludeFolder url="file://$MODULE_DIR$/developers" />
<excludeFolder url="file://$MODULE_DIR$/development" />
<excludeFolder url="file://$MODULE_DIR$/device" />
<excludeFolder url="file://$MODULE_DIR$/docs" />
<excludeFolder url="file://$MODULE_DIR$/external" />
<excludeFolder url="file://$MODULE_DIR$/hardware" />
<excludeFolder url="file://$MODULE_DIR$/kernel" />
<excludeFolder url="file://$MODULE_DIR$/libcore" />
<excludeFolder url="file://$MODULE_DIR$/libnativehelper" />
<excludeFolder url="file://$MODULE_DIR$/out" />
<excludeFolder url="file://$MODULE_DIR$/pdk" />
<excludeFolder url="file://$MODULE_DIR$/platform_testing" />
<excludeFolder url="file://$MODULE_DIR$/prebuilts" />
<excludeFolder url="file://$MODULE_DIR$/sdk" />
<excludeFolder url="file://$MODULE_DIR$/system" />
<excludeFolder url="file://$MODULE_DIR$/test" />
<excludeFolder url="file://$MODULE_DIR$/toolchain" />
<excludeFolder url="file://$MODULE_DIR$/tools" />

2.3 AndroidStudio打开android.ipr

File - Open...,在项目的AOSP的根目录下找到android.ipr

三、断点调试

真机想调试系统进程需要Root权限,然后利用Magisk等软件修改:ro.debuggable = 1,可以新建模拟器时选择 非 Google Play的64位镜像,也可以得到 ro.debuggable = 1 的设备

3.1 添加调试程序

Add Configurations

3.2 添加SDK

IDE and Project Settings->Project

3.3 修改无依赖JDK

总结

至此,我们的准备工作已经全部完成,后面我们将继续学习Framework、Luanchr和SystemUI进行定制化的开发,如继续学习车载开发,后续文档会持续修改和更新,如果有那边不对或者疑问,我们可以探讨。!

相关推荐
xjt_090118 分钟前
基于 Vue 3 构建企业级 Web Components 组件库
前端·javascript·vue.js
我是伪码农29 分钟前
Vue 2.3
前端·javascript·vue.js
夜郎king1 小时前
HTML5 SVG 实现日出日落动画与实时天气可视化
前端·html5·svg 日出日落
夏幻灵2 小时前
HTML5里最常用的十大标签
前端·html·html5
Mr Xu_2 小时前
Vue 3 中 watch 的使用详解:监听响应式数据变化的利器
前端·javascript·vue.js
未来龙皇小蓝2 小时前
RBAC前端架构-01:项目初始化
前端·架构
程序员agions2 小时前
2026年,微前端终于“死“了
前端·状态模式
万岳科技系统开发2 小时前
食堂采购系统源码库存扣减算法与并发控制实现详解
java·前端·数据库·算法
程序员猫哥_2 小时前
HTML 生成网页工具推荐:从手写代码到 AI 自动生成网页的进化路径
前端·人工智能·html
龙飞052 小时前
Systemd -systemctl - journalctl 速查表:服务管理 + 日志排障
linux·运维·前端·chrome·systemctl·journalctl