我有幾個本地庫,我想通過apk包部署它們(即將它們複製到庫文件夾或資源)。 然後我需要安裝單獨的應用程序和使用加載這些庫:Android 4.x.通過apk部署本地庫並從其他應用程序加載
System.load(path_to_lib);
哪種方式是可以做到的?據我所知,我不能只是因爲安全原因使用/data/data/libs_package/lib/native_lib.so路徑加載庫。還有其他方法嗎?
在此先感謝。
我有幾個本地庫,我想通過apk包部署它們(即將它們複製到庫文件夾或資源)。 然後我需要安裝單獨的應用程序和使用加載這些庫:Android 4.x.通過apk部署本地庫並從其他應用程序加載
System.load(path_to_lib);
哪種方式是可以做到的?據我所知,我不能只是因爲安全原因使用/data/data/libs_package/lib/native_lib.so路徑加載庫。還有其他方法嗎?
在此先感謝。
請參閱android-ndk討論組中的this thread。
總之,谷歌的Android開發者說:
如果這兩個應用程序有一個共享的用戶ID,那麼你就可以明確地用全路徑調用的System.loadLibrary()你要加載的共享庫。
...
但請不要嘗試做任何這些。你要引起疼痛爲您的用戶 - 無論是從一個或其他應用程序不兼容造成,使你分手,或者用戶卸載其他應用程序,讓你打破等
而另一名開發人員更新提出了以下解決方案:
所以我現在做的(和它的作品)是有一堆包沒有 共享用戶ID(它們由同一個密鑰簽名,但我不認爲這 在這裏很重要)。核心應用程序從 的其他包(我已經有一個自定義的解包器來解決其他Android bug的一堆 )的.apk解壓.so。我將它們解包到核心軟件包 已知的位置,然後從那裏dlopen()。
AFAIK,這是不可能的。 – CommonsWare