Comment utiliser assert sous android?

je veux utiliser assert obj != null : "object cannot be null" sur Android device. L'assert ne semble pas fonctionner, alors j'ai cherché en ligne et j'ai trouvé cette solution locale:

adb shell setprop debug.assert 1

ça marche sur ma machine locale.

je veux exécuter cette commande en utilisant mon projet eclipse(donc ce serait dans le contrôle source). Comment puis-je le faire?

Merci!

63
demandé sur Aditi Parikh 2011-05-30 16:43:51

6 réponses

Assert ne fonctionnera pas sur Android car la plupart du temps, une personne ne tourne pas en mode debug, mais plutôt un code optimisé. Ainsi, la bonne solution est de lancer manuellement une exception, avec un code comme celui-ci:

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

il est à noter que, de par leur conception, les assertions sont destinées au code de débogage, et non au code de temps de libération. Donc, cela pourrait ne pas être la meilleure utilisation de lancer une Assertion. Mais c'est comment vous pouvez le faire encore, donc...

71
répondu PearsonArtPhoto 2017-08-14 11:32:10

testé sur Android 4.x périphérique, Il est possible D'utiliser Java assert sur Android périphérique:

  • Modifier /system/build.prop (par exemple par X-plore ), ajouter une ligne à la fin du fichier: debug.assert=1
  • Redémarrer le téléphone

maintenant votre appareil Android est raisonnable pour affirmer des contrôles, et lancera AssertionError lorsque assert check échoue.

EDIT:

une autre approche facile, en activant affirme à partir du PC jusqu'à ce que le dispositif est redémarré:

platform-tools\adb shell setprop debug.assert 1

, Vous pouvez par exemple créer un .fichier bat (sur Windows) et l'exécuter lorsque le périphérique est attaché.

13
répondu Pointer Null 2013-10-01 18:00:55

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

remplacer RuntimeException () par un sous-type d'exception approprié.

6
répondu mah 2014-08-22 22:25:47

créez votre propre méthode d'affirmation:

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

retourner le même objet permet de l'utiliser dans les assignations pour la brièveté.

6
répondu Paweł Nadolski 2016-05-13 10:53:33

partager ma classe que j'utilise pour les assertions sur Android, son plus simple, a belle appellation et très élégant parce qu'il vous permet d'écrire affirme comme ceci:

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

voici le code de la classe:

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

Espère que cela aide!

2
répondu Bitonator 2017-11-13 14:51:42

pour rendre l'assertion disponible dans la machine virtuelle Java, en utilisant - enablassertions ou - ea command-line options

  • sur la Fenêtre de l'invite de Commande,

    java –ea Yourrapp

  • sur Android Studio 3.0, sur Outils/Modifier les Configurations/VM options , entrée - enablassertions ou - ea
0
répondu Shuyan Ji 2018-05-01 08:40:34