仅用于调试的导入库

3

我正在使用stetho库来调试我的应用程序。

Gradle:

debugCompile 'com.facebook.stetho:stetho:1.4.1'
debugCompile 'com.uphyca:stetho_realm:2.0.0'

应用程序类:

if (BuildConfig.DEBUG) {
    Stetho.initialize(..);
}

但是,如果我需要创建一个发布版本,我必须每次都加注释:

import com.facebook.stetho.Stetho; 
import com.uphyca.stetho_realm.RealmInspectorModulesProvider;

如何让编译器知道这些库仅用于调试? 我们能否注释掉两行代码而不创建额外的类,使用注解或类似的东西?

我会使用这个方法。 - sharp
可能是仅在调试构建变体中包含Stetho的重复问题。 - Dmitry Ryadnenko
是的,我看到了这个线程,但我正在尝试理解是否有其他可能的方法,例如注释。 - Delphian
创建一个额外的类来注释两行代码。我认为这不是最好的方法。 - Delphian
创建一个额外的类并没有什么不好。只需将其隐藏在某个/utils垃圾箱中即可。 - Dmitry Ryadnenko
1个回答

1

只需将未使用的导入保留即可。您使用的 if (BuildConfig.DEBUG) 方法是完全有效的,实际上也是最好的实现方式。

未使用的导入对性能没有影响: reference。编译时间可能会稍微增加,但运行时不会增加。

导入语句不会出现在字节码中。

您需要更改Gradle:

debugCompile 'com.facebook.stetho:stetho:1.4.1'
debugCompile 'com.uphyca:stetho_realm:2.0.0'

to

compile 'com.facebook.stetho:stetho:1.4.1'
compile 'com.uphyca:stetho_realm:2.0.0'

谢谢,这正是我在寻找的! - Delphian
即使它不创建额外的类,它仍然随发布的.apk一起提供。 - Farid
1
这样做会导致未使用的导入仍然影响 APK 大小... 如果您不在意,那没关系,但如果您的目标是低端设备,这将产生巨大的影响。 - Rafael Lima
这不是正确的做法。代码仍将随构建一起发布。 另外,编译并未被弃用,应作为实现使用。 - Neo Wakeup

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接