最佳答案
最简洁的答案是不”.如果本机二进制文件的名称遵循lib….so模式,则它们将仅打包为APK,并在安装后提取为可执行文件.
原文链接:https://www.f2er.com/android/531363.html请注意,这些库将根据目标系统的ABI提取到文件中.安装程序不会检查文件的实际属性.该决定基于APK结构中lib下的文件夹名称.
如果在APK的AndroidManifest.xml中的应用程序标签中添加属性extractNativeLibs=false,则安装程序(在Android Nougat及更高版本上)将不会提取本机库.
您可以欺骗系统,并将不遵循上述规则的文件保存到APK的lib文件夹中,但这样做几乎没有意义,因为它们永远不会被加载程序提取(如果文件存在,则为it may also extract file gdbserver).
通常的做法是将任意文件放在APK的资产文件夹中,并在安装后首次运行该应用时以编程方式提取它们.您无法将这些文件提取到通常的本机库所在的安全位置.您不应该将本机库提取到sdcard(例如getExternalFilesDir()),因为无论文件上的execute access标志如何,系统都可能不允许在其中执行文件.确保使用正确的ABI口味.
您可以查看Nougat本机lib loader的源代码,该源代码可以不提取而从APK加载本机库,并使用它直接从APK的资产文件夹中加载自定义库.