Tôi sử dụng thư viện gốc trong ứng dụng của mình chỉ được biên dịch cho armeabi, armeabi-v7a và x86.Cách sử dụng thư viện gốc 32 bit trên thiết bị Android 64 bit
Khi thư viện này được nạp vào một thiết bị 64-bit như Samsung S6, các ứng dụng bị treo với một UnsatisfiedLinkError
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.myapp-2/base.apk"],nativeLibraryDirectories=[/data/app/com.myapp-2/lib/arm64, /vendor/lib64, /system/lib64]]] couldn't find "libfoo.so"
at java.lang.Runtime.loadLibrary(Runtime.java:366)
at java.lang.System.loadLibrary(System.java:989)
Thư viện là nguồn đóng không may. Có cách nào để sửa lỗi này mà không biên dịch lại thư viện với các mục tiêu 64 bit không?
Bạn đã nhìn https: // stackoverflow. com/q/27712921/603270 và https://stackoverflow.com/a/29329413/603270? – shkschneider
Tôi đã làm. Một ứng dụng được áp dụng cho AOSP, một ứng dụng khác cho tải lớp động. Trường hợp của tôi thực sự đơn giản hơn nhiều. Nhưng tôi mới phát hiện ra rằng một thư viện gốc khác mà tôi đưa vào thực sự cung cấp các tệp .so 64 bit, do đó có một thư mục arm64-86 trong thư mục/lib của tôi trong gói ứng dụng cuối cùng. Có lẽ đây là lý do tại sao hệ thống giả định rằng tôi cung cấp các tệp .so 64 bit trong mọi trường hợp. Tôi sẽ cố gắng biên dịch lại librariy này chỉ với hỗ trợ 32 bit và xem nó có hoạt động hay không. –
Suy nghĩ tốt. Hãy cho chúng tôi biết (trả lời câu hỏi của bạn nếu cần). – shkschneider