2013-03-04 20 views
5

Tôi có ứng dụng đã xuất bản báo cáo sự cố java.lang.UnsatisfiedLinkError trên một số thiết bị. Để được chính xác hơn, các tai nạn ứng dụng trên khởi động với thông điệp log sau:java.lang.UnsatisfiedLinkSự cố lỗi trên một số thiết bị

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

Các crashing thực tế là trong hướng dẫn System.loadLibrary("qcc");, vì vậy các ứng dụng đang không tìm thấy thư viện cho chắc chắn.

Vấn đề là tôi không thể tự mình tạo lại vấn đề. Trên thực tế, cùng một apk hoạt động hoàn hảo trên rất nhiều thiết bị và phiên bản khác nhau.


Ứng dụng sử dụng hai thư viện C được viết và biên soạn bởi người thứ ba. Họ đã được biên soạn bằng cách sử dụng arm-linux-androideabi-4.6 toolchain, và tôi đang tích hợp chúng trong dự án của tôi chạy nkd-build với Android.mk tập tin sau đây:

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) 

Các lỗi đã được báo cáo trên các thiết bị khác nhau, nhưng tất cả chúng vào lúc này là một của các phiên bản Android sau: 2.2, 2.2.1 hoặc 2.2.2.


Tôi nghĩ rằng đó có thể là vấn đề về kiến ​​trúc hoặc sự cố lạ khi cài đặt.

Có ai biết vấn đề có thể là gì không?


UPDATE:

tôi nhận ra rằng tôi có thể tạo lại vấn đề trong 2.2 giả lập Android. Đây là thông tin bổ sung mà tôi có thể thu thập từ 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; 
+0

Có thể là vấn đề armeabi vs. armeabi-v7a. Xây dựng cho cả hai, chỉ trong trường hợp. –

+0

Seva Alekseyev là đúng, có thể bạn có thể thử tạo một tệp Application.mk (nếu bạn chưa có) với dòng này: APP_ABI: = armeabi armeabi-v7a – Esparver

Trả lời

5

Trong trường hợp này vấn đề là thư viện đã sử dụng một số phương pháp C không được hỗ trợ trên Android 2.2

link Đây là cách để khám phá ra vấn đề.

Các phương pháp như pthread_rwlock_init không được triển khai trong thư viện C của hệ thống cho đến khi Android 2.3 (source).

Các vấn đề liên quan