Android权限执行本机应用程序?

时间:2013-05-09 18:53:34

标签: android linux permissions native

我下载了适用于Android的c4droid应用程序,并通过system();运行命令。我知道有些人会工作而其他人却没有。大多数很酷的东西都不起作用,这似乎是由于我的用户配置文件没有被授予在Linux操作系统级别执行此类命令的权限。

所以尝试了另一个实验。我为arm处理器安装了一个特殊的Gnu编译器,并编译了一个简单的hello world应用程序。然后我戴上手机并尝试通过像system("./myapp.bin");这样的c4droid应用程序执行它。我收到了permission denied条消息。

所以我只是想了解我能做些什么以及在手机上我付不了多少钱?我可以执行这样的hello world app吗?我真的需要root访问权来执行我创建的应用程序吗?有没有办法通过将其包装在android / java代码中来运行我的代码?我是否必须通过Dalvikvm才能让它运行?

我真的在寻找一种方法来做到这一点,而无需根据它或下载像busybox和使用su的东西。

1 个答案:

答案 0 :(得分:1)

许多不同的问题。

  1. permission denied是原始shell知道的少数错误消息之一,它用于许多其他类型的失败,包括找不到请求的命令。

  2. 工具箱套件缺少许多典型的unix命令。人们有时会将busybox安装为更全面的补充

  3. 您可能想要做的一些事情实际上需要shell(或更多应用程序用户ID)帐户所没有的权限。默认情况下,adb shell仅在模拟器或工程设备上以root身份运行,但在“root”设备上,您可以访问root shell。

  4. 您不需要root访问权来运行已编译的代码,但代码必须具有合适的ABI,必须满足其所有库依赖项,并且必须安装在具有可执行标志的文件中,在分区上未安装非可执行标志。你面临的一些问题是glibc(或其他)与Android的仿生libc。可执行的临时目录因android版本而异,但如果应用程序将文件设置为全局可读且可执行,则应用程序的私有存储区域是一个选项。

  5. 通常(也是唯一“推荐”)运行本机代码的方法是将其构建为与Android的Bionic libc链接的共享库,并使用JNI从dalvik / java应用程序调用它。