Удаленная отладка с эмулятором Android

Если обе базы данных находятся в том же экземпляре SQL Server, т.е. используйте то же соединение, этот SQL мог бы быть полезным:

INSERT INTO [DestinationDB].[schema].[table] ([column])
SELECT [column] FROM [OriginDB].[schema].[table]
GO
87
задан zakovyrya 9 February 2011 в 22:02
поделиться

3 ответа

Я ранее не пробовал (и даже не замечал) команду adb connect , упомянутую в cmb, но могу подтвердить, что перенаправление TCP-портов самостоятельно - например, через SSH - работает нормально.

Эмулятор прослушивает два порта TCP для каждого экземпляра: 5554 для интерфейса telnet и 5555 для управления обменом данными с такими инструментами, как DDMS. Так что вам, вероятно, удастся обойтись только портом пересылки 5555 (хотя я пока пробовал это только с обоими). Каждый последующий эмулятор принимает следующий доступный кортеж с четным и нечетным номером порта (я думаю, примерно до 5580).

Для справки, я проделал следующие шаги на моем локальном компьютере:

  • ssh -NL 5554: localhost: 5554 -L 5555: локальный : 5555 myuser @ удаленный сервер
  • killall adb; adb devices

Я считаю, что эмулятор пытается уведомить локальный сервер adb при запуске; следовательно, необходимо перезапустить adb, чтобы он мог проверить локальные порты 5554+.

Обратите внимание, что localhost в команде ssh относится к локальному интерфейсу удаленной машины .

adb devices показал новый эмулятор - emulator-5554 - и я мог использовать его, как если бы он работал на моей локальной машине.

66
ответ дан 24 November 2019 в 07:51
поделиться

У меня нет второй машины с SDK под рукой, но я заметил, что порты прослушивания эмулятора (по умолчанию 5554, 5555) прослушивают 0.0.0.0 , то есть доступны с удаленных машин, и что adb --help показывает команда connect : . Я предполагаю, что это заставит его отображаться в устройствах adb , поэтому команды adb работают на нем. Для Eclipse попробуйте «Run / Run Configurations ...» и установите для Target значение Manual. Это дает вам «выбор устройства», который, как я предполагаю, будет включать удаленный эмулятор, если к нему подключен adb. Стоит попробовать.

0
ответ дан 24 November 2019 в 07:51
поделиться

Вот как я решил эту проблему в Windows. Я в значительной степени последовал примеру Кристофера, но я не могу редактировать, поэтому придется дать новый ответ.

Моя проблема заключалась в том, что ADB, как и эмулятор, просто слушал 127.0.0.1, а не 0.0.0.0 для меня. В противном случае я бы использовал TCPMon . Я предполагаю, что это либо другое в Windows, либо изменилось в последних версиях SDK. (Вы можете проверить с помощью netstat -ban .)

  1. Я установил WinSSHD на машине, на которой запущен эмулятор. (Я считаю, что он также должен работать с freeSSHd, но мне не удалось получить работающий там логин.)

  2. Я открыл порт 22 (TCP) в брандмауэре Windows. (WinSSHD может сделать это за вас.)

  3. Я создал виртуальную учетную запись в графическом интерфейсе WinSSHD.

  4. Я создал новое соединение PuTTY между машиной разработки и машиной-эмулятором и убедился, что могу подключиться.

  5. Затем я настроил туннелирование в PuTTY: Connection -> SSH -> Tunnels

    Source port: 5554
    Destination: localhost: 5554
    Type: Local / Auto

    Source port: 5555
    ] Назначение: localhost: 5555
    Тип: Локальный / Авто

    (Подключитесь и держите PuTTY открытым, чтобы поддерживать туннель.)

  6. Теперь я запустил эмулятор на удаленной машине и убедился, что ADB там не запущен.

  7. Я перезапустил ADB на машине разработки ( adb kill-server , затем adb start-server ).

  8. adb devices и удаленный эмулятор отображались как emulator-5554 device . Теперь я мог развернуть и запустить свое приложение прямо из Eclipse / ADT, где эмулятор отображался в разделе виртуальных устройств, как если бы это был локальный эмулятор.

20
ответ дан 24 November 2019 в 07:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: