最近FaceBook发布了一个叫做Stetho的工具.这个工具是一个谷歌浏览器的开发者工具扩展 ,它可以用来检测你的应用。我发现这东西挺好用的,因为它还提供了访问应用中SQLite数据库的接口。很明显,这种类型的工具只应该在应用的调试模式中使用。接下来我们来看看怎么用这个工具。
为了保证只在调试模式中使用Stetho,你可以添加一个调试编译依赖,而不是平时常用的普通依赖类型。
depencencies {
// your other dependencies here...
debugCompile 'com.facebook.stetho:stetho:1.0.0'
}
现在我们在调试中使用Stetho。你会怎么做?当然使用牛逼闪闪的Android Gradle构建系统啦。创建一个源文件夹,目录结构为 src/debug/java。这个目录中的代码仅仅是用于调试模式。这个目录结构和src/main/java很像,因为构建模式就是用于应用程序的调试的。(这句话再想想)。然后添加一个Stetho主页上描述的 Application。
import com.facebook.stetho.Stetho;
public class MyDebugApplication extends MyApplication {
@Override
public void onCreate() {
super.onCreate();
Stetho.initialize(
Stetho.newInitializerBuilder(this)
.enableDumpapp(Stetho.defaultDumperPluginsProvider(this))
.enableWebKitInspector(Stetho.defaultInspectorModulesProvider(this))
.build());
}
}
看清楚这个类是怎样继承一个已经有的MyApplication.类的。这样写的确很方便,因为你的应用里可能已经有一个application来进行其他的初始化了。如果你还没有一个application。你从android.app.Application.继承一个就行了。
最后一步,我们要做的工具是确保当前的应用的调试版本使用的是MyDebugApplication类。在这里我们用Gradle来验证。在src/debug文件夹中添加一个AndroidManifest.xml
<manifest
package="com.mycompany"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<application
tools:replace="android:name"
android:name=".MyDebugApplication"/>
</manifest>
这个AndroidManifest.xml会合并到src/main中的主AndroidManifest.xml文件里,并且会替换标签中的android:name属性。这是因为我们特别添加上了tools:replace="android:name"属性。真屌。
现在当你启动程序的调试模式,Stetho就会被激活。如果你切换到发布版本,Stetho绝对不会被激活,也看不到它的任何痕迹。如果想要不丢人,程序员要保证软件没有BUG。
用Android Gradle构建系统,可以很容易的给你的应用添加更多的调试功能。这门手艺不仅可以用在Stetho上,还可以用于那些你希望仅仅在调试模式中添加的类库或者工具。
Copyright© 2013-2019