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.再次查看函数的源码,是不是代码就出来了.