Autore Topic: Native Activity sample non funziona sull'emulatore  (Letto 2603 volte)

Offline sams4

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 8
Native Activity sample non funziona sull'emulatore
« il: 05 Maggio 2013, 19:11:30 CEST »
0
Salve a tutti...
Sto iniziando ad avere a che fare con l'ambiente di sviluppo Android, e ho incontrato un problema.
Dopo aver configurato Eclipse con tutti i plugin corretti, con l'ndk, ho importato tutti i progetti di OpenCV4Android (l'ultima versione, la 2.4.5). Ognuno di questi progetti funziona correttamente su un emulatore che ho creato. Tutti tranne NativeActivity, che mi crasha subito dopo l'installazione, all'avvio dell'applicazione. Il logcat dice quanto segue:

05-05 13:24:54.489: E/AndroidRuntime(884): FATAL EXCEPTION: main
05-05 13:24:54.489: E/AndroidRuntime(884): java.lang.UnsatisfiedLinkError: Couldn't load native_activity from loader dalvik.system.PathClassLoader[dexPath=/data/app/org.opencv.samples.NativeActivity-2.apk,libraryPath=/data/app-lib/org.opencv.samples.NativeActivity-2]: findLibrary returned null
05-05 13:24:54.489: E/AndroidRuntime(884):  at java.lang.Runtime.loadLibrary(Runtime.java:365)
05-05 13:24:54.489: E/AndroidRuntime(884):  at java.lang.System.loadLibrary(System.java:535)
05-05 13:24:54.489: E/AndroidRuntime(884):  at org.opencv.samples.NativeActivity.CvNativeActivity$1.onManagerConnected(CvNativeActivity.java:22)
05-05 13:24:54.489: E/AndroidRuntime(884):  at org.opencv.android.AsyncServiceHelper$1.onServiceConnected(AsyncServiceHelper.java:318)
05-05 13:24:54.489: E/AndroidRuntime(884):  at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1101)
05-05 13:24:54.489: E/AndroidRuntime(884):  at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1118)
05-05 13:24:54.489: E/AndroidRuntime(884):  at android.os.Handler.handleCallback(Handler.java:725)
05-05 13:24:54.489: E/AndroidRuntime(884):  at android.os.Handler.dispatchMessage(Handler.java:92)
05-05 13:24:54.489: E/AndroidRuntime(884):  at android.os.Looper.loop(Looper.java:137)
05-05 13:24:54.489: E/AndroidRuntime(884):  at android.app.ActivityThread.main(ActivityThread.java:5041)
05-05 13:24:54.489: E/AndroidRuntime(884):  at java.lang.reflect.Method.invokeNative(Native Method)
05-05 13:24:54.489: E/AndroidRuntime(884):  at java.lang.reflect.Method.invoke(Method.java:511)
05-05 13:24:54.489: E/AndroidRuntime(884):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-05 13:24:54.489: E/AndroidRuntime(884):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-05 13:24:54.489: E/AndroidRuntime(884):  at dalvik.system.NativeStart.main(Native Method)

L'emulatore quindi non trova la Native Library, ma non riesco a risolvere il problema.
Avevo pensato di risolverlo cliccando con il tasto destro sul progetto, selezionando Android Tools -> Add Native Support, ma mi si apre una finestra nella quale mi viene rivelato che non si riesce a trovare nessun file .so valido.
Cosa potrei fare per risolvere il problema?

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:Native Activity sample non funziona sull'emulatore
« Risposta #1 il: 05 Maggio 2013, 19:49:08 CEST »
0
Prima di tutto hai compilato correttamente il progetto ? Non devi usare Eclipse ma la riga di comando, ti devi posizionare nella directory del progetto e lanciare il comando "ndk-build" (naturalemnte il comando si trova nel NDK e devi aggiungere il percorso al PATH). Una volta compilata la parte NDK puoi, se vuoi, usare Eclipse per compilare la parte Java.

L'errore è abbastanza chiaro, basta leggerlo, non trova la libreria. Devi verificare se la libreria viene compilata correttamente e se viene compilata la versione per la CPU usata dall'emulatore. Se compili la libreria per ARM e usi l'emulatore per x86 la libreria non viene riconosciuta e il programma non parte.
adb logcat | tee /tmp/logcat | grep TAG

Offline sams4

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 8
Re:Native Activity sample non funziona sull'emulatore
« Risposta #2 il: 06 Maggio 2013, 08:46:42 CEST »
0
Si si era un errore del tutto mio. Non trovava la libreria perchè io avevo dimenticato di settare, nelle preferenze, correttamente la ndk location.
Fatto quello, basta cliccare col destro sul progetto, e selezionare "add native support", perchè tutto funzioni.
Grazie mille!:)