Je suis en essayant de charger des bibliothèques natives c dans mon application Andoid, et j'obtiens l'erreur suivante:JNI DETECTEE ERREUR DANS L'APPLICATION: JNI NewGlobalRef appelé à l'attente exception java.lang.NoSuchFieldError
JNI DETECTED ERROR IN APPLICATION: JNI NewGlobalRef called with pending exception java.lang.NoSuchFieldError: no "I" field "mNativePtr" in class "Landroid/os/Parcel;" or its superclasses
Voici une partie du message logcat:
05-15 14:08:03.177 21078-21078/fr.limsi.registration A/art: art/runtime/java_vm_ext.cc:410] JNI DETECTED ERROR IN APPLICATION: JNI NewGlobalRef called with pending exception java.lang.NoSuchFieldError: no "I" field "mNativePtr" in class "Landroid/os/Parcel;" or its superclasses
05-15 14:08:03.177 21078-21078/fr.limsi.registration A/art: art/runtime/java_vm_ext.cc:410] at java.lang.String java.lang.Runtime.nativeLoad(java.lang.String, java.lang.ClassLoader, java.lang.String) (Runtime.java:-2)
05-15 14:08:03.177 21078-21078/fr.limsi.registration A/art: art/runtime/java_vm_ext.cc:410] at java.lang.String java.lang.Runtime.doLoad(java.lang.String, java.lang.ClassLoader) (Runtime.java:435)
05-15 14:08:03.177 21078-21078/fr.limsi.registration A/art: art/runtime/java_vm_ext.cc:410] at void java.lang.Runtime.loadLibrary(java.lang.String, java.lang.ClassLoader) (Runtime.java:370)
05-15 14:08:03.177 21078-21078/fr.limsi.registration A/art: art/runtime/java_vm_ext.cc:410] at void java.lang.System.loadLibrary(java.lang.String) (System.java:1076)
05-15 14:08:03.177 21078-21078/fr.limsi.registration A/art: art/runtime/java_vm_ext.cc:410] at void fr.limsi.registration.utils.NativeInterface.<clinit>() (NativeInterface.java:12)
05-15 14:08:03.177 21078-21078/fr.limsi.registration A/art: art/runtime/java_vm_ext.cc:410] at void fr.limsi.registration.utils.NativeInterface.tangoInitServices() (NativeInterface.java:-2)
05-15 14:08:03.177 21078-21078/fr.limsi.registration A/art: art/runtime/java_vm_ext.cc:410] at void fr.limsi.registration.activities.ProjectViewActivity.onStart() (ProjectViewActivity.java:63)
05-15 14:08:03.177 21078-21078/fr.limsi.registration A/art: art/runtime/java_vm_ext.cc:410] at void android.app.Instrumentation.callActivityOnStart(android.app.Activity) (Instrumentation.java:1238)
05-15 14:08:03.177 21078-21078/fr.limsi.registration A/art: art/runtime/java_vm_ext.cc:410] at void android.app.Activity.performStart() (Activity.java:6302)
J'interprète cela comme:
The class android.od.Parcel doesn't have any field called "mNativePtr".
J'utilise une tablette Lenovo PHAB II, fonctionnant avec Abdroid 6.0, et la machine virtuelle d'art. C'est la première fois que j'ai ce problème lors de l'exécution de code natif sur Android, et je ne comprends pas pourquoi je reçois ce message. Cela se produit lorsque l'application effectue un appel à System.loadLibrary() et que l'application se bloque avant d'exécuter mon code natif. Est-ce que quelqu'un a une idée?
Merci beaucoup!
P.S: Je proguard est désactivé
Regardons simplement [ce] (http://stackoverflow.com/questions/34891686/android-jni-detected-error-in-application -jni-getmethodid-called-with-pending-e) –
Le problème se produit lorsque j'essaie de charger une bibliothèque, pas quand je l'utilise. il semble que c'est le code exécuté par System.loadLibrary() qui échoue lors de la recherche du mNativePtr, mais il n'y a pas de raison du tout. – aarnaud