Android上的断言是否可用?

时间:2011-11-17 08:32:40

标签: android

Android上的断言是否可用?我有:

assert(null);

它什么也没做,我处于调试模式。

3 个答案:

答案 0 :(得分:15)

是的,它们可用。

默认情况下,它们在模拟器中被禁用。您需要在用于运行应用程序的运行配置中将-shell -prop debug.assert=1命令行参数添加到其他仿真器命令行选项。

Assertions in eclipse

您应该注意的另一件事是您在设备上安装的应用程序不会考虑断言 - 它们将被忽略。

答案 1 :(得分:0)

目前eclipse建议如下:

断言是不可靠的。改为使用BuildConfig.DEBUG条件检查。

问题说明:

在运行时不检查断言。有多种方法可以请求Dalvik使用它们(adb shell setprop debug.assert 1),但是在许多地方都忽略了该属性,并且不能依赖它。相反,如果(BuildConfig.DEBUG){}阻止,则在内部执行条件检查。该常量是一个静态最终布尔值,在调试版本中为true,在发布版本中为false,Java编译器从应用程序中完全删除if-body中的所有代码。

例如,您可以替换

assert speed > 0 

if (BuildConfig.DEBUG && !(speed > 0)) { throw new AssertionError(); }

(注意:此lint检查不会标记断言纯粹断言nullness或非null;这些断言通常更多地用于工具使用而不是运行时检查。)

更多信息:[Issue 65183: Intellij/Studio doesn't activate asserts when running Android code in debug mode]确定

答案 2 :(得分:-2)

你可以使用Android JUnit Assert:

Assert.assertTrue(false);