Ho un'applicazione pubblicata che segnala un arresto anomalo di java.lang.UnsatisfiedLinkError
su alcuni dispositivi. Per essere più precisi, l'applicazione si blocca in fase di start up con il seguente messaggio di registro:java.lang.UnsatisfiedLinkErrore arresto anomalo di alcuni dispositivi
Caused by: java.lang.UnsatisfiedLinkError: Couldn't load qcc: findLibrary returned null
Il crash attuale è nell'istruzione System.loadLibrary("qcc");
, quindi l'applicazione non è trovare la libreria di sicuro.
Il problema è che non sono stato in grado di riprodurre il problema da solo. In realtà lo stesso apk funziona perfettamente su molti dispositivi e versioni differenti.
L'app utilizza due librerie C scritte e compilate da una terza persona. Essi sono stati compilati utilizzando il arm-linux-androideabi-4.6
toolchain, e io sono la loro integrazione nel mio progetto in corso nkd-build
con il Android.mk
seguente file:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libqcc
LOCAL_SRC_FILES := qcc/libqcc.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libqpe
LOCAL_SRC_FILES := qpe/libqpe.so
include $(PREBUILT_SHARED_LIBRARY)
L'errore è stato segnalato su dispositivi diversi, ma tutti loro in questo momento sono uno delle seguenti versioni di Android: 2.2, 2.2.1 o 2.2.2.
Penso che potrebbe essere un problema di architettura o un problema strano durante l'installazione.
Qualcuno sa quale potrebbe essere il problema?
UPDATE:
mi sono reso conto che avrei potuto riprodurre il problema in un emulatore di Android 2.2. Queste sono informazioni extra che posso raccogliere dal logcat.
11:14:59.962 I/dalvikvm( 287): Unable to dlopen(/data/data/.../lib/libqcc.so): Cannot load library: link_image[1995]: failed to link libqcc.so
11:14:59.962 W/dalvikvm( 287): Exception Ljava/lang/UnsatisfiedLinkError;
Potrebbe essere un problema armeabi vs. armeabi-v7a. Costruisci per entrambi, per ogni evenienza. –
Seva Alekseyev ha ragione, forse puoi provare a creare un file Application.mk (se non ce l'hai ancora) con questa riga: APP_ABI: = armeabi armeabi-v7a – Esparver