【发布时间】:2021-04-26 20:17:47
【问题描述】:
我想在设备上复制并执行一些预编译的二进制文件,问题是相对文件夹结构需要与原始包中的相同(我无法将所有二进制文件移动到根文件夹)。
到目前为止,我发现如何将没有.so 扩展名的二进制文件复制到lib 文件夹here。它按预期工作,安装后我可以使用context.getApplicationInfo().nativeLibraryDir 找到二进制文件,但是当我放置包含二进制文件的目录时,它无法使用命令找到它。
进一步调查显示该文件夹确实被复制到 apk。我可以通过解压缩 apk 并找到复制到 /lib/arm64-v8a/ 的二进制文件来确认这一点。
现在由于 apk 没问题,我要做的下一步是检查实际复制到设备的内容。这可以在/data/app/app.name.com+random_hash/lib/ 中找到,我确认文件夹不会被复制,只有根文件夹中的二进制文件可以。
我想知道的是负责复制本机库的代码是否位于设备上并且无法更改,或者应用程序可以以某种方式配置为复制文件夹结构?
【问题讨论】:
-
您能否在 Github 上提供一个简单的演示项目,其中包含您在实际项目中的结构以及您已经在此问题上的当前进展?谢谢
-
用示例 repo 的链接更新了问题,为 arm64 编译了二进制文件,创建了 x86 文件夹以便它可以在 x86 模拟器上运行。
-
那是为x86编译的hello world,不确定它是否运行,关键是看它是否被复制过来。
-
这不是一个 shell 脚本,添加了扩展名是因为没有扩展名的文件不会在 x86 模拟器上被复制(可能在 android 10 设备上添加了一些新约束)
标签: android android-studio android-ndk