7

我需要分发一个应用程序(播放器),它依赖于为给定 ARM 版本和扩展(Tegra、Neon)构建的本机库。这个原生库非常大,所以我不能在一个通用包中分发它的所有版本。所以我决定将应用程序拆分为一个小的通用 .apk 和更专业的 .apks——没有任何活动的插件。

如何从主宿主应用程序访问插件应用程序中的专用本机共享库?是否可以简单地使用

System.loadLibrary("path_to_library"); 

如果是这样,我怎样才能获得该库的路径?

如果无法解决这个问题,如何解决?

4

2 回答 2

1

System.loadLibrary()获取一个库名称并以某种方式将其映射到完整路径。

foo => libfoo.so

系统通常会检查 apk 本身,然后通常/system/lib/

如果您有完整路径,请使用System.load()

在任何情况下,除非它在 ​​apk 或所有系统库中,否则管理库的位置将是一件麻烦事。

我只是用 apk 打包特定的库。

于 2012-06-04T15:45:17.687 回答
0

八年后,TS 的主要问题得到了解决:有些拆分可以为每个 ABI 生成更小的 APK,有些应用程序包可以更轻松地打包,有些扩展甚至可以延迟本地库的下载,直到它该应用确实需要...</p>

尽管如此,相同的技术System.load("/data/data/{app-package}/lib/lib{library-name}.so")仍然有效,并且在某些情况下可能有用。

于 2020-05-09T10:54:26.343 回答