将包含二进制文件的文件夹结构复制到本机库文件夹
Copy folder structure containing binaries to native libraries folder
我想在设备上复制和执行一些预编译的二进制文件,问题是相对文件夹结构需要与原始包中的相同(我不能将所有二进制文件移动到根文件夹)。
到目前为止我发现的是如何将没有 .so
扩展名的二进制文件复制到 lib 文件夹 here. It works as expected, once installed I can locate the binary using context.getApplicationInfo().nativeLibraryDir
,但是当我将目录与二进制文件放在一起时,它无法使用命令找到它。
进一步调查显示该文件夹 被复制到 apk。我可以通过解压缩 apk 并找到复制在 /lib/arm64-v8a/
.
的二进制文件来确认这一点
既然 apk 没问题,我做的下一步是检查实际复制到设备的内容。这可以在 /data/app/app.name.com+random_hash/lib/
中找到,我确认文件夹 不会被复制到 ,只有根文件夹中的二进制文件会被复制。
我想知道的是,负责复制本机库的代码是否位于设备上且无法更改,或者应用程序是否可以通过某种方式配置为复制文件夹结构?
代码在设备上,OS 的一部分:
“Android OS 不支持子目录。
安装APK时,.so库会解压到/data/app/your.app/lib/目录下。该目录被添加到 System.loadLibrary 搜索的库路径中,以便可以找到它。 System.loadLibrary不支持目录结构,因此不会提取lib/下子目录中的.so文件。"
以上答案来自一位致力于 Android 的 Google 员工,来自以下问题:
https://issuetracker.google.com/issues/63707864#comment4
干杯,
杰罗姆
我想在设备上复制和执行一些预编译的二进制文件,问题是相对文件夹结构需要与原始包中的相同(我不能将所有二进制文件移动到根文件夹)。
到目前为止我发现的是如何将没有 .so
扩展名的二进制文件复制到 lib 文件夹 here. It works as expected, once installed I can locate the binary using context.getApplicationInfo().nativeLibraryDir
,但是当我将目录与二进制文件放在一起时,它无法使用命令找到它。
进一步调查显示该文件夹 被复制到 apk。我可以通过解压缩 apk 并找到复制在 /lib/arm64-v8a/
.
既然 apk 没问题,我做的下一步是检查实际复制到设备的内容。这可以在 /data/app/app.name.com+random_hash/lib/
中找到,我确认文件夹 不会被复制到 ,只有根文件夹中的二进制文件会被复制。
我想知道的是,负责复制本机库的代码是否位于设备上且无法更改,或者应用程序是否可以通过某种方式配置为复制文件夹结构?
代码在设备上,OS 的一部分:
“Android OS 不支持子目录。
安装APK时,.so库会解压到/data/app/your.app/lib/目录下。该目录被添加到 System.loadLibrary 搜索的库路径中,以便可以找到它。 System.loadLibrary不支持目录结构,因此不会提取lib/下子目录中的.so文件。"
以上答案来自一位致力于 Android 的 Google 员工,来自以下问题: https://issuetracker.google.com/issues/63707864#comment4
干杯, 杰罗姆