1

我下载了适用于 Android 的 c4droid 应用程序,并通过system();. 我正在学习有些东西有效,而另一些则无效。大多数很酷的东西都不起作用,这似乎是由于我的用户配置文件没有被授予在 Linux 操作系统级别执行此类命令的权限。

于是又尝试了另一个实验。我为 arm 处理器准备了一个特殊的 Gnu 编译器,并编译了一个简单的 hello world 应用程序。然后我戴上手机并尝试通过 c4droid 应用程序(如system("./myapp.bin");. 我收到一条permission denied消息。

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

我真的在寻找一种方法来做到这一点,而无需生根或下载诸如busybox之类的东西并使用su。

4

1 回答 1

1

许多许多不同的问题。

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

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

  3. 您可能想要做的一些事情实际上需要shell(甚至更重要的是,应用程序用户 ID)帐户没有的权限。只有在模拟器或工程设备上,adb shell 默认以 root 身份运行,但在“rooted”设备上,您可能能够进入 root shell。

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

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

于 2013-05-09T18:56:52.817 回答