2010-04-08 36 views
6

Tôi muốn thêm tệp jar bên thứ ba bên ngoài vào ứng dụng Android sẵn có.Thêm tham chiếu jar bên ngoài vào Android.mk

Tôi đã thêm biến LOCAL_CLASSPATH trong Android.mk do quá trình biên dịch diễn ra tốt đẹp. Nhưng trong thời gian chạy, nó không thể tìm thấy sự xác định lớp học trong JAR.

Biến số nào tôi cần đặt để thêm các JAR của bên thứ ba trong .dex/.apk?

TIA.

Trả lời

12

Dưới đây là những gì tôi sử dụng để giải quyết vấn đề:

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := path_to_jar_file.jar 
include $(BUILD_MULTI_PREBUILT) 

này nên được bổ sung trong Android.mk sau include $(BUILD_PACKAGE)

Bạn cũng cần phải xác định tên thư viện trong LOCAL_STATIC_JAVA_LIBRARIES để biên dịch.

-2

Trong Eclipse, hãy chọn sửa đổi đường dẫn xây dựng và chọn thêm jar bên ngoài và chọn bình bạn muốn bao gồm.

+1

Thực ra, tôi muốn thực hiện việc này trong Android.mk. – Karan

+0

tạo một thư mục lib trong dự án Android của bạn và thêm jar sau đó –

0

Thêm ảnh với cờ LOCAL_STATIC_JAVA_LIBRARIES & LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES.

và đặt LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES giữa bao gồm $(BUILD_PACKAGE) & bao gồm $(BUILD_MULTI_PREBUILT).

Nó sẽ ổn. cảm ơn URL a2ronus đã cung cấp.

15

Ví dụ không chỉ là nói chuyện.

... 

LOCAL_STATIC_JAVA_LIBRARIES := libmylibs 

LOCAL_PACKAGE_NAME := myapp 

... 

include $(BUILD_PACKAGE) 

################################################## 
include $(CLEAR_VARS) 

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libmylibs:mylib.jar 

include $(BUILD_MULTI_PREBUILT) 

Lưu ý: đặt "mylib.jar" vào gốc của dự án.

+1

Chỉ muốn thêm một vài ghi chú: "libmylibs" về cơ bản là một tên tượng trưng. Bạn có thể dễ dàng sử dụng "foo", miễn là bạn sử dụng cùng một tên trong hai khai báo. Ngoài ra, bạn có thể sử dụng đường dẫn đầy đủ đến tệp jar của mình nếu bạn thích, ví dụ: "libs/mylib.jar". Điều này rất tiện dụng vì nó tương thích với môi trường làm việc nhật thực điển hình. –

+1

bạn có thể giải thích LOCAL_PACKAGE_NAME là gì không, nên sử dụng nó ở đây, tệp jar của tôi có các gói như org.jivesoftwar.smack và org.jivesoftwar.smacks. Vậy tôi có nên sử dụng org.jivesoftwar làm LOCAL_PACKAGE_NAME không? – anargund

+1

Mặc dù, câu trả lời này thực sự thiếu các giải thích, tôi nghĩ nó tốt hơn câu trả lời được chấp nhận. – cwhsu

0
LOCAL_STATIC_JAVA_LIBRARIES := \ 
other libs \ 
your_jar 

include $(CLEAR_VARS) 
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := your_jar:jar_path/jar_file.jar 
include $(BUILD_MULTI_PREBUILT) 
Các vấn đề liên quan