Android调试工具_ Stetho
Stetho是Facebook开源的一个Android平台调试工具。
Stetho能实如今不root手机的情况下,通过Chrome查看App的布局,Sqlite,SharedPreference。Network等。此外它还支持创建Dump文件。
使用Stetho非常重要的一点是要明确Stetho是一个调试工具。理论上是仅仅能用于Debug包的,假设应用到Release包上,你的app的数据就所有暴露出来了。
我们的代码就是以这个为中心来实现的。
核心代码实现:
首先要加入Stetho的引用
Gradle 文件里直接加入Stetho的依赖。
compile 'com.facebook.stetho:stetho-okhttp:1.1.1'
debugCompile 'com.facebook.stetho:stetho:1.1.1'
Stetho的依赖。仅仅须要Debug模式下打包依赖,Release模式打包不须要。
Stetho-okhttp是获取Network数据须要的依赖。因为project中有依赖。仅仅能加入全部模式的依赖。能够參见后面代码。
其次要在特定位置创建一个用于Debug包的AndroidManifest和Application
位置例如以下图所看到的,在主projectsrc文件夹下,创建debug文件夹。假设不须要Dump功能的话仅仅须要新建 AndroidManifest 文件和Application 文件就可以。
AndroidManifest中指明Debug从DebugApplication 启动app。
<?xml version="1.0" encoding="utf-8"? >
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.debug.xsldebug"> <application
tools:replace="android:name"
android:name=".activity.message.XSLDebugApplication" /> </manifest>
DebugApplication继承应用程序原先的的Application,并加入Stetho初始化相关代码。
<pre name="code" class="java">public class XSLDebugApplication extends XSLApplication {
@Override
public void onCreate() {
super.onCreate();
Stetho.initialize(
Stetho.newInitializerBuilder(this)
.enableDumpapp(Stetho.defaultDumperPluginsProvider(this))
.enableWebKitInspector(Stetho.defaultInspectorModulesProvider(this))
.build());
}
private static class XSLDumperPluginsProvider implements DumperPluginsProvider {
private final Context mContext;
public XSLDumperPluginsProvider(Context context) {
mContext = context;
}
@Override
public Iterable<DumperPlugin> get() {
ArrayList<DumperPlugin> plugins = new ArrayList<DumperPlugin>();
for (DumperPlugin defaultPlugin : Stetho.defaultDumperPluginsProvider(mContext).get()) {
plugins.add(defaultPlugin);
}
plugins.add(new XSLDumperPlugin());
return plugins;
}
}
}
经过以上的设置,app已经支持Stetho的基础功能。 能够通过Chrome的设备检查或者 直接訪问 chrome://inspect/#devices 来查找当前连接的设备

