昨天我才發現,原來在Android Studio中能夠很輕鬆得調試Android源碼java
在Android Studio中裝一個插件: ADB Ideaandroid
這個插件的功能,其實就是利用adb實現一些經常使用的操做:ide
若是使用上面這些功能:Tools->Android->ADB Idea menu測試
在Android Studio中隨便新建一個項目,名稱隨便取.而後targetSdkVersion選擇你手機或者模擬器的安卓版本.idea
而後運行到手機或者模擬器上.spa
這裏的手機最好是選取Pixel一類的測試機,畢竟是谷歌的親兒子.或者用福官方或者Genymotion模擬器也行.國內的源碼都是被廠商定製過的,好多東西都被修改過,調試的時候可能會出現Source code does not match the bytecode
.插件
我這裏隨便選擇一個,好比View的源碼.雙擊Shift,輸入View,點進去(若是沒有出現View相關的源碼,記得勾選include non-project items).我這裏選擇隨便找個方法,好比measure方法.我在measure方法的左側打上多個斷點3d
而後這樣操做,選擇adb idea的ADB Restart App With Debugger
菜單調試
來了,老哥,接下來AS會停在你剛剛打的斷點上,而後咱們就能夠像平時那樣調試了code
你甚至能夠選中某個變量,而後按F2鍵,進行修改它的值
Source code does not match the bytecode
問題有時候咱們想用華爲或者小米手機,而後也想調試一下,怎麼說? 那確定是會遇到Source code does not match the bytecode
問題的.咱們試着解決一下.
這個時候先把上面demo運行到這個小米手機上.而後咱們看View的源碼,它的包名是
package android.view;
複製代碼
咱們在demo中也建一個這樣的包名,而後把View的源碼所有拷貝過去.
在本身的View文件中,仍是找到measure方法,仍是在左側打不少個斷點,仍是選擇adb idea的ADB Restart App With Debugger
菜單
而後咱們發現一進來就來到了第三行,說明咱們的代碼和小米手機的源碼相差2行(我這裏只是舉個例子,你的手機可能會相差4行或者1行也有可能),由於這個時候應該停留在第一行纔對.
並且仔細觀察,左側的紅圈,上面有一個小勾,表示這一行是能夠調試的.那種灰色圓圈+中間一根灰線,那種表示這一行不能調試(可能在源碼中是註釋).
那麼如何解決這種相差2行的問題呢? 我在measure的註釋裏面,加2行空行.
看到沒,左邊的灰色圓圈消失了,而後全是紅色圓圈,表示調試的行數與源碼上的行數已經一一對應. 這時候咱們按F6,繼續愉快的調試着,進入下一行.