[英]Android Can I use C++ library via JNI interface and put my app in the marketplace?
[英]Where to put c++ .so library needed for my android application
我制作了一个基于 ndk 的 android 应用程序,当我通过单击 Android Studio 中的运行按钮运行它时,我发现该应用程序已安装,并在我连接的 android 设备上运行。 但它抱怨说它无法加载libc++_shared.so
和libomp.so
等 some.so 文件,我做了一些研究,并在我的app\src\main
文件夹中创建了一个jniLibs
,并将这两个 .so 文件复制到那,现在一切正常。
但是,我仍然不清楚到底发生了什么:
jniLibs
是否是一个好习惯,这样的 .so 文件可以被许多应用程序共享,如果每个应用程序都有自己的副本,更新它们就会变得困难。 有没有办法将它们存储在一个公共位置以供应用程序共享?
- 当我单击运行按钮时,应用程序安装/保存在设备上的位置,.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(也可以使用模拟器):
从 AS 运行你的应用程序
在 su 模式下运行 adb shell:
adb shell su ls -als /data/app
- 我怀疑将 .so 文件复制到 jniLibs 是否是一个好习惯,这样的 .so 文件可以由许多应用程序共享,如果每个应用程序都有自己的副本,更新它们就会变得困难。 有没有办法将它们存储在一个公共位置以供应用程序共享?
由于 Android 安全方法,这是不可能的。
- android设备上的.so文件也可以跨不同的app共享吗?
不。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.