我希望我的Android应用程序在运行时根据设备的功能下载.so文件(由我编译的本机库),因此apk的大小会很小,因为我不会填充很多不同的apk本机库的版本。
我无法找到下载此库的正确位置。这个的首选和推荐目录在哪里所以我可以使用System.loadLibrary函数快速安全地加载它?
答案 0 :(得分:2)
如果解压缩apk,您会看到根目录中有一个文件夹lib
。此目录还存在于应用程序的目录/data/data/package.name/lib
中,作为/data/app-lib/package.name
的符号链接。如果你真的想在运行时下载本机库,那么就必须将它们放在其中。
由于应用程序可以获得对自己数据目录的写入权限,因此您应该能够实际下载文件。 ContextWrapper.getFilesDir()
将返回路径/data/data/package.name
,以便您不对其进行硬编码。
小心这一点 - 自己进行本机代码更新可能比其价值更多问题。如果您真的想要安全,请考虑能够在您的应用程序中下载和运行任意本机代码的含义。