2012-06-04 94 views
4

我需要分發一個應用程序(一個播放器),該應用程序依賴於爲給定的ARM版本和擴展(Tegra,Neon)構建的本機庫。這個本地庫很大,因此我無法將其所有版本分發到一個通用包中。所以我決定將應用程序分成一個小的通用.apk和更專業的.apks - 插件,而不需要任何活動。從另一個Android應用程序加載本機共享庫

如何從主主機應用程序訪問插件應用程序中的專用本機共享庫?是否可以簡單使用

System.loadLibrary("path_to_library"); 

如果是這樣,我該如何獲得該庫的路徑?

如何解決這個問題,以防萬一不可能?

+0

我不完全確定你可以加載沒有包含在你的apk中的庫。你有沒有嘗試上傳一個'.so'到一個有根的設備,並試圖用它的路徑來'System.loadLibrary'? – Macarse

+0

是的,這是可能的,我剛剛嘗試過它,它的工作原理。 – vitakot

+0

好的。你打算如何設定路徑? – Macarse

回答

1

System.loadLibrary()需要一個庫名稱並以某種方式將其映射到完整路徑。

富=> libfoo.so

系統正常檢查A​​PK本身,然後通常/system/lib/

如果你有一個完整的路徑,使用System.load()

在任何情況下,這將是一個麻煩管理你的lib的位置,除非它在apk或所有的系統庫中。

我只是用apk包裝特定的lib。

+0

謝謝,你幫了我很多!我不知道System.load方法,現在它按預期工作。我無法將所有庫放到一個通用的.apk文件中,它們非常龐大,它需要50 MB的光盤和100 MB以上的安裝空間。 – vitakot

相關問題