2013-03-04 8 views
5

Ich habe eine veröffentlichte Anwendung, die eine java.lang.UnsatisfiedLinkError Absturz auf einigen Geräten meldet. Um genauer zu sein, die App stürzt auf der folgende Protokollmeldung starten:java.lang.UnsatisfiedLinkError Absturz auf einigen Geräten

Caused by: java.lang.UnsatisfiedLinkError: Couldn't load qcc: findLibrary returned null

Die eigentliche Krachen ist in der System.loadLibrary("qcc"); Anweisung, so dass die App nicht die Bibliothek sicher zu finden.

Das Problem ist, dass ich das Problem nicht selbst reproduzieren konnte. Eigentlich funktioniert die gleiche apk perfekt auf vielen verschiedenen Geräten und Versionen.


Die App verwendet zwei C-Bibliotheken, die von einer dritten Person geschrieben und kompiliert wurden. Sie wurden mit der arm-linux-androideabi-4.6 Werkzeugkette zusammengestellt, und ich bin zu integrieren sie in meinem Projekt läuft nkd-build mit folgenden Android.mk Datei:

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) 

Der Fehler auf verschiedene Geräten berichtet wird, aber alle von ihnen sind im Moment einer der folgenden Android-Versionen: 2.2, 2.2.1 oder 2.2.2.


ich denke, es entweder eine Architektur Problem sein könnte oder ein seltsames Problem bei der Installation.

Weiß jemand, was das Problem sein könnte?


UPDATE:

Ich erkannte, dass ich das Problem in einem Android-2.2-Emulator wiedergeben könnte. Dies sind zusätzliche Informationen, die ich aus dem Logcat sammeln konnte.

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; 
+0

Könnte arméabi vs. armeabi-v7a Problem sein. Build für beide, nur für den Fall. –

+0

Seva Alekseyev hat Recht, vielleicht können Sie versuchen, eine Application.mk Datei zu erstellen (wenn Sie es noch nicht haben) mit dieser Zeile: APP_ABI: = armeabi armeabi-v7a – Esparver

Antwort

5

In diesem Fall war das Problem, dass die Bibliothek einige C-Methoden wurde mit, die auf Android 2.2 nicht unterstützt werden

Diese link war die Art und Weise, das Problem zu entdecken.

Methoden wie pthread_rwlock_init sind in der C-Bibliothek des Systems erst ab Android 2.3 (source) implementiert.

Verwandte Themen