無需編譯源碼,在Android Studio中輕鬆調試Android源碼

昨天我才發現,原來在Android Studio中能夠很輕鬆得調試Android源碼java

0. 準備工做

在Android Studio中裝一個插件: ADB Ideaandroid

這個插件的功能,其實就是利用adb實現一些經常使用的操做:ide

  • ADB Uninstall App
  • ADB Kill App
  • ADB Start App
  • ADB Restart App
  • ADB Clear App Data
  • ADB Clear App Data and Restart
  • ADB Revoke Permissions
  • ADB Start App With Debugger
  • ADB Restart App With Debugger

若是使用上面這些功能:Tools->Android->ADB Idea menu測試

1. 新建一個Demo

在Android Studio中隨便新建一個項目,名稱隨便取.而後targetSdkVersion選擇你手機或者模擬器的安卓版本.idea

而後運行到手機或者模擬器上.spa

這裏的手機最好是選取Pixel一類的測試機,畢竟是谷歌的親兒子.或者用福官方或者Genymotion模擬器也行.國內的源碼都是被廠商定製過的,好多東西都被修改過,調試的時候可能會出現Source code does not match the bytecode.插件

2. 打開想要調試的源碼

我這裏隨便選擇一個,好比View的源碼.雙擊Shift,輸入View,點進去(若是沒有出現View相關的源碼,記得勾選include non-project items).我這裏選擇隨便找個方法,好比measure方法.我在measure方法的左側打上多個斷點3d

image

3. 開始調試

而後這樣操做,選擇adb idea的ADB Restart App With Debugger菜單調試

image

來了,老哥,接下來AS會停在你剛剛打的斷點上,而後咱們就能夠像平時那樣調試了code

image

4. 騷操做

你甚至能夠選中某個變量,而後按F2鍵,進行修改它的值

image

5. 解決Source code does not match the bytecode問題

有時候咱們想用華爲或者小米手機,而後也想調試一下,怎麼說? 那確定是會遇到Source code does not match the bytecode問題的.咱們試着解決一下.

這個時候先把上面demo運行到這個小米手機上.而後咱們看View的源碼,它的包名是

package android.view;
複製代碼

咱們在demo中也建一個這樣的包名,而後把View的源碼所有拷貝過去.

image

在本身的View文件中,仍是找到measure方法,仍是在左側打不少個斷點,仍是選擇adb idea的ADB Restart App With Debugger菜單

image

而後咱們發現一進來就來到了第三行,說明咱們的代碼和小米手機的源碼相差2行(我這裏只是舉個例子,你的手機可能會相差4行或者1行也有可能),由於這個時候應該停留在第一行纔對.

並且仔細觀察,左側的紅圈,上面有一個小勾,表示這一行是能夠調試的.那種灰色圓圈+中間一根灰線,那種表示這一行不能調試(可能在源碼中是註釋).

那麼如何解決這種相差2行的問題呢? 我在measure的註釋裏面,加2行空行.

image

看到沒,左邊的灰色圓圈消失了,而後全是紅色圓圈,表示調試的行數與源碼上的行數已經一一對應. 這時候咱們按F6,繼續愉快的調試着,進入下一行.

相關文章
相關標籤/搜索