Stetho介绍
Stetho是facebook推出的一个Android调试框架,可以在Google浏览器上面轻松查看应用的数据库、Sp、网络请求、UI等信息。
项目地址:https://github.com/facebook/stetho
//必须引用 implementation 'com.facebook.stetho:stetho:1.5.1' //配合okhttp implementation 'com.facebook.stetho:stetho-okhttp3:1.5.1'
不过由于Facebook没有类似leakcanary那样提供noop包,所以如果我们仅仅使用如下代码很容易导致安全问题
if (BuildConfig.DEBUG){ Stetho.initializeWithDefaults(this); }
解决方案
1、仅仅在build debug情况下依赖Stetho
debugImplementation 'com.facebook.stetho:stetho:1.5.1'
2、仅仅在build debug的情况下进行初始化
创建文件夹src/debug/java,与src/main/java类似,不同的是,只有在debug的情况下src/debug/java下的代码会被打包到apk中,release中不会被打包进去。
然后在java文件夹中新建包名以及一个类继承Application在里面进行初始化操作
public class DebugApp extends Application { @Override public void onCreate() { super.onCreate(); Stetho.initializeWithDefaults(this); } }
然后在debug文件夹下面新建AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <application tools:replace="android:name" android:name="com.stetho.debug.DebugApp"/> </manifest>
由于我们使用了tools:replace="android:name",当debug build的使用,将会替换到主AndroidManifest文件中的name属性,但是当release的时候还是使用的原来的Application。
参考链接:https://www.littlerobots.nl/blog/stetho-for-android-debug-builds-only/