只是想知道是否可以构建可以从adb shell运行的CLI应用程序?
答案 0 :(得分:1)
目前有可能,虽然没有得到官方支持/鼓励。
最简单的方法可能是设置一个项目目录,并在其中包含一个带有Android.mk和C源代码的jni文件夹 - 使用hello-jni ndk示例作为指南。
然后将Android.mk中的BUILD_SHARED_LIBRARY更改为BUILD_EXECTUABLE并正常运行父项目目录中的ndk-build。
您可能还可以使用ndk独立工具链生成功能,或者过去有时会使用各种非官方封装系统来使ndk gcc更容易(ab)使用。
没有多余的地方可以将可执行文件放在安全的设备上。由于可执行位的挂载级别阻塞,sdcard已关闭。从大约Android 2.2开始,目录/ data / local可由adb shell用户写入,而在早期版本中,有一个/ sqlite_stmt_journals目录,人们经常滥用它们进行测试。
另一种可能性是使用APK在其私有存储中部署可执行文件并使其成为可读和可执行的(可能需要jni调用chmod()来为其他人设置执行位,或者我认为你可以执行chmod shell实用程序)。缺点是shell必须使用长/data/data/some.package.name路径,其中中间/数据文件夹不可浏览!
答案 1 :(得分:1)
是的,有可能,Android NDK使用C.你可能需要植根以便将二进制文件存储在某个地方才能执行,注意,它不会在sdcard上运行,通常/ data / local / tmp是我想到的一个地方。当您将二进制文件推送到所述位置时,您必须在二进制文件本身上设置权限的执行位才能运行它。很可能还需要更改所有权和集团所有者。
您的里程数会因ROM而异。