Tôi đã phát triển một ứng dụng và một thư viện riêng cho Android. Thư viện gốc sử dụng ES OpenSL để xử lý âm thanh.Liên kết với thư viện được cập nhật trên Android
Trong file Android.mk
của tôi, tôi có tuyên bố sau:
LOCAL_LDLIBS := -lOpenSLES
Vì vậy, tôi đoán rằng điều này có nghĩa rằng các ứng dụng tự động sẽ liên kết trong thư viện openSLES từ hệ thống thư mục của thiết bị/lib tại thời gian khi ứng dụng được tải/thực hiện trên thiết bị?
Sự cố tôi đang gặp phải là các thư viện trên thiết bị bị lỗi và tôi có 3 thư viện được cập nhật chứa bản sửa lỗi. Nếu có thể, làm cách nào để đảm bảo rằng thư viện mẹ đẻ của tôi đang sử dụng 3 thư viện tôi có:
Libwilhelm.so
libOpenMAXAL.so
libOpenSLES.so
Tôi chỉ cần thay thế
LOCAL_LDLIBS := -lOpenSLES
với
LOCAL_SHARED_LIBRARIES := -lOpenSLES -lOpenMAXAL -lwilhelm
Vậy làm cách nào để đảm bảo rằng ứng dụng của tôi đang sử dụng phiên bản libOpenSLES.so thay vì phiên bản lỗi trong hệ thống/libs? Cụ thể, tệp Android.mk của tôi sẽ trông như thế nào? – user1884325
Có, nếu bạn chỉ định nó trong LOCAL_SHARED_LIBRARIES, nó sẽ được cài đặt trên thiết bị với APK của bạn. Trên các phiên bản Android gần đây, phiên bản này sẽ được tải tự động. Trên các phiên bản cũ hơn, trình nạp có thể thích tải libs từ thư mục hệ thống, vì vậy bạn có thể sử dụng System.loadLibrary() hoặc dlopen() rõ ràng. –
Khi bạn nói cũ hơn, chúng ta đang nói về tiền 4.4.2? Và bởi "nạp tự động" bạn có nghĩa là lib địa phương của tôi sẽ được tải tự động? Làm cách nào để xác minh nơi thực sự được tải từ khi ứng dụng được khởi chạy trên thiết bị? – user1884325