2012-03-07 149 views
5

目前在我的Android系統中,我開發了一個本地庫,用於通過Linux驅動程序與連接的媒體設備通信 ,我們通過Java本地接口從 apk應用程序訪問它。這一直工作正常,直到 現在。在兩個應用程序之間共享本地庫

但是我們也有另一個應用程序需要與第一個應用程序並行訪問相同的本機庫 。正如所料,由於新應用程序中鏈接的本機庫的數據部分不同 ,因此此方法不是 的工作。

顛覆這一點,我們雖然寫一個新的服務/應用程序,它會與本地庫和其他應用程序鏈接 使用粘合劑調用 這項新服務/應用程序訪問的API。

我的問題是:

  1. 這是新的方法可行嗎?有人能幫助我更好的方法。
  2. 如果是的話,那麼我們也需要返回API中的緩衝區,並且一些API是回調函數的 。可以使用活頁夾界面處理這些類型的功能嗎?

謝謝, Ashutosh說

回答

0

在提供更高級別的API,它反過來訪問本地庫罐子建立一個外部庫。然後使用這個jar庫作爲任何其他庫。您可能需要檢查如何將.so文件放入jar文件以獲取單個庫文件。

+0

.so文件可以在兩個以上的應用程序之間共享嗎?例如,如何讓任意數量的應用程序共享一個通用的.so文件而不使用外部存儲?你能在答案中提供更多細節嗎? – trusktr 2013-01-12 19:28:39

+0

這是值得一個新的問題。發表它!現在:不,只是將.so文件放在設備上應用程序的數據文件夾中。 – Bondax 2013-01-14 10:31:23

0

我相信這種服務方式正是opencv如何實現這一目標......特別是,OpenCV在thr app store中有一個管理器。您可以開發一個實現BaseLoaderCallback的應用程序,該應用程序從該管理器獲取.so庫。在幕後,它使用Service,ServiveConnection和aidl來獲取庫...如果內存爲我服務的話。

更新...

現在回想起來,我覺得OpenCV的經理可能只是路過的路徑到庫中,然後可以裝入System.load命令,它接受庫路徑。

相關問題