Android上可写和可执行的位置

我使用 Android NDK工具链编译了一个二进制文件,并尝试将其部署到设备上.使用JNI使用NDK构建的应用程序将通过本地代码执行此二进制文件.我希望避免生根器材.

该二进制文件将被多个应用程序使用,因此我想将它存储在共享位置,而不是每个应用程序一次.

我找不到适当的位置来部署这个二进制文件 – 这些是我试过的地方:

> / mnt / sdcard – 使用SDK中的getExternalStoragePublicDirectory(),然而SD卡被挂载为noexec,这意味着我无法运行它.
> / system / bin – 只读文件系统,所以不能复制.如果我在模拟器上重新安装/系统,可以使用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文件夹复制一个文件,哪个世界可执行的权限是可能的.

解决方法

如果你想避免生根设备,那么基本上SD卡是唯一可以假定是世界可写的地方(编辑:介绍到2014/2015的Android框架的最新变化).最好让你的二进制部分可安装的APK,然后将这个二进制文件从APK中提取出来,进入私有存储,使其成为可执行文件,并以某种方式宣布二进制位置,但一般来说,根据操作系统版本和供应商的预期会出现一些问题

相关文章

###实现效果*本实例主要实现用ViewPage和Fragment实现选项卡...
一、安装 JDK 下载JDK最新版本,下载地址如下: http://www....
这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...