提升应用程序权限以执行二进制文件

时间:2015-07-01 18:11:26

标签: android

我正在尝试从Java Android App App 4.0(API Level 15)中打包并执行本机ARM二进制文件。

包装工作正常,将shell脚本和二进制文件添加到项目的assets文件夹(使用Android Studio),它们将与APK一起部署。

然后我按照these solutions将资产复制到文件系统。这是第一个问题,我似乎只能写入getFilesDir(),但不是到 / data / local / tmp / 。非常好,所以我将文件复制到应用程序数据目录(解析为 /data/data/com.myapp/files / 。在此过程中,我还将文件的模式设置为是可执行的。

然后我尝试通过Runtime.getRuntime().exec()执行二进制文件,这似乎适用于shellcripts但不适用于二进制文件。我可以用它来通过

将二进制文件复制到我喜欢的目的地
  

cat /data/data/com.myapp/files/binary> /数据/本地的/ tmp /二进制

注意:cp无法正常工作,权限被拒绝。 Chmod 777再次运作。执行不起作用,权限被拒绝。我认为它与路径的安装方式有关。

通过adb执行整个过程。我可以看到该应用的用户ID与adb不同,因此可能与kernel limitations有关?我要求WRITE_EXTERNAL_STORAGE

阅读this也意味着 / data / local / tmp / 应该是首选目的地。

现在的问题是:(如何)我可以提升我的应用程序的权限,以执行与adb相同的操作。

手机没有扎根。

1 个答案:

答案 0 :(得分:0)

我通过执行一个shellcript(通过资产捆绑并在onCreate()方法中写入getFilesDir())解决了这个问题。这使用临时根环境来调用其他脚本,这些脚本在读/写时没有问题。

为什么它不会直接起作用,没有线索。

脚本位于GitHub