2013-09-26 127 views
6

Tôi đang phát triển ứng dụng Android gốc và sử dụng thư viện nguồn mở có tệp .so được tạo. Đối mặt với một hành vi kỳ lạ. Trong vài lần đầu tiên, ứng dụng hoạt động hoàn hảo tốt, với thư viện được tải. Nhưng bây giờ nó không thể tìm thấy thư viện và đưa ra -android .so tệp không được trích xuất trong/data/data/<package>/lib

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

.Below vài quan sát: 1. khi tôi trích xuất các tập tin .apk, thư viện (.so) hiện diện dưới "lib/armeabi" thư mục . 2. nhưng khi tôi cố gắng tìm kiếm thư viện (.so) vào đường dẫn trích xuất thiết bị của

/data/data//lib/ , its not present. Any suggestions as to why this strange behavior is happening and why the .so file is not getting extracted under /data/data/com.ibm.homeScreen/lib/ folder.

Cảm ơn bạn trước!

Trả lời

0

Nếu bạn sử dụng nhật thực, kiểm tra cài đặt buildpath: Nhấp chuột phải vào dự án của bạn -> Properties -> JavaBuildPath -> Trình tự, xuất khẩu (là một Tab) và kiểm tra ở đó nếu các librar đã được đánh dấu (checkbox) xuất khẩu. Ngoài ra còn có khả năng thiết lập đường dẫn thư viện gốc. Bạn có thể thấy rằng tùy chọn trong Tab Library -> Android Private Libraries -> EDIT Nút bên phải

This cũng có thể giúp

+0

Điều này dường như không có liên quan, đặc biệt khi áp phích cho biết .so có trong apk nhưng không được giải nén trên thiết bị. –

+0

bạn đúng, bỏ qua điều đó – sockeqwe

0

Đối với dự án nhật thực, chỉ cần đặt tất cả các file * .so của bạn bên armeabi hoặc thư mục armeabi-v7a và đặt thư mục bên trong/thư mục libs trong dự án của bạn. Biên dịch, các tệp * .so sẽ tự động được nhập vào/data/data // lib

Đối với Android studio, cách tiếp cận trên không hiệu quả đối với tôi. thay vào đó, tôi phải đặt các thư mục armeabi và armeabi-v7a vào/jniLibs thay vì/libs. Lưu ý rằng tôi đang sử dụng Gradle 0.10 + mặc dù, không chắc chắn nếu nó hoạt động trên Gradle cũ hơn.

enter image description here