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" width="655" height="593">

3. 查看Network请求。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >

4. 创建Dump. 事实上这个功能本人没有去尝试,由于没有dump的需求。

杏树林研发  梁建彬

时间: 2024-08-15 10:25:13

Android调试工具_ Stetho的相关文章

Android调试神器stetho使用详解和改造

概述 stetho是Facebook开源的一个Android调试工具,开发者可以使用chrome的inspect功能,对Android应用进行调试和查看. stetho提供的功能主要有: Network Inspection:网络抓包,如果你使用的是当前流行的OkHttp或者Android自带的 HttpURLConnection,你可以轻松地在chrome inspect窗口的network一栏抓到所有的网络请求和回包,还用啥Postman,还用啥Fiddler哦(开个玩笑,一些场合还是需要用

Android调试工具及方法

转自:http://www.cnblogs.com/feisky/archive/2010/01/01/1637566.html Logcat Dump一份系统消息的日志.这些消息包括模拟器抛出错误时的堆栈跟踪. Android Log 一个记录日志的类,用来将消息写入模拟器上的日志文件中.如果你在DDMS上运行logcat的话你可以就实时查看消息.在你的代码中加入几个写日志方法的调用.为了使用Log类,你只需要调用Log.v()(详细),Log.d()(debug),Log.i()(infor

Android调试工具 adb

Android调试工具 ADB ADB Android Debug Bridge. ADB工具位于Android SDK安装目录的platform-tools子目录. 主要功能: 运行设备的shell(命令行) 管理模拟器或设备的端口映射 计算机和设备之间上传/下载文件 将本地apk软件安装至模拟器或android设备 常用命令: adb connect 192.168.1.103 adb devices adb remount adb install [-r] *.apk adb shell

Android调试工具 stetho

项目地址:https://github.com/facebook/stetho 在android studio中使用: 1. 添加jar  (下载地址:https://github.com/facebook/stetho/releases/tag/v1.1.0  ) (需要 stetho-1.1.0.jar    ?和  stetho-urlconnection-1.1.0.jar) 添加完成后在bulid.gradle中显示: 2 在你的application类中添加:Stetho.initi

Android 调试工具集【转】

1.TraceView1)功能:用于热点分析和性能优化,分析每个函数占用的CPU时间,调用次数,函数调用关系等 2)方法: a)在程序代码中加入追踪开关 import android.os.Debug; …… android.os.Debug.startMethodTracing(“/data/tmp/test”);// 先建/data/tmp目录 ……// 被追踪的程序段 android.os.Debug.stopMethodTracing(); b)编译,运行后,设备端生成/data/tmp

Android开发——android调试工具集【转】

转:http://www.cnblogs.com/halzhang/archive/2010/08/11/1797097.html 1. 查看当前堆栈 1) 功能:在程序中加入代码,使可以在logcat中看到打印出的当前函数调用关系 2) 方法: new Exception(“print trace”).printStackTrace(); 2. MethodTracing 1) 功能:用于热点分析和性能优化,分析每个函数占用的CPU时间,调用次数,函数调用关系等 2) 方法: a) 在程序代码

Android实战_来电拦截专家

1 项目演示: 2 代码演示: 1)MainActivity类代码: MainActivity类代码: package com.example.phoneinteceptor_one;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import andr

android 网络_网络图片查看器

xml <?xml version="1.0"?> -<LinearLayout tools:context=".MainActivity" android:paddingTop="@dimen/activity_vertical_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingLeft="

Android学习_基础环境搭建

1.Java环境配置 JDK的全称是Java SE Development Kit,也就是Java 开发工具箱.SE表示标准版.JDK是Java的核心,包含了Java的运行环境(Java Runtime Environment),一堆Java工具和给开发者开发应用程序时调用的Java类库.其中运行环境简称JRE,和.Net的CLR运行时差不多吧 环境配置:为了配置JDK的系统变量环境,我们需要设置两个系统变量,分别是JAVA_HOME,Path.下面是这两个变量的设置. (1)JAVA_HOME