使用Android Studio For Platform阅读&调试AOSP源码

王柳  金牌会员 | 2024-9-17 19:43:05 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 659|帖子 659|积分 1977

上一篇文章中,我们编译了AOSP的源码并刷入本身编译的ROM到Pixel 6设备中。本文我们使用Android官方提供的IDE(Android Studio For Platform)来打开AOSP源码,并举行debug调试,这样可以方便我们跟踪底层代码的调用流程。
  1.安装ASFP

ASFP的官网:https://developer.android.com/studio/platform
我们可以在官网直接下载安装,但必要留意的是,目前只有Linux版本,我是使用Ubuntu系统,所以可以正常打开并下载。
按照官网的介绍,Android Studio for Platform (ASfP) 适用于使用 Soong 构建系统举行构建的 Android 开源项目 (AOSP) 平台开发人员。 我们可以简单理解为我们平常开发使用的Android Studio,只是开发面对的不是上层应用而是底层Framework层。
它与我们之前使用的源码查察工具不同,它支持我们在同一IDE中编辑Java、Kotlin和C++,同时支持对AOSP源码的debug调试。
下载后可以使用下面的命令安装:
  1. sudo dpkg -i /path/to/asfp-2023.2.1.20-linux.deb
复制代码
安装这个工具后,我们不光可以用来调试AOSP源码,还可以把它作为正常的Android Studio使用。
2.使用ASFP调试AOSP源码

2.1 导入AOSP源码

调试AOSP源码,必要我们先下载&编译AOSP源码,并拥有一台真机大概模拟器安装了我们编译的镜像。这里可以参考我的上一篇文章一文学会从零搭建编译AOSP源码刷机全流程。
然后我们将我们的AOSP源码导入,导入时必要留意,我们只必要导入我们必要调试的模块即可,这里我们以art模块为例。
选择「Import Asfp Project」,然后按下图填写即可。
必要留意的是Lunch Target,这个值必要与我们之前编译ROM时一致。必要留意的时,编译的Target要是以eng结尾的版本才是可调试的。

点击「Finish」后会举行一次编译,然后开始建立索引,如果你之前编译过,则整个编译过程会比力短,主要是建立索引的过程较长。
索引建立完以后我们就可以举行代码跳转了。

2.2 Debug调试

这里我们使用ASFP新建一个Android工程,编写逻辑点击按钮后触发gc,焦点代码如下:
  1. Runtime.getRuntime().gc()
复制代码
然后我们在aosp/art/runtime/gc/heap.cc的collector::GcType Heap::CollectGarbageInternal()函数中打上断点。
然后我们先安装运行我们的应用,然后在ASFP中选择Attach Debugger to Android Process如下图,然后我们选择本身的App即可。
我们可以选择Debug C++代码大概Java代码大概同时debug(留意:我现实测试选择Dual(Java + Native)断点会出现非常),分别Debug Java和C++则正常,目前原因还未知,但对我们常规的调试根本是够用的。

我们点击触发C++代码后,可以看到如下断点掷中,剩下的步骤就跟常规Debug一致了。

如果你只是Debug Java代码,你只必要使用平凡的Android工程,将targetSdk设置为你的ROM系统版本即可正常Debug,并且代码行号也是对应上的,这样对系统资源的斲丧会更低。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王柳

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表