在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
注:AS 肯定会提示报错,因为ActivityTaskManagerService用到的很多包或者变量都找不到,
这个不影响,我们不需要编译工程
3.点击工具栏的AVD ,启动一个API-32的模拟器
(如果没有,则可以下载一个)
4.在ActivityTaskManagerService 设置断点
debug point.PNG5.工具栏点击 Attach Debugger to Android Proccess (或者点击Run ->)
attach debug.PNG然后选择进程: system_process
6.点击模拟器任意一个应用启动
则可以在线调试了
debug stack.PNG
网友评论