android監控源碼
『壹』 鎬庢牱鏌ョ湅 Android APP婧愪唬鐮
瑕佹煡鐪婣ndroid APP鐨勬簮浠g爜錛屼綘鍙浠ラ氳繃浠ヤ笅鍑犵嶆柟娉曪細
1. 浠庡紑婧愬鉤鍙拌幏鍙栵細濡傛灉APP鏄寮婧愮殑錛屼綘鍙浠ュ湪濡侴itHub銆丟itLab絳変唬鐮佹墭綆″鉤鍙頒笂鎼滅儲璇APP鐨勬簮浠g爜銆
2. 浣跨敤鍙嶇紪璇戝伐鍏鳳細瀵逛簬闈炲紑婧愮殑APP錛屼綘鍙浠ュ皾璇曚嬌鐢ㄥ弽緙栬瘧宸ュ叿濡侫pktool鍜孞D-GUI鏉ュ弽緙栬瘧APK鏂囦歡銆傝繖浜涘伐鍏峰彲浠ュ皢APK鏂囦歡杞鎹涓哄彲璇葷殑婧愪唬鐮佸艦寮忥紝浣嗚鋒敞鎰忥紝鍙嶇紪璇戝緱鍒扮殑浠g爜鍙鑳戒笉瀹屽叏絳夊悓浜庡師濮嬫簮浠g爜錛屼笖鍙鑳藉寘鍚緙栬瘧鍜屼紭鍖栧悗鐨勪唬鐮併
3. 鍒╃敤璋冭瘯宸ュ叿錛氬傛灉浣犳嫢鏈堿PP鐨凙PK鏂囦歡錛屽苟涓斿笇鏈涘湪榪愯屾椂鏌ョ湅婧愪唬鐮侊紝浣犲彲浠ヤ嬌鐢ˋndroid Studio鐨勮皟璇曞姛鑳姐傞氳繃璋冭瘯錛屼綘鍙浠ュ湪APP榪愯屾椂鏌ョ湅鍜屼慨鏀逛唬鐮侊紝浣嗚繖闇瑕佷竴瀹氱殑緙栫▼鐭ヨ瘑鍜岀粡楠屻
4. 鑱旂郴寮鍙戣咃細濡傛灉浣犲規煇涓獮PP鐨勬簮浠g爜鎰熷叴瓚o紝浣嗘棤娉曢氳繃浠ヤ笂鏂規硶鑾峰彇錛屼綘鍙浠ュ皾璇曡仈緋誨紑鍙戣呮垨寮鍙戝洟闃燂紝璇㈤棶浠栦滑鏄鍚︽効鎰忓垎浜婧愪唬鐮併傛湁浜涘紑鍙戣呭彲鑳戒細鎰挎剰鍒嗕韓浠栦滑鐨勪唬鐮侊紝鐗瑰埆鏄瀵逛簬閭d簺鏁欒偛鎴栫爺絀剁洰鐨勭殑璇鋒眰銆
鍦ㄦ煡鐪婣ndroid APP婧愪唬鐮佹椂錛岃風『淇濅綘閬靛畧鐩稿叧鐨勬硶寰嬪拰閬撳痙瑙勮寖銆傛湭緇忚稿彲鐨勮幏鍙栧拰浣跨敤浠栦漢鐨勬簮浠g爜鍙鑳戒鏡鐘鐭ヨ瘑浜ф潈錛屽洜姝よ風『淇濅綘鐨勮屼負鍚堟硶鍚堣勩傚悓鏃訛紝浜嗚В婧愪唬鐮佸苟涓嶆剰鍛崇潃浣犲彲浠ラ殢鎰忎慨鏀瑰拰鍒嗗彂APP錛岄櫎闈炰綘鑾峰緱浜嗗紑鍙戣呯殑鏄庣『鎺堟潈銆
鎬諱箣錛屾煡鐪婣ndroid APP婧愪唬鐮佺殑鏂規硶鍥燗PP鐨勫紑婧愭儏鍐佃屽紓銆傚逛簬寮婧怉PP錛屼綘鍙浠ョ洿鎺ヤ粠浠g爜鎵樼″鉤鍙拌幏鍙栨簮浠g爜錛涘逛簬闈炲紑婧怉PP錛屼綘鍙浠ュ皾璇曚嬌鐢ㄥ弽緙栬瘧宸ュ叿鎴栬皟璇曞伐鍏鋒潵鏌ョ湅婧愪唬鐮侊紱褰撶劧錛屼綘涔熷彲浠ヨ仈緋誨紑鍙戣呭繪眰甯鍔┿傛棤璁洪噰鐢ㄥ摢縐嶆柟娉曪紝閮借風『淇濅綘鐨勮屼負鍚堟硶鍚堣勶紝騫跺皧閲嶄粬浜虹殑鐭ヨ瘑浜ф潈銆
『貳』 Android源碼追蹤—android:onClick
之前對源碼的閱讀,總是用時一通亂七八糟的跳轉,以學會使用為目的;過了一段時間,就忘記了,因此打算將一些源碼的閱讀經歷記錄下來,也通過敲一遍的帶喚過程,加深理解。
最開始,用一個比較簡單的例子來小試牛刀吧
對於View(Button、TextView等)的點擊事件,常用的寫法是通過 findViewById 獲取View的實例,然後通過 setOnClickListener 設置監聽事件,比如我們有如下Button控制項。
設置點擊事件(假設在Activity中)
但是還有一種寫法是在xml布局中通過android:onClick屬性直接指定嫌行鋒點擊執行的函數。
【思考】
首先我們知道諸如 android:xxx 之類的屬性是會在某個attrs文件中定義的,此處的 android:onClick 是View的屬性,定義在如下文件中。
在View的構造函數中,會解析出此屬性的值。
看這里, 如果變數handlerName不為空,就會為此View設置點擊事件了 ,這個handlerName就是onClick屬性的值doSubmit,但這個點擊事件,並不是我們所熟悉的OnClickListener。
進一步看看這個 DeclaredOnClickListener 類
DeclaredOnClickListener 實現了 OnClickListener ,其中重點是參數 mResolvedMethod 和 mResolvedContext 。
在onClick事件中最終通過反射 mResolvedMethod.invoke(mResolvedContext, v); 執行了doSubmit方法。
doSubmit的訪問許可權是否可以設置為private呢?
答案:不可以,因為源碼中沒有調用 mMethod.setAccessible(true); 注入所有修飾符。
其實在onClick屬性的注釋中就已經芹晌說明了。
『叄』 如何調試跟蹤Android Framework源代碼
本文講解如何在Eclipse中導入Android源代碼(包括Framework和Application的代碼),然後通過模擬器或真機跟蹤/調試Android的java代碼,區別於一般基於Android SDK的純應用開發,這里可以跟蹤/調試Framework中的代碼。
一、准備工作
確保機器上已經安裝並配置下列軟體環境:JDK/ Eclipse / Android SDK / ADT
即,機器上已經安裝了Eclipse下Android應用開發所需的環境。如果還未配置,移步《搭建Windows下Android應用開發環境——Eclipse/Android/ADT》。
另外,為了跟蹤調試Android源碼,你還需要有Android源碼,並有源碼的編譯環境,可以是:
虛擬機環境 虛擬機中安裝Linux,Linux下編譯Android源碼。此環境下,如果要在宿主機的Eclipse中調試,還需要把Android的源碼路徑共享出來,宿主機可訪問到;
有單獨的可編譯Android的網路環境 在你的客戶端的機器上訪問伺服器共享出來的Android的源碼路徑;
Linux環境下直接通過Eclipse跟蹤調試本機上的Android源碼。
-Xms40m
-Xmx384m
-Xms128m
-Xmx512m
注意:不管哪種工作方式,Android源碼要都是已經編譯過的,且編譯時採用的是Eng模式(vs User mode)。編譯Android Platform和Kernel的過程,可參考《Ubuntu10.10下編譯Android2.2平台》及《Ubuntu10.10下編譯Android2.2內核》。
二、基本設置
准備工作完畢之後,現在做一些基本的設置。
1. 把Android源碼路徑<Android_ROOT>下的developmentideeclipse中的.classpath文件復制到<Android_ROOT>下;如果需要在模擬器中進行調試的話,需要復制三個img(具體方法見http://wenku..com/view/26d9063c87c24028915fc366.html)
2. 修改Eclipse的設置
修改eclipse.ini文件,更改下列內容:
[plain]view plain
改為:
[java]view plain
這里增大最小Java堆大小到128MB,增大最大Java堆大小到512MB。
三、Eclipse中創建工程
1. File > New > Java Project
『肆』 如何用Android Studio查看build.gradle源碼
我們來舉個例子,就像系列一的博客里介紹的 build.gradle 里有這樣一段代碼:
藉助 as,我們甚至可以很容易的查到 android{...} 這個括弧里能使用的喊敗方法都有哪些,如果要看各自的作用是干什麼的,再繼續點進去查看注釋就行了。是不是發現,我們在 build.gradle 里的 android{...} 使用過的標簽名原來都在這里的啊。
以後就算是再碰到大神的 build.gradle 文件里各種沒看見過的標簽名,不用再擔心看不懂了。不懂就看源碼注釋嘛,so easy!
當然,大神的 build.gradle 文件里還是會出現一些 groovy 代碼或者是 task 之類的,這些就不是 gradle 源碼里能夠查到的了,需要稍微了解一下 groovy 和 gradle 語言的基礎,有興趣的可以繼續閱讀下我寫的這個系列裡的相關博客,當然能力不夠,如果你希望更好的學習,網上資料也很多。
『伍』 怎麼在windows下查看android源碼
先下載源碼,最新為2.2
2.找SDK目錄
安裝的SDK到我的目錄E:\
E:\android-sdk-windows\
找到目錄 結構如下:
E:\android-sdk-windows\
-platforms
+android-3(android-1.5)
+android-4(android-1.6)
………..
+android-6(android-2.0)
+android-7(android-2.1)
+android-8(android-2.2)
最高的android-8對應的是SDK2.2。
在android-8文件中新建sources然後把下載好的源碼(android-2.2-froyo-src.zip)解壓到這個文件下。
3.改配置文件(修改紅色部分)
找到android-8目錄下的文件source.properties並將其修改如下:
### Android Tool: Source of this archive.
#Wed Oct 13 14:00:16 CST 2010
Pkg.Desc=Android SDK Platform. 2.2_r1
Pkg.UserSrc=true
Archive.Arch=ANY
Platform.Version=2.2
Pkg.DescUrl=sources
Archive.Os=WINDOWS
Pkg.SourceUrl=sources
Pkg.Revision=2
AndroidVersion.ApiLevel=8
大公告成,重啟Eclipse,按ctril+關鍵字、類名 或者按F3就可以點進去了,可以看到源碼了吧!
PS:已經下載好的源碼,可以把core目錄放入到sources中即可。。。
『陸』 怎樣查看 Android APP 源代碼
用壓縮軟體打開apk文件,解壓出根目錄中的classes.dex文件
使用cmd ,dex2jar.bat classes.dex命令將classes.dex轉換為jar
再用jd-gui打開該jar就可以查看源碼了,如果apk安全性好的話,有些代碼是看不到的
『柒』 怎樣查看 Android APP 源代碼
需要把反編譯的apk存放到apktools同級文件夾目錄下,然後運行要查看的安裝包,具體操作如下:
1、首先把反編譯的apk存放到apktools同級文件夾目錄下,如下圖所示。
『捌』 怎樣查看 Android APP源代碼
將apk文件拷貝至sdcard上。
命令順序如下:
進入Android sdk文件夾/tools目錄下
輸入adb shell
輸入su
輸入cd data
輸入cd app
這時就可以看到你安裝的所有的apk文件。輸入cp 空格 對應的apk 空格 /sdcard/
這樣就將apk文件拷貝出來了。
將apk文件後綴直接變成rar格式,可以看到熟悉的目錄結構了,
其中xml文件打開後都是二進制的,無法查看。
這時就用到了一個android4me的AXMLPrinter2工具。(請自行網路搜索)
輸入以下命令,將xml文件解析出來
java -jar AXMLPrinter2.jar showtimes_list.xml
此命令是在命令行中查看此showtimes_list.xml
將showtimes_list.xml生成xml文件,則輸入以下命令:
java -jar AXMLPrinter2.jar showtimes_list.xml > h.xml
目前進行到這一步,只能看到xml文件的內容,其工程中的java源文件還是看不到,看目錄結構下有一個classes.dex文件,我們需要將dex文件變為jar文件。
這里用到了另一個工具dex2jar。(自行搜索下載)
在Windows下解壓之後的目錄如下圖所示:
在命令行中,進入到此目錄下:
在Windows下,輸入以下命令:
dex2jar.bat c:classes.dex
運行完之後,在C盤會多一個classes.dex.dex2jar.jar文件,此文件就是我們需要的jar文件。
利用jd-gui,將jar文件反向工程為java代碼。(請自行搜索下載)
它分為Windows、Linux、和max三個版本,這里我下載的是Windows版本的。
解壓之後,雙擊運行exe文件,選擇classes.dex.dex2jar.jar文件,相應的jar文件中的Java文件就被反向工程顯示出來了!
『玖』 如何查看android sdk源碼
一種辦法是自帶SDK管理工具更新:
另外的辦法就是:
第一步:查看當前工程的SDK版本;
2.打開工程,查找任意一個函數,點擊右鍵,選擇查看源碼.
3.提示找不到java源文件,這里需要手動添加源文件;
4.按圖選擇.這里還沒有source的文件夾..所以..去下載相關平台的SDK的java源碼;
5.根據SDK版本下載對應的源碼,比如2.1的.
6.在SDK平台目錄下,新建一個sources文件夾;
7.把源碼直接解壓到當前文件夾下;
8.再次選擇查到源碼,並選擇sources文件夾;
9.eclipse會自動導入;
10.再次查看函數的源碼,是不是代碼就出來了.