Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以为android构建可从adb shell执行的CLI应用程序?_Android_Shell_Command Line Interface_Adb - Fatal编程技术网

是否可以为android构建可从adb shell执行的CLI应用程序?

是否可以为android构建可从adb shell执行的CLI应用程序?,android,shell,command-line-interface,adb,Android,Shell,Command Line Interface,Adb,只是想知道是否有可能构建可以从adb shell运行的CLI应用程序?目前这是可能的,尽管官方不支持/鼓励 最简单的方法可能是设置一个项目目录,并在其中设置一个带有Android.mk和C源代码的jni文件夹——使用hello jni ndk示例作为指南 然后将Android.mk中的BUILD_SHARED_库更改为BUILD_EXECTUABLE,并像往常一样从父项目目录运行ndk BUILD 您可能还可以使用ndk独立工具链生成功能,或者在过去的一些时候有各种非官方的包装器系统,以使ndk

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

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

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

然后将Android.mk中的BUILD_SHARED_库更改为BUILD_EXECTUABLE,并像往常一样从父项目目录运行ndk BUILD

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

您可以在安全设备上放置可执行文件的位置不多。SD卡因可执行位的装载级别阻塞而失效。大约从Android 2.2开始,adb shell用户可以编写目录/data/local,在早期版本中,有一个/sqlite\u stmt\u journals目录,人们经常滥用该目录进行测试


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

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

您的里程数将因ROM而异