【发布时间】:2012-12-03 19:39:25
【问题描述】:
我使用 Android NDK 工具链编译了一个二进制文件,并尝试将其部署到设备上。然后,使用 JNI 使用 NDK 构建的应用程序将通过本机代码执行此二进制文件。我希望避免生根设备。
二进制文件将被多个应用程序使用,因此我想将其存储在共享位置,而不是每个应用程序一次。
我找不到合适的位置来部署这个二进制文件 - 这些是我尝试过的地方:
/mnt/sdcard - 使用 SDK 中的 getExternalStoragePublicDirectory(),但是 SD 卡安装为 noexec,这意味着我无法运行它。
-
/system/bin - 只读文件系统,所以不能复制。如果我在模拟器上重新挂载 /system ,我可以使用 adb push 推送文件:
mount -o rw,remount -t yaffs2 /dev/block/mtd3 /system但是我想避免这种情况,因为设备需要植根。
/data/local - 使用 adb push,我可以将二进制文件推送到这个位置。但是,我似乎找不到在代码中执行此操作的方法(使用 Android SDK)。内部存储机制指向/data/data/package。
我使用 NDK 工具链附带的 arm-linux-androideabi-g++ 编译了调用此可执行文件的本机代码。这适用于 /system/bin 和 /data/local 中的二进制文件。
总而言之,我正在 Android 文件系统中寻找一个位置,我可以将项目 /assets 文件夹中的文件复制到该位置,该位置可以获得全局可执行权限。
【问题讨论】:
标签: android android-ndk filesystems