2012-06-04 48 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

相关问题