Mam opublikowaną aplikację, która zgłasza awarię java.lang.UnsatisfiedLinkError
na niektórych urządzeniach. Aby być bardziej precyzyjnym, awarii aplikacji na uruchomienie z następującym komunikatem dziennika:Awaria java.lang.UnsatisfiedLinkError na niektórych urządzeniach
Caused by: java.lang.UnsatisfiedLinkError: Couldn't load qcc: findLibrary returned null
Rzeczywista upaść jest w instrukcji System.loadLibrary("qcc");
, więc aplikacja nie jest znalezienie biblioteki na pewno.
Problem polega na tym, że sam nie udało mi się odtworzyć problemu. W rzeczywistości ten sam apk działa doskonale na wielu różnych urządzeniach i wersjach.
Aplikacja korzysta z dwóch bibliotek C napisanych i skompilowanych przez trzecią osobę. Zostały one przygotowane w oparciu o arm-linux-androideabi-4.6
toolchain, a ja ich integracji w moim projekcie uruchomionym nkd-build
z następującym Android.mk
pliku:
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)
Błąd jest zgłaszana na różnych urządzeniach, ale wszystkie z nich w tej chwili są jednym następujących wersji Androida: 2.2, 2.2.1 lub 2.2.2.
Myślę, że może to być problem z architekturą lub dziwny problem podczas instalacji.
Czy ktoś wie, jaki może być problem?
UPDATE:
zdałem sobie sprawę, że mogę odtworzyć problemu w Android 2.2 emulatora. To dodatkowe informacje, które mogłem zebrać z 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;
Może być problem z armeabi vs armeabi-v7a. Zbuduj dla obu, na wszelki wypadek. –
Seva Alekseyev ma rację, może możesz spróbować stworzyć plik Application.mk (jeśli jeszcze go nie masz) z tą linią: APP_ABI: = armeabi armeabi-v7a – Esparver