Nessun JNI_OnLoad trovato in … skipping init

Ho ricevuto questo messaggio per il giorno scorso o così, e fino ad ora non ha causato un problema. Ho avuto il mio codice per eseguire con la mia biblioteca nativa prima ma oggi ho aggiunto alcune nuove funzioni e ancora non funziona.

Non ci sono errori visualizzati in LogCat, ma il mio programma viene appena aperto e chiuso immediatamente sul mio dispositivo. Non c'è alcun messaggio che dice che l'applicazione si è arrestata inaspettatamente, solo un flash nero sullo schermo.

  • Come sincronizzare i progetti con GitHub con Android Studio?
  • "È necessario utilizzare un tema Theme.AppCompat (o discendente) con l'errore della libreria di progettazione"
  • Ho bisogno di 14 diversi layout per supportre tutti i dispositivi Android?
  • Come analizzare JSON in Android
  • Come verificare se il cursore è vuoto in una query SQLiteDatabase
  • Come tagliare un'image tra quattro punti su Android
  • Ho guardato intorno a google e SO, ma ci sono così diversi motivi per questo messaggio per venire. Ecco il mio LogCat:

    08-03 10:44:50.186: D/dalvikvm(2143): Trying to load lib /data/data/my.eti.commander/lib/libRelayAPI.so 0x40514f58 08-03 10:44:50.186: D/dalvikvm(2143): Added shared lib /data/data/my.eti.commander/lib/libRelayAPI.so 0x40514f58 08-03 10:44:50.186: D/dalvikvm(2143): No JNI_OnLoad found in /data/data/my.eti.commander/lib/libRelayAPI.so 0x40514f58, skipping init 08-03 10:44:50.288: I/DEBUG(1058): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 08-03 10:44:50.288: I/DEBUG(1058): Build fingerprint: 'LENOVO/IdeaPad_Tablet_A1_07/A1_07:2.3.4/GRJ22/eng.user.20120209.100319:user/release-keys' 

    Quello che vorrei sapere è:

    1) È questo messaggio No JNI_OnLoad che causa il mio programma non aperto?

    2) In caso affermativo, so che non ho inviato alcun codice, ma qualcuno potrebbe spiegare l'idea generale di questo messaggio. Compresi quello che init sta saltando.

    EDIT:

    Le nuove funzioni che ho aggiunto oggi sono state commentate quando questo è accaduto. Avevo originariamente ottenuto un errore diverso e volevo assicurarmi che il mio codice vecchio fosse ancora funzionante.

  • Impostazione ISO di API di camera Android?
  • Come salvare lo stato di frammento in android?
  • Android. Scorrere 2 listviews insieme
  • Il frammento in ViewPager che utilizza FragmentPagerAdapter è vuoto la seconda volta che viene visualizzata
  • Lista Intent.putExtra
  • gli events di java, i gestori e gli ascoltatori interrogano
  • 2 Solutions collect form web for “Nessun JNI_OnLoad trovato in … skipping init”

    La function JNI_OnLoad non è essenziale. Quindi, se non hai fornito questa function, il programma dovrebbe essere eseguito normalmente.

    Il tuo problema viene da un'altra parte del tuo codice. Provare a usare ndk-gdb per risolvere il problema.

    Qui come @djedge ha citato JNI_OnLoad è solo un avvertimento. Probabilmente ci sono due ragioni principali per questo. Primo è qualcosa che non va nel tuo file Android.mk. Normalmente dovrebbe essere simile

      LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) OPENCV_CAMERA_MODULES:=on OPENCV_INSTALL_MODULES:=on #OPENCV_LIB_TYPE:=SHARED include D:\NDK\MyApplication3\libraries\native\jni\OpenCV.mk LOCAL_SRC_FILES := DetectionBasedTracker_jni.cpp LOCAL_C_INCLUDES += $(LOCAL_PATH) LOCAL_LDLIBS += -llog -ldl LOCAL_MODULE := detection_based_tracker include $(BUILD_SHARED_LIBRARY) 

    qui si prega di dare un'attenzione su LOCAL_SRC_FILES se viene fornito un file di origine corretto c / c ++.

    Il problema della nidificazione sarebbe costituito dalle firme delle funzioni. Se hai generato file di intestazione e le firme di funzioni dovrebbero corrispondere alle definizioni di function / metodo del file c / c ++.

    Ecco un esempio. File di intestazione

      JNIEXPORT jlong JNICALL Java_com_example_jobs_myapplication_DetectionBasedTracker_nativeCreateObject 

    (JNIEnv *, jclass, jstring, jint);

    File C ++

      JNIEXPORT jlong JNICALL Java_com_example_jobs_myapplication_DetectionBasedTracker_nativeCreateObject (JNIEnv * jenv, jclass, jstring jFileName, jint faceSize) { //code goes here... } 

    Qui il com_example_jobs_myapplication potrebbe essere errato.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.