Как я могу отправлять сообщения туда и обратно между оболочкой ADB и приложением Android?

Я искал ответ или последние 3 дня и еще не нашел того, который работает. Я пытаюсь написать приложение для Android, которым можно управлять из ADB с помощью пользовательских команд. Могу ли я в любом случае отправлять строки между приложением и оболочкой ADB?

Заранее спасибо, и извините за мой нубский вопрос.


person Lai Xue    schedule 18.06.2012    source источник


Ответы (1)


Конечно, есть несколько способов сделать это.

  • Вы можете использовать сокет домена unix и открывать его как из приложения для Android, так и из исполняемого файла командной строки, который вы создадите, злоупотребляя ndk, нажимая на зависящее от версии местоположение на устройстве (/data/local, /sqlite_stmt_journals и т. д. ) и бегом. Изменить: в более поздних версиях Android может не быть таких доступных для записи/исполняемых каталогов. Возможно, вам придется заставить само приложение записать исполняемый файл в свой частный каталог и установить для него глобальные разрешения на чтение и выполнение. Дальнейшее редактирование: adb также может пересылать сокеты unix.

  • То же самое с интернет-сокетом, только теперь у вас есть возможность настроить перенаправление порта adb (при условии, что приложение Android является "серверным" концом), чтобы обмениваться данными из процесса, работающего на вашей машине разработки, непосредственно с приложением Android, без передачи данных через adb shell. Если объявление разрешения в Интернете не вызывает возражений (это должно вызывать меньше беспокойства, чем позволить вашему приложению на стороне ПК «управлять» adb), это, вероятно, метод, который будет наиболее близок к «официальным» возможностям и будет иметь наименьшую зависимость от версии Android. Его также можно тривиально адаптировать для связи по Wi-Fi.

  • Вы можете использовать пару fifos и записывать и читать их с помощью команд оболочки (для переносимости создайте их в частном хранилище приложения, но сделайте их доступными для чтения/записи во всем мире)

  • вы можете играть в некоторые игры с pty

  • вы могли бы использовать файлы в качестве почтовых ящиков

  • вы можете использовать команду «am» для отправки намерений (полезно, по крайней мере, для запуска приложения для Android, если оно немного неэффективно для связи)

person Chris Stratton    schedule 18.06.2012