如何在ADB shell和Android应用程序之间来回发送消息?

如何在ADB shell和Android应用程序之间来回发送消息?,android,android-intent,adb,Android,Android Intent,Adb,在过去的三天里,我一直在寻找答案,但还没有找到一个有效的答案。我正在尝试编写一个Android应用程序,可以通过自定义命令从ADB进行控制。我是否可以在应用程序和ADB shell之间来回发送字符串 提前谢谢,很抱歉我的问题。当然,有几种方法可以做到这一点 您可以使用unix域套接字,从android应用程序和通过滥用ndk生成的命令行可执行文件中打开它,推送到设备上的版本相关位置(/data/local、/sqlite\u stmt\u journals等)并运行。编辑:在最近的androi

在过去的三天里,我一直在寻找答案,但还没有找到一个有效的答案。我正在尝试编写一个Android应用程序,可以通过自定义命令从ADB进行控制。我是否可以在应用程序和ADB shell之间来回发送字符串


提前谢谢,很抱歉我的问题。

当然,有几种方法可以做到这一点

  • 您可以使用unix域套接字,从android应用程序和通过滥用ndk生成的命令行可执行文件中打开它,推送到设备上的版本相关位置(/data/local、/sqlite\u stmt\u journals等)并运行。编辑:在最近的android版本中可能没有这样的可写/可执行目录。您可能需要让应用程序本身将可执行文件写入其私有目录,并对其设置全局读取和执行权限。进一步编辑:adb也可以转发unix套接字

  • 互联网套接字也是一样,只是现在您可以选择设置adb端口转发(前提是android应用程序是“服务器”端),以便从开发机器上运行的进程直接与android应用程序通信,而无需通过adb外壳传递数据。除非声明互联网许可是令人反感的(这应该比让你的PC端应用“驱动”adb更令人担忧),否则这可能是最接近“官方”功能且对android版本依赖性最小的方法。它还可以简单地适应通过wifi进行通信

  • 您可以使用一对FIFO,并使用shell命令写入和读取它们(为了可移植性,请在应用程序的专用存储中创建它们,但要使它们在世界范围内可读/写)

  • 你可以用pty玩一些游戏

  • 我想你可以使用文件作为邮箱

  • 您可以使用“am”命令发送意图(如果通信效率有点低,至少对启动android应用程序有用)