是否可以为安卓构建可以从 adb 外壳执行的 CLI 应用程序



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

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

您的里程将因 ROM 而异。

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

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

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

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

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

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

最新更新