Attraper les exceptions levées à partir du code natif en cours d'exécution sur Android

Le projet sur lequel je travaille actuellement sur me demande de code android partie d'une plate-forme de mise en œuvre du programme.

Un ensemble de base de la fonctionnalité est intégrée et inclus dans mon application par le biais d' android-ndk. J'ai trouvé que toute exception/crash qui se passe dans le code natif n'est rapporté ici et là, au mieux. Lorsqu'une erreur se produit-je obtenir l'un des comportements suivants:

  • Une stacktrace /vidage de mémoire se produit et est écrit dans le fichier journal. Le programme disparaît (aucune indication n'est donnée sur le périphérique pourquoi, soudain, l'application n'est plus là).
  • Pas stacktrace /dump ou une autre indication est donné que le code natif est tombé en panne. Le programme disparaît.
  • Le code java se bloque avec un NullPointerException (en général dans le même endroit par du code natif à l'exception de ce qui est une énorme douleur). Habituellement, m'obligeant à passer du temps à essayer de déboguer pourquoi le code Java a jeté une erreur seulement de découvrir le code Java est fine, & le natif de code d'erreur a été entièrement masqué.

Je n'arrive pas à trouver de toute façon à "isoler" mon code à l'encontre des erreurs qui se produisent dans le code natif. Les instructions Try/catch sont amplement ignoré. À part quand mon code est pointé du doigt comme le coupable, je n'ai même pas la chance d'avertir l'utilisateur qu'une erreur s'est produite.

Quelqu'un peut s'il vous plaît aidez-moi comment répondre à la situation de s'écraser en code natif?

  • Les tests unitaires, les journaux... Les seules alternatives je sais off (mais je sais faaar de tout, donc s'il vous plaît regardez plus loin 🙂 )
  • Contrôlez-vous le code natif à tous? Ou tout simplement la Java côté?
  • Seulement le haut de la couche de code natif, c'est à dire la JNI de la couche de Liant.
InformationsquelleAutor Graeme | 2011-12-07