所以,目前Android上没有办法,只能手动预加载依赖的共享库。这对我来说很好,没什么大不了的。android buildsystem(预构建库功能)也存在一些问题,因此我不得不为我的依赖共享库的不同构建命名:libsal.so和libsal-slim.so。根据构建设置,这两个中的一个会进入最终的 apk。然后,在 java 端,我尝试加载 libsal.so,如果失败,则尝试加载 libsal-slim.so。
一切都很好,直到我们偶然发现了一部手机,该手机在默认固件中安装了 libsal.so,安装在 /system/lib 中。出于这个原因,如果我的应用程序是用 libsal-slim.so 构建的,它就会停止在该手机上运行,因为它会首先尝试加载 libsal.so,然后从 /system/lib 加载错误的库。
问题:如何确保只加载安装文件夹中的库?也许我可以以某种方式检索我的应用程序的安装文件夹并“计算”我的共享库的完整路径?我怎么能做那个 java voodoo 魔法?一般来说,我是 java 和 android 的大菜鸟,如果这个问题看起来太天真了 :) 是的,我不会说英语(或者他们怎么说),请依靠 c++ [结束笑话]
libsal.so 不是实际名称,我仅用作示例。