我编译使用Android NDK工具链二元,并在尝试将它部署到一个设备。 然后已建成的NDK使用JNI的应用程序将通过本地代码执行这个二进制文件。 我希望能避免生根设备。
二进制文件将被多个应用程序使用,所以我想将它存储在共享位置,而不是每一次应用程序。
我无法找到一个合适的位置来部署这个二进制文件 - 这是我试过的地方:
的/ mnt / SD卡 -使用getExternalStoragePublicDirectory()从SDK,但是SD卡被安装为NOEXEC,这意味着我不能运行它。
/系统/ bin中 -只读文件系统,因此无法复制。 我可以用ADB推推的文件,如果我重新安装/系统上使用模拟器:
mount -o rw,remount -t yaffs2 /dev/block/mtd3 /system
不过,我想避免这种情况,因为该设备将需要扎根。
/数据/本地 -使用ADB推,我可以把二进制到这个位置。 不过,我似乎无法找到一种方法,在代码中做到这一点(使用Android SDK)。 内部存储机制指向/数据/数据/包 。
我编译调用该可执行文件,使用附带的工具链NDK ARM-Linux的androideabi-G ++本地代码。 这适用于在/系统/ bin和/数据/本地二进制文件。
总之,我在寻找中,我可以从项目/资产文件夹,这世界上可执行的权限是可以复制一个文件Android的文件系统中的位置。