我已经使用 Android NDK 工具链编译了一个二进制文件,并尝试将其部署到设备上。然后,使用 JNI 使用 NDK 构建的应用程序将通过本机代码执行此二进制文件。我希望避免对设备进行root。
该二进制文件将由多个应用程序使用,因此我想将其存储在共享位置,而不是每个应用程序存储一次。
我找不到合适的位置来部署此二进制文件 - 这些是我尝试过的位置:
/mnt/sd卡- 使用获取外部存储公共目录()从 SDK 中,但是 SD 卡被安装为 noexec,这意味着我无法运行它。
-
/系统/bin- 只读文件系统,因此无法复制。如果我使用以下命令在模拟器上重新挂载 /system,我可以使用 adb Push 推送文件:
mount -o rw,remount -t yaffs2 /dev/block/mtd3 /system
不过我想避免这种情况,因为设备需要扎根。
/数据/本地- 使用 adb Push,我可以将二进制文件推送到这个位置。但是,我似乎找不到在代码中执行此操作的方法(使用 Android SDK)。内部存储机制指向/数据/数据/包.
我已经编译了调用此可执行文件的本机代码,使用ARM-Linux-AndroidEabi-G++随 NDK 工具链一起提供。这适用于二进制文件/系统/bin and /数据/本地.
总之,我正在 Android 文件系统中寻找一个位置,我可以将项目 /assets 文件夹中的文件复制到该位置,并且可以获得全局可执行权限。
/data/local/tmp/
and "/data/data/" + packageName + "/files"
对于直接测试您的目标二进制文件,首先建议。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)