Java/Android中的仅调试方法或接口

Java/Android中的仅调试方法或接口,java,android,Java,Android,我是Android和Java的新手,对C/C++/C#有丰富的经验 我有一个如下所示的界面: class WellNamedClass { void greatMethodToCallWhenever() { /*...*/ } void debugOnlyMethod() { /*...*/ } } class WellNamedClass{ public static final boolean DEBUG = true; ... } 在上面提到的语言中,我要么#if

我是Android和Java的新手,对C/C++/C#有丰富的经验

我有一个如下所示的界面:

class WellNamedClass {
    void greatMethodToCallWhenever() { /*...*/ }

    void debugOnlyMethod() { /*...*/ }
}
class WellNamedClass{

public static final boolean DEBUG = true;
...
}
在上面提到的语言中,我要么#ifdef整个debugOnlyMethod方法,要么#ifdef实现,这样它就什么也不做了,但是Java没有预处理器

我对代码放在那里并在运行时检查我们是否处于调试构建中感到非常满意,但我甚至找不到一种方法来做到这一点

我发现了一些建议,比如在何处创建一个带有常量的类,该常量指示是否启用了调试(或任何您想要的)。这可能是可行的,但随后您必须手动更改代码以获得调试版本而不是发布版本


还有其他人解决了这个问题吗?谢谢。

我不知道您为什么需要这个,顺便说一句,您可以放置一个静态全局变量,如下所示:

class WellNamedClass {
    void greatMethodToCallWhenever() { /*...*/ }

    void debugOnlyMethod() { /*...*/ }
}
class WellNamedClass{

public static final boolean DEBUG = true;
...
}
并使用if语句检查调试方法,如:

if(WellNamedClass.DEBUG){
    debugOnlyMethod();
}
从java开始,您可以使用它

当您获得更多经验时,您可以尝试注释、aop或任何其他高级编程技术

这可能会起作用,但随后您必须手动更改代码以获得 调试与发布版本

一种流行的方法是使用
-D
标志将系统属性传递给VM。然后,您可以直接使用
System.getProperty
,或者从该属性初始化
静态字段


System.getenv
也可以工作。

我认为我们将使用的方法是对本机组件进行JNI调用,该调用将告诉我们是否在调试模式下运行。无论如何,我们必须拥有本地组件,并且在启动时会产生一些JNI调用,因为它是一个比较简单的解决方案,因为C++有一个预处理器。

这是个好主意,但是我更喜欢建立能够在不改变代码的情况下构建发布构建和调试构建。编程技术解决了OP的基本问题,即如何根据构建(调试/发布/等)获得不同的值。然后,您必须将带有调试模式选项的配置文件放入常量实例中,或者读取程序参数。我最近才开始使用安卓,但是从adb shell dalvikvm-help的输出来看,这似乎是可能的。