繁体   English   中英

我的 android 应用程序所需的 c++.so 库放在哪里

[英]Where to put c++ .so library needed for my android application

我制作了一个基于 ndk 的 android 应用程序,当我通过单击 Android Studio 中的运行按钮运行它时,我发现该应用程序已安装,并在我连接的 android 设备上运行。 但它抱怨说它无法加载libc++_shared.solibomp.so等 some.so 文件,我做了一些研究,并在我的app\src\main文件夹中创建了一个jniLibs ,并将这两个 .so 文件复制到那,现在一切正常。

但是,我仍然不清楚到底发生了什么:

  1. 当我单击运行按钮时,应用程序安装/保存在设备上的位置,.so 文件是否复制到同一位置?
  2. 我怀疑将 .so 文件复制到jniLibs是否是一个好习惯,这样的 .so 文件可以被许多应用程序共享,如果每个应用程序都有自己的副本,更新它们就会变得困难。 有没有办法将它们存储在一个公共位置以供应用程序共享?
  3. android设备上的.so文件也可以跨不同的app共享吗?
  1. 当我单击运行按钮时,应用程序安装/保存在设备上的位置,.so 文件是否复制到同一位置?

应用程序保存在/data/app/your.app.name-cert-hash== .so库存储在相同的位置,例如/data/app/your.app.name-cert-hash==/lib/x86 (如果AndroidManifest.xml/application中android:extractNativeLibs="true" ,否则库直接压缩为.apk)。

要发现 Android 文件系统,您可以使用 ADB(也可以使用模拟器):

  1. 从 AS 运行你的应用程序

  2. 在 su 模式下运行 adb shell:

     adb shell su ls -als /data/app
  1. 我怀疑将 .so 文件复制到 jniLibs 是否是一个好习惯,这样的 .so 文件可以由许多应用程序共享,如果每个应用程序都有自己的副本,更新它们就会变得困难。 有没有办法将它们存储在一个公共位置以供应用程序共享?

由于 Android 安全方法,这是不可能的。

  1. android设备上的.so文件也可以跨不同的app共享吗?

不。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM