the*_*ang 56 android android-studio stetho
我知道,我可以使用debugCompile只在拉dependency了debug build.是否有一个好的,简化的方法来做到这code initialization一点也是必需的?如果没有依赖关系,其他变体将无法编译.
Gab*_*tti 91
检查@Tanis的答案.
你也可以使用这样的东西:
仅在调试版本上添加库.
dependencies {
debugCompile 'com.facebook.stetho:stetho:1.1.1
}
Run Code Online (Sandbox Code Playgroud)
在您的应用程序中,您可以:
public class ExampleApplication extends Application {
@Override public void onCreate() {
super.onCreate();
StethoUtils.install(this);
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以StethoUtils在调试/发布版本中创建不同的类.
在 src/debug/java/
public class StethoUtils{
public static void install(Application application){
Stetho.initialize(
Stetho.newInitializerBuilder(application)
.enableDumpapp(Stetho.defaultDumperPluginsProvider(application))
.enableWebKitInspector(Stetho.defaultInspectorModulesProvider(application))
.build());
}
}
Run Code Online (Sandbox Code Playgroud)
在 src/release/java/
public class StethoUtils{
public static void install(Application application){
// do nothing
}
}
Run Code Online (Sandbox Code Playgroud)
Tan*_*.7x 54
你有几个选择.
选项1:为所有构建包含Stetho(使用compile而不是debugCompile),只在Application类中初始化它以进行调试构建.
这很容易做到.在你的Application课堂上,检查BuildConfig.DEBUG如下:
if (BuildConfig.DEBUG) {
Stetho.initialize(
Stetho.newInitializerBuilder(this)
.enableDumpapp(Stetho.defaultDumperPluginsProvider(this))
.enableWebKitInspector(Stetho.defaultInspectorModulesProvider(this))
.build()
);
}
Run Code Online (Sandbox Code Playgroud)
选项2:仅包括用于调试版本的Stetho,并Application为调试和发布版本创建不同的类.
感谢Gradle,应用程序可以为不同的构建变体提供不同的源集.默认情况下,您具有发布和调试版本类型,因此您可以拥有三个不同的源集:
您的应用程序代码可能当前都在main源集中.您只需在应用程序中创建一个名为文件夹debug旁边的新文件main夹,并镜像main文件夹的结构,以便为调试版本添加所有内容.
在这种情况下,您希望源集中的Application类main根本不引用Stetho.
然后你想要一个源集中的Application类,debug像往常一样初始化Stetho.
您可以在Stetho示例中看到此设置的示例.具体来说,这是主要的Application类,这里是调试Application类.另请注意,他们在每个源集中设置了清单,用于选择要使用的Application类.
小智 6
使用Java反射可能是一个不错的主意:
private void initStetho() {
if (BuildConfig.DEBUG) {
try {
Class<?> stethoClazz = Class.forName("com.facebook.stetho.Stetho");
Method method = stethoClazz.getMethod("initializeWithDefaults",Context.class);
method.invoke(null, this);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后我们可以调试编译stetho:
debugCompile 'com.facebook.stetho:stetho:1.5.0'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10912 次 |
| 最近记录: |