如果您从 Eclipse 运行应用程序,它始终是调试。
当您导出应用程序时(Android 工具 -> 导出(未)签名的应用程序包)
如果你想动态知道它是发布还是调试,你可以使用BuildConfig.DEBUG(它位于gen文件夹,我不知道这是否被所有API级别支持)
如下:
if (BuildConfig.DEBUG) {
Log.d(TAG, "Text");
}
如果您查看生成的字节码,您将看到以下内容(在调试模式下):
public class Sample{
private static final boolean LOG_ENABLED = true;
public static void main(String args[]){
if (BuildConfig.DEBUG){
System.out.println("Hello World");
}
}
}
产生以下字节码:
public class Sample extends java.lang.Object{
public Sample();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #3; //String Hello World
5: invokevirtual #4; //Method Java/io/PrintStream.println(Ljava/lang/String;)V
8: return
}
如果 BuildConfig.DEBUG 为 false
public class Sample extends java.lang.Object{
public Sample();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: return
}