6

我一直在寻找答案或过去 3 天,但尚未找到有效的答案。我正在尝试编写一个可以使用自定义命令从 ADB 控制的 Android 应用程序。无论如何我可以在应用程序和 ADB shell 之间来回发送字符串吗?

在此先感谢,并为我的菜鸟问题感到抱歉。

4

1 回答 1

12

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

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

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

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

  • 你也许可以用 pty 玩一些游戏

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

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

于 2012-06-18T03:03:01.027 回答