假设要想支持查看Network信息,还须要进行下面的额外的配置
使用Okhttp网络框架,能够非常方便的集成Stetho,假设使用的是HttpURLConnection,会麻烦非常多。我们的网络框架已经是Okhttp2.2+。所以非常方便的就能够集成Stetho。
public String okHttpPost(String url, List<BasicNameValuePair> nameValuePairs) {
String result = StringUtils.EMPTY_STRING;
OkHttpClient client = OkHttpClientFactory.createDefault();
if (BuildConfig.DEBUG) { //debug 包里面,加入Stetho-okhttp的支持
client.networkInterceptors().add(new com.facebook.stetho.okhttp.StethoInterceptor());
}
Request request = new Request.Builder()
.url(url)
.post(getFormEncodingBuilder(nameValuePairs).build())
.build();
try {
Response response = client.newCall(request).execute();
if (response.isSuccessful()) {
return response.body().string();
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
仅仅有Debug包才须要支持Stetho。Release包不须要。
可是即使是Release包。这行代码也会Build,所以最開始的依赖里面。Stetho-Okhttp的依赖要是Compile的而不是debugCompile。
效果图预览:
1. 查看布局
2. 查看Sqlite,并支持运行Sql语句。注意:命令行不是打在 Console窗体的哦。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" width="655" height="593">
3. 查看Network请求。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
4. 创建Dump. 事实上这个功能本人没有去尝试,由于没有dump的需求。
杏树林研发 梁建彬
Android调试工具_ Stetho的更多相关文章
- Android调试神器stetho使用详解和改造
本文由云+社区发表 作者:NaOH 概述 stetho是Facebook开源的一个Android调试工具,项目地址:facebook/stetho 通过Stetho,开发者可以使用chrome的ins ...
- Android调试工具之ADB
Android调试工具之ADB 1. 什么是ADB adb的全称为Android Debug Bridge,顾名思义,这个是PC机与Android设备的连接桥.简单的说,就是通过adb ,PC ...
- Android开发_如何调用系统默认浏览器访问
Android开发_如何调用系统默认浏览器访问 2015-10-20 17:53 312人阅读 http://blog.sina.com.cn/s/blog_6efce07e010142w7.htm ...
- Android 调试工具集【转】
1.TraceView1)功能:用于热点分析和性能优化,分析每个函数占用的CPU时间,调用次数,函数调用关系等 2)方法: a)在程序代码中加入追踪开关 import android.os.Debug ...
- android调试工具DDMS的使用详解
具体可见http://developer.android.com/tools/debugging/ddms.html. DDMS为IDE和emultor.真正的android设备架起来了一座桥梁.开发 ...
- Android实战_来电拦截专家
1 项目演示: 2 代码演示: 1)MainActivity类代码: MainActivity类代码: package com.example.phoneinteceptor_one;import j ...
- Android布局_网格布局GirdLayout
自Android4.0版本后新增的GirdLayout网格布局(API 14) <?xml version="1.0" encoding="utf-8"? ...
- Android布局_表格布局TableLayout
一.TableLayout概述 TableLayout表格布局模型以行列的形式管理子控件,每一行为一个TableRow的对象,当然也可以是一个View的对象 二.TableLayout的全局属性 1 ...
- Android布局_帧布局FrameLayout
一.FrameLayout布局概述 在这个布局中,所有的子元素都不能被指定放置的位置,他们统统放于这块区域的左上角,并且后面的子元素直接覆盖在前面的子元素之上,将前面的子元素部分和全部遮挡 如下面的 ...
随机推荐
- BI结构图及自动建表结构图
- 利用CWinThread实现跨线程父子MFC窗口
利用CWinThread实现跨线程父子MFC窗口 MFC对象只能由创建该对象的线程访问,而不能由其他线程访问. 不遵守该准则将导致断言(assertion)或者无法预知的程序行为等运行期错误. 在多线 ...
- QT+创建两个不相干的窗口实现一个显示一个不显示
因为两个窗口互不相干,所以需要重新创建一个窗口类subWidget subWidget.cpp文件 #ifndef SUBWIDGET_H #define SUBWIDGET_H #include & ...
- 【2019.5.19】接口测试及python基础(一)
一.接口 1.什么是接口: 简单的说,接口就是从数据库获取数据. 2.前端和后端: 2.1前端client: 对于web来说,打开的网页,我们所看到的就是前端,前端语言包括html.JS.CSS: ...
- luogu P1462 通往奥格瑞玛的道路--spfa+二分答案
P1462 通往奥格瑞玛的道路 题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡 ...
- 【实验吧】转瞬即逝write up
---恢复内容开始--- 虽然这是很简单的一道题,但这是我第一次拿着题有很清晰的思路,并且脚本也有思路写,拿到文件用ida打开,分析main函数: int __cdecl main(int argc, ...
- 线性结构4 Pop Sequence
02-线性结构4 Pop Sequence(25 分) Given a stack which can keep M numbers at most. Push N numbers in the or ...
- [Android]使用button切换TextView可见和不可见
<Button android:id="@+id/btnTest" android:layout_width="match_parent" android ...
- Android开发——短信电话拦截/接听电话
1.短信拦截 首先需要声明的是,Android4.4版本以上,如果想做到短信拦截,必须成为default sms,把所有短信相关的功能都包揽了,然后再做短信拦截.但这种做法,适配性和兼容性的工作是非常 ...
- Flash学习笔记(01)
一:动画基础原理 二:Flash的动画的制作方式 三:元件与实例的关系 四:Flash实例 可以做出网上常见的网页动画 Flash能为我们做什么 1.网站.贺卡.配乐短片.短剧.游戏.教学 ...