Как использовать assert в android?


Я хочу использовать assert obj != null : "object cannot be null" на устройстве Android. Утверждение, похоже, не работает, поэтому я искал в интернете, и я нашел это локальное решение:

adb shell setprop debug.утверждать 1

он работает на моей локальной машине.

Я хочу запустить эту команду с помощью моего проекта eclipse (так что это будет в системе управления версиями). Как я могу это сделать?

спасибо!

6 63

6 ответов:

Assert не будет работать в Android, потому что большую часть времени человек работает не в режиме отладки, а в некотором оптимизированном коде. Таким образом, правильное решение состоит в том, чтобы вручную создать исключение, с таким кодом:

if (obj==null) throw new AssertionError("Object cannot be null");

следует отметить, что по дизайну утверждения предназначены для кода отладки, а не для кода времени выпуска. Таким образом, это может быть не лучшим использованием броска утверждения. Но вот как вы можете это сделать до сих пор, так...

протестировано на Android 4.x устройство, можно использовать Java assert на Android устройстве:

  • Edit / system / build.опора (например,X-plore), добавить строку в конец файла: отладка.assert=1
  • перезагрузка телефона

теперь ваше устройство Android имеет смысл утверждать проверки, и будет бросать AssertionError, когда assert check не удается.

EDIT:

еще один простой подход, позволяющий утверждать с ПК до устройства перезапущено:

platform-tools\adb shell setprop debug.assert 1

вы можете, например, создать .bat файл (в Windows) и запустите его при подключении устройства.

if (somevar == null) throw new RuntimeException();

замените RuntimeException () на соответствующий подтип исключения.

создайте свой собственный метод assert:

public static <T> T assertNotNull(T object) {
    if (object == null)
        throw new AssertionError("Object cannot be null");
    return object;
}

возврат того же объекта позволяет использовать это в назначениях для краткости.

разделяя мой класс, который я использую для утверждений на Android, его проще, имеет хорошее имя и очень элегантный, потому что он позволяет писать утверждения следующим образом:

Assert.that(obj!=null, "Object should not be null");

вот код для класса:

public class Assert {
    public static void that(boolean condition, String message) {
        if (!condition) {
            throw new AssertionError(message);
        }
    }
}

надеюсь, что это помогает!

чтобы сделать утверждение доступным в виртуальной машине Java, используя -enableassertions или ea параметры командной строки

  • в командной строке окна,

    java-ea YourApp

  • на Android Studio 3.0, на инструменты/редактирование конфигурации виртуальной машины варианты, ввод -enableassertions или - ea