Android Studio 在线调试Framework代码

在App 开发过程中,对于App调试相对简单,仅需要设置断点,然后启动AS的Debugger就可以了。
同样,对于Android Framework 的代码,我们也是可以利用AS 进行在线调试的,
因为有时想确认Framework流程(例如启动Activity)下某个变量的值,要编译Framework代码再push进设备就相当麻烦。
这里,我们假设要确认启动应用时,start activity的一些细节,要调试ActivityTaskManagerService代码

一、环境:

1.Android Studio 2020.3.1版本
2.SDK : android-32
3.模拟器: Android Studio 下载的API-32的设备

二、调试过程

1.AS新建一个简单的项目

其中app/build.gradle 需要定义SDK

android {
    compileSdk 32
    defaultConfig {
        applicationId "com.example.android12debug"
        //...
        targetSdk 32
        //...
    }

2.将要调试的Framework代码拷贝到工程中。

例如 ActivityTaskManagerService.java

则需要根据该文件的包名, 先新建文件目录 com.android.server.wm,在把文件放进去
package.PNG

注:AS 肯定会提示报错,因为ActivityTaskManagerService用到的很多包或者变量都找不到,
这个不影响,我们不需要编译工程

3.点击工具栏的AVD ,启动一个API-32的模拟器

(如果没有,则可以下载一个)

4.在ActivityTaskManagerService 设置断点

debug point.PNG

5.工具栏点击 Attach Debugger to Android Proccess (或者点击Run ->)

attach debug.PNG

然后选择进程: system_process

choose process.PNG

6.点击模拟器任意一个应用启动

则可以在线调试了


debug stack.PNG

你可能感兴趣的:(Android Studio 在线调试Framework代码)