Доступны ли утверждения на Android? У меня есть:
assert(null);
Он ничего не делает, и я в режиме отладки.
Доступны ли утверждения на Android? У меня есть:
assert(null);
Он ничего не делает, и я в режиме отладки.
Да, они доступны.
Они по умолчанию отключены в эмуляторе. Вам нужно будет добавить параметры командной строки -shell -prop debug.assert=1
в дополнительные параметры командной строки эмулятора в конфигурации запуска, которую вы используете для запуска вашего приложения.
Другая вещь, о которой вы должны знать, это то, что ваше приложение, установленное на устройстве, не будет принимать во внимание утверждения - они будут игнорироваться.
В настоящее время eclipse предлагает следующее:
Утверждения ненадежны. Вместо этого используйте условные проверки BuildConfig.DEBUG.
Проблема Объяснение:
Утверждения не проверяются во время выполнения. Есть способы запросить, чтобы они были использованы Dalvik (adb shell setprop debug.assert 1), но свойство игнорируется во многих местах и на него нельзя положиться. Вместо этого выполните условную проверку внутри if (BuildConfig.DEBUG) {} блоков. Эта константа является статическим окончательным логическим значением, которое истинно в отладочных сборках и false в версиях сборки, а компилятор Java полностью удаляет весь код внутри if-body из приложения.
Например, вы можете заменить
assert speed > 0
с
if (BuildConfig.DEBUG && !(speed > 0)) { throw new AssertionError(); }
(Примечание. Эта проверка на линт не означает, что утверждения, подтверждающие чистоту или ненулевое значение, не являются абсолютными, чаще всего предназначены для использования инструментов, чем проверки времени выполнения.)
Дополнительная информация: [Проблема 65183: Intellij/Studio не активирует утверждение при запуске кода Android в режиме отладки] OK
вы можете просто использовать Android JUnit Assert:
Assert.assertTrue(false);