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