UnsatisfiedLinkError quando si chiama metodo dalla libreria nativa anche se System.loadLibrary sembra ok

Ho un setup di progetto Android 1.2.2 con alcuni file nativi * .so inclusi nel progetto -> src -> main -> jniLibs -> armeabi (che è l'architettura corretta per loro). Ho una class che carica la libreria in una statica e collega i methods nativi (credo / spero).

Ecco la statica con System.loadLibrary:

  • Android: Come creare un StateListDrawable in modo programmato
  • L'esempio più semplice di uno background Android live
  • Come utilizzare la query di MediaStore per get gli artisti senza duplicati?
  • Android: consigli di AsyncTask: class privata o class pubblica?
  • I pulsanti di azione non vengono visualizzati su Action Bar?
  • Aggiungi carattere personalizzato per l'applicazione completa di android
  • static { try { System.loadLibrary("<SOME LIB>"); } catch(UnsatisfiedLinkError ule){ Log.e(TAG, "Error while loading library <SOME LIB>", ule); } } 

    Non ho mai colpito il block di cattura o ho visto il messaggio di errore, ma ho verificato di entrare nella statica e di arrivare alla linea System.loadLibrary quindi non credo che sto colpendo un problema che lo carica.

    Ho importto in un'altra class:

     import com.<rest-of-pacakage-name>.<SOME LIB> 

    e ha inizializzato un metodo nativo che richiede un byte:

     public native static int <SOME LIB>_Initialize(byte[] Parameter); 

    Tutto questo è basato su un altro progetto di eclipse che sto portndo sull'AS.

    Qualsiasi idea / suggerimenti o modi in cui posso identificare la causa principale del perché il carico della libreria sembra essere soddisfacente, ma il metodo non chiama?

      07-22 08:38:51.810 27119-27119/com.<rest-of-package-name>.staging E/art﹕ No implementation found for int com.<rest-of-package-name>.pppp_api.PPPP_APIs.PPPP_Initialize(byte[]) (tried Java_com_<rest-of-package-name>_pppp_1api_PPPP_1APIs_PPPP_1Initialize and Java_com_<rest-of-package-name>_pppp_1api_PPPP_1APIs_PPPP_1Initialize___3B) 07-22 08:38:52.360 27119-27119/com.<rest-of-package-name>.staging E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.<rest-of-package-name>.staging, PID: 27119 java.lang.UnsatisfiedLinkError: No implementation found for int com.<rest-of-package-name>.pppp_api.PPPP_APIs.PPPP_Initialize(byte[]) (tried Java_com_<rest-of-package-name>_pppp_1api_PPPP_1APIs_PPPP_1Initialize and Java_com_<rest-of-package-name>_pppp_1api_PPPP_1APIs_PPPP_1Initialize___3B) at com.<rest-of-package-name>.pppp_api.PPPP_APIs.PPPP_Initialize(Native Method) at com.<rest-of-package-name>.ui.base.BaseDrawerActivity.setupDrawer(BaseDrawerActivity.java:150) at com.<rest-of-package-name>.ui.base.BaseDrawerActivity.onCreate(BaseDrawerActivity.java:99) at com.<rest-of-package-name>.ui.main.MainActivity.onCreate(MainActivity.java:15) at android.app.Activity.performCreate(Activity.java:6221) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2614) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) at android.app.ActivityThread.access$900(ActivityThread.java:172) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1421) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:145) at android.app.ActivityThread.main(ActivityThread.java:5835) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 

    Nome del pacchetto per la class che contiene il metodo statico e nativo:

     package com.<rest-of-package-name>.pppp_api; 

  • Come get il path di file selezionato da GoogleDrive nell'integrazione di Android?
  • android aggiungere due toolbars nella stessa attività?
  • Android: ScrollView forza verso il basso
  • Come posso impostare esatti e ripetuti allarmi in Android 4.4?
  • get l'exception di un puntatore nullo?
  • SaxParser su Android: inaspettata fine di exception del documento
  • One Solution collect form web for “UnsatisfiedLinkError quando si chiama metodo dalla libreria nativa anche se System.loadLibrary sembra ok”

    1) Se si modifica il nome del pacchetto per la class che contiene methods nativi, è necessario modificare la firma del metodo nel codice nativo.

    2) Provi a creare un altro fodler con il nome armeabi-v7a e copia * .so perché alcuni dispositivi non possono utilizzare vecchi armeabi e ignorare libs in quel fodler

    3) nello script del graddle del module aggiungere queste righe all'interno del block "android":

     sourceSets.main { jni.srcDirs = [] jniLibs.srcDir 'src/main/jniLibs' } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.