在App 開發(fā)過程中,對于App調(diào)試相對簡單皮假,僅需要設(shè)置斷點鞋拟,然后啟動AS的Debugger就可以了。
同樣惹资,對于Android Framework 的代碼贺纲,我們也是可以利用AS 進(jìn)行在線調(diào)試的,
因為有時想確認(rèn)Framework流程(例如啟動Activity)下某個變量的值褪测,要編譯Framework代碼再push進(jìn)設(shè)備就相當(dāng)麻煩猴誊。
這里潦刃,我們假設(shè)要確認(rèn)啟動應(yīng)用時,start activity的一些細(xì)節(jié)懈叹,要調(diào)試ActivityTaskManagerService代碼
一乖杠、環(huán)境:
1.Android Studio 2020.3.1版本
2.SDK : android-32
3.模擬器: Android Studio 下載的API-32的設(shè)備
二、調(diào)試過程
1.AS新建一個簡單的項目
其中app/build.gradle 需要定義SDK
android {
compileSdk 32
defaultConfig {
applicationId "com.example.android12debug"
//...
targetSdk 32
//...
}
2.將要調(diào)試的Framework代碼拷貝到工程中澄成。
例如 ActivityTaskManagerService.java
package.PNG
注:AS 肯定會提示報錯墨状,因為ActivityTaskManagerService用到的很多包或者變量都找不到卫漫,
這個不影響,我們不需要編譯工程
3.點擊工具欄的AVD ,啟動一個API-32的模擬器
(如果沒有歉胶,則可以下載一個)
4.在ActivityTaskManagerService 設(shè)置斷點
debug point.PNG
5.工具欄點擊 Attach Debugger to Android Proccess (或者點擊Run ->)
attach debug.PNG
然后選擇進(jìn)程: system_process
choose process.PNG
6.點擊模擬器任意一個應(yīng)用啟動
則可以在線調(diào)試了
debug stack.PNG