微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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中提取出来,进入私有存储,使其成为可执行文件,并以某种方式宣布二进制位置,但一般来说,根据操作系统版本和供应商的预期会出现一些问题

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