android - 将下载的 native 库放在 Android 中的最佳位置是什么?

标签 android android-ndk

我希望我的 Android 应用程序在运行时根据设备的特性下载一个 .so 文件(由我编译的本地库),所以 apk 的大小会很小,因为我不会用许多不同的方式填充 apk native 库的版本。

我找不到下载这个库的正确位置。此文件的首选和推荐目录在哪里?这样我就可以使用 System.loadLibrary 函数快速安全地加载它

最佳答案

如果你解压一个apk,你会看到在根目录下有一个文件夹lib。此目录也作为指向 /data/app-lib/package.name 的符号链接(symbolic link)存在于您的应用程序目录 /data/data/package.name/lib 中。如果您真的想在运行时下载 native 库,其中之一就是您必须将它们放在哪里。

由于应用程序可以获得对自己的数据目录的写入权限,因此您实际上应该能够在那里下载文件。 ContextWrapper.getFilesDir() 将返回路径 /data/data/package.name 这样您就不会对其进行硬编码。

对此要小心 - 自行更新 native 代码可能会带来更多问题而不是其值(value)。如果您真的想确保安全,请考虑能够在您的应用程序中下载和运行任意 native 代码的含义。

关于android - 将下载的 native 库放在 Android 中的最佳位置是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19873774/

相关文章:

android - 如何在 Windows 中设置 NDK 环境变量?

android - 生根android手机运行交叉编译的C文件?

android - 在 NDK r17c 上将 VTK 与 ndk-build 链接会产生 'undefined references' 错误

java - 列表完成后转到下一个 Activity

java - 在Android中共享到应用程序时如何制作叠加层?

android - 去除 CardView 的圆角

c++ - 强制 lld 链接在不同 DWARF 版本中使用调试信息的可重定位文件

Android:屏幕方向改变后 fragment 恢复

java - 更新 RecycleView 内的 Firestore 字段

android - 无法在 JNI 中分离头文件和源文件