2011-10-28 28 views
7

Tôi có thư viện libfoo.so dùng chung và cần sử dụng nó trong ứng dụng android của mình.cách bao gồm các thư viện được chia sẻ sẵn trong apk với eclipse

thử đầu tiên của tôi là để có trong Android.mk:

include $(CLEAR_VARS) 
LOCAL_MODULE := test 
LOCAL_SRC_FILES := test.cpp 
LOCAL_LDLIBS := -L$(PATH_TO_FOO) -lfoo 
include $(BUILD_SHARED_LIBRARY) 

trong hoạt động của tôi, tôi có:

statis 
{ 
    System.loadLibrary("foo"); 
} 

này được xây dựng một cách chính xác, tuy nhiên tôi nhận thấy rằng tạo apk doesnt bao gồm libfoo. vì vậy (tôi cũng thấy nó không được sao chép vào libs/armeabi). Tôi đoán vì lý do đó tôi có UnsatisfiedLinkError khi thực hiện ứng dụng của tôi.

tôi thấy trong một số bài viết khác mà tôi cần phải thêm $ (PREBUILD_SHARED_LIBRARY), vì vậy tôi thêm dòng sau vào Android.mk tôi:

include $(CLEAR_VARS) 
LOCAL_MODULE:= foo 
LOCAL_SRC_FILES := $(FOO_PATH)/libfoo.so 
include $(PREBUILD_SHARED_LIBRARY) 

Nhưng bây giờ tôi đang nhận được lỗi build:

foo: LOCAL_SRC_FILES points to a missing file. 

Tôi chắc chắn rằng đường dẫn là chính xác. Lưu ý rằng libfoo.so đã có số phiên bản về mặt kỹ thuật ở cuối, mặc dù tôi đã phải loại bỏ nó (và chỉ để lại .so) kể từ khi ndk-build bị khiếu nại.

Tôi đang làm gì sai?

Trả lời

5

include dường như viết sai:

include $(PREBUILD_SHARED_LIBRARY) 

nên

include $(PREBUILT_SHARED_LIBRARY) 
1

Trong nhật thực, tôi thêm một thư viện tĩnh bằng cách sao chép tệp trong dự án đường dẫn/libs/armeabi/và xây dựng lại dự án sau khi làm sạch nó. Điều này bao gồm .so trong apk.

+0

này không làm việc cho tôi (ADT22, Indigo, ndk-r9). Các lib bị xóa trên xây dựng. – WindRider

5

Tìm ra giải pháp !! LOCAL_SRC_FILES không thể có đường dẫn tuyệt đối hoặc tương đối, chỉ tên tệp. Đường dẫn phải được đặt trong LOCAL_PATH.

Vì vậy, trong trường hợp của tôi, thay vì:

LOCAL_SRC_FILES := $(FOO_PATH)/libfoo.so 

tôi có bây giờ:

LOCAL_PATH := $(FOO_PATH) 
LOCAL_SRC_FILES := libfoo.so 

Và tác phẩm này ok.

+0

hey .. bạn có thể đặt một số ánh sáng trên đó không. m phải đối mặt với cùng một vấn đề. tôi đang có 3 .so tập tin được nạp những gì tôi nên viết trong tập tin .mk? –

+2

Downvote. LOCAL_SRC_FILES chắc chắn có thể chứa đường dẫn tương đối. –

+0

có đồng ý nó có thể có đường dẫn tương đối. – pauld

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