美文网首页技术文“译”站Android编码调试技巧程序员
【译】一款强大的Android调试工具:Stetho

【译】一款强大的Android调试工具:Stetho

作者: Lshare_Blog | 来源:发表于2016-03-26 02:17 被阅读1334次

    本文翻译自:http://facebook.github.io/stetho/。没错,Facebook出品,必属精品!

    一个专门给Android应用使用的调试桥工具

    Stetho是一个给Android应用使用的高级调试桥工具。当启用后,开发者可以使用Chrome桌面浏览器的Chrome开发者工具特性。开发者也可以选择启用可选的dumpapp工具,它提供了一个强大的触及应用程序内部的命令行界面。

    下载

    Download v1.3.1

    或者你也可以通过Gradle或者Maven,从Maven中心仓库中下载Stetho到你的项目中。

    // Gradle
    dependencies { 
        compile 'com.facebook.stetho:stetho:1.3.1' 
    } 
    
    <!--Maven-->
      <dependency>
        <groupid>com.facebook.stetho</groupid> 
        <artifactid>stetho</artifactid> 
        <version>1.3.1</version> 
      </dependency> 
    

    只有stetho核心是必须的,你也可以同时包含进网络库,如:

      dependencies { 
        compile 'com.facebook.stetho:stetho-okhttp3:1.3.1' 
      } 
    

    或者

      dependencies { 
        compile 'com.facebook.stetho:stetho-okhttp:1.3.1' 
      } 
    

    或者

      dependencies { 
        compile 'com.facebook.stetho:stetho-urlconnection:1.3.1' 
      } 
    

    特性

    Chrome开发者工具

    inspector-discovery

    Stetho软件通过使用客户端/服务器协议实现了在Chrome开发者工具前端的集成。一旦你的应用集成了Stetho,只要在地址栏上输入chrome://inspect并点击Inspect就可以开始玩了。

    网络监视

    inspector-network

    可以使用Chrome开发者工具的全套功能来进行网络监视,包括图片预览、JSON响应协助,甚至是输出HAR格式的追踪信息。

    数据库监视

    inspector-sqlite

    SQLite数据库可以被可视化和交互式地浏览,并且具备完全的读写能力。

    视图层级

    inspector-elements

    视图层级功能支持ICS(API 15)以及更高版本的Android系统。有很多很棒的功能,比如说View实例被可视化地放置在视图层级中、视图高亮和点击view就可以跳到它在层级中的位置。

    Dumpapp

    dumpapp-prefs

    Dumpapp扩展超出了Chrome开发者工具所能显示的,它给应用组件提供了一个更具扩展性的命令行界面。它提供了一套默认的插件集,但是dumpapp真正强大之处是你可以创建你自己的插件。

    JavaScript控制台

    inspector-js

    JavaScript控制台允许你执行JavaScript代码,来跟应用甚至是Android SDK交互。

    集成

    设置

    集成Stetho对现在的大多数Android应用来说,是无缝和直接的。下面的例子展示了在你的Application中初始化Stetho。

    //自定义Application并在清单文件的<application>的name属性中配置
    public class MyApplication extends Application {
      public void onCreate() {
        super.onCreate();
        //使用默认配置初始化Stetho
        Stetho.initializeWithDefaults(this);
      }
    }
    

    这样子会启用许多默认的设置,但是没有启用一些额外的钩子功能(hook)(特别是网络监视)。

    接着看下面如何在自己的子系统中指定详细的设置。

    启用网络监视

    如果你使用流行的2.2.x+或者3.x发布版的OkHttp库,你可以使用监视器系统来自动hook进已存在的栈。目前启用网络监视最简单的最直接的方法是:

    OkHttpClient client = new OkHttpClient();
    client.networkInterceptors().add(new StethoInterceptor());
    

    或者

    new OkHttpClient.Builder()
        .addNetworkInterceptor(new StethoInterceptor())
        .build();
    

    如果你使用HttpURLConnection,那么你可以使用StethoURLConnectionManager来帮助你进行网络监视,虽然用这个方法时要留意下一些警告信息。值得一提的是,你必须显示添加Accept-Encoding: gzip到请求头中,并手动处理压缩后的响应,以便Stetho报告压缩载荷大小。

    查看stetho-sample项目来获取更多信息。

    定制dumpapp插件

    定制插件是一个继承dumpapp系统的绝好方法,它还可以在配置中很方便的。简单地替换下你的配置,如:

    Stetho.initialize(Stetho.newInitializerBuilder(context)
        .enableDumpapp(new DumperPluginsProvider() {
          @Override
          public Iterable<DumperPlugin> get() {
            return new Stetho.DefaultDumperPluginsBuilder(context)
                .provide(new MyDumperPlugin())
                .finish();
          }
        })
        .enableWebKitInspector(Stetho.defaultInspectorModulesProvider(context))
        .build());
    

    查看stetho-sample项目来获取更多信息。

    PS:倒骑驴的农民公众号开通啦

    相关文章

      网友评论

        本文标题:【译】一款强大的Android调试工具:Stetho

        本文链接:https://www.haomeiwen.com/subject/mxsdlttx.html