0

只是想知道是否可以构建可以从 adb shell 运行的 CLI 应用程序?

4

2 回答 2

1

目前这是可能的,尽管没有官方支持/鼓励。

最简单的方法可能是设置一个项目目录,并在其中设置一个带有 Android.mk 和 C 源代码的 jni 文件夹 - 使用 hello-jni ndk 示例作为指南。

然后将 Android.mk 中的 BUILD_SHARED_LIBRARY 更改为 BUILD_EXECTUABLE 并正常从父项目目录运行 ndk-build。

您可能还可以使用 ndk 独立工具链生成功能,或者过去有时有各种非官方的包装系统使 ndk gcc 更易于(ab)使用。

没有多余的地方可以将可执行文件放在安全设备上。由于可执行位的挂载级别阻塞,SD 卡已失效。从大约 Android 2.2 开始,目录 /data/local 可由 adb shell 用户写入,在早期版本中,有一个 /sqlite_stmt_journals 目录,人们经常滥用这些目录进行测试。

另一种可能性是使用 APK 在其私有存储中部署可执行文件并使它们在世界范围内可读和可执行(可能需要 jni 调用 chmod() 来为其他人设置执行位,或者我想你可以执行 chmod shell效用)。缺点是 shell 必须使用长 /data/data/some.package.name 路径,其中中间 /data 文件夹不可浏览!

于 2012-06-24T16:08:24.763 回答
1

是的,使用 C 的 Android NDK 是可能的。您可能需要 root 才能将二进制文件存储在某个地方以执行,请注意,它不会从 sdcard 中运行,通常 /data/local/tmp 是其中之一去提醒。当您将二进制文件推送到上述位置时,您必须在二进制文件本身上设置权限的执行位才能运行它。很可能还必须更改所有权和组所有者。

您的里程将因 ROM 而异。

于 2012-06-24T16:12:56.690 回答