【发布时间】:2020-08-02 17:59:01
【问题描述】:
我制作了一个基于 ndk 的 android 应用程序,当我通过单击 Android Studio 中的运行按钮运行它时,我发现该应用程序已安装并在我连接的 android 设备上运行。但它抱怨它无法加载一些.so文件,如libc++_shared.so和libomp.so,我做了一些研究,并在我的app\src\main文件夹中创建了一个jniLibs,并将这两个.so文件复制到其中,现在一切正常。
但是,我仍然不清楚到底发生了什么:
- 当我单击运行按钮时,应用程序安装/保存在设备上的位置,.so 文件是否复制到同一位置?
- 我怀疑将 .so 文件复制到
jniLibs是否是一种好习惯,这样的 .so 文件可以由许多应用程序共享,如果每个应用程序都有自己的副本,更新它们就会变得困难。有没有办法将它们存储在一个公共位置以供应用共享? - 我还可以在不同应用之间共享 android 设备上的 .so 文件吗?
【问题讨论】:
-
如果您使用 Gradle 构建应用并使用其
externalNativeBuildNDK 集成并将c++_shared指定为您的 C++ 运行时库,libc++_shared.so将自动与您的 APK 捆绑在一起。因此,如果这没有发生,可能是因为您正在使用一些自定义方法构建您的应用程序或本机库,而您没有向我们展示。 -
@Michael 谢谢你,当我添加到
externNativeBuild配置中时,它适用于 libc++_shared
标签: android android-ndk