2012-03-07 42 views
5

Hiện tại trong hệ thống Android của tôi, tôi đã phát triển một thư viện riêng để giao tiếp với thiết bị truyền thông được kết nối qua trình điều khiển linux và chúng tôi truy cập nó từ ứng dụng apk apk thông qua giao diện gốc Java. Điều này đã hoạt động tốt cho đến ngay bây giờ.Chia sẻ thư viện gốc trên hai ứng dụng

Nhưng chúng tôi cũng có một ứng dụng khác cần truy cập cùng một thư viện gốc song song với ứng dụng đầu tiên. Như dự kiến, vì phần dữ liệu khác nhau cho thư viện gốc được liên kết trong ứng dụng mới, phương pháp này không phải là hoạt động.

Để hủy bỏ điều này, chúng tôi sẽ viết một dịch vụ/ứng dụng mới sẽ được liên kết với thư viện gốc và các ứng dụng khác truy cập API sử dụng các cuộc gọi kết nối tới dịch vụ/ứng dụng mới này.

Câu hỏi của tôi là:

  1. Là cách tiếp cận mới này có tính khả thi? Ai đó có thể giúp tôi với một cách tiếp cận tốt hơn.
  2. Nếu có, thì chúng tôi cũng cần trả lại bộ đệm trong API và một số API là gọi lại. Các loại chức năng này có thể được xử lý bằng cách sử dụng giao diện kết dính không?

Cảm ơn, Ashutosh

Trả lời

0

Xây dựng một thư viện bên ngoài trong một cái lọ cung cấp các API mức độ cao hơn mà lần lượt truy cập vào thư viện bản xứ. Sau đó, sử dụng thư viện jar này như bất kỳ lib nào khác. Bạn có thể phải kiểm tra cách đặt tệp .so vào tệp jar để có một tệp thư viện duy nhất.

+0

Tệp .so có thể được chia sẻ giữa hơn hai ứng dụng không? Ví dụ, làm thế nào để làm cho bất kỳ ứng dụng số chia sẻ một tập tin .so phổ biến mà không cần sử dụng lưu trữ bên ngoài? Bạn có thể cung cấp thêm chi tiết trong câu trả lời của mình không? – trusktr

+0

Đây là một câu hỏi mới đáng giá. Đăng nó! Hiện tại: Không, không phải bằng cách đặt tệp .so vào thư mục dữ liệu của ứng dụng trên thiết bị. – Bondax

0

Tôi tin rằng cách tiếp cận dịch vụ chính xác là cách opencv đạt được điều này .... cụ thể, OpenCV có một người quản lý trong cửa hàng ứng dụng thr. Bạn có thể phát triển một ứng dụng thực hiện BaseLoaderCallback, thư viện này có thư viện .so từ trình quản lý này. Đằng sau hậu trường, điều này sử dụng một Service, ServiveConnection, và aidl để có được thư viện ... nếu bộ nhớ phục vụ cho tôi đúng.

Update ...

Bây giờ mà tôi nghĩ về nó, tôi nghĩ rằng OpenCV quản lý chỉ có thể đi qua các đường dẫn đến thư viện, mà sau đó có thể được nạp với lệnh System.load, mà chấp nhận đường dẫn thư viện .

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