Доступ к локальному компьютеру с USB-устройства Android
У меня есть устройство Android (вкладка Samsung Galaxy), подключенное к компьютеру через USB .
Я хочу использовать WebServices и запустить веб-страницу, которая находится на моем локальном сервере xampp моего ПК на моем устройстве Android.
Я могу добиться этого, если у меня есть оба, мой компьютер и устройство Android, подключенные к одной беспроводной сети.
Однако возможно получить доступ к странице localhost без какого-либо беспроводного соединения, используя только соединение USB .
(PS: этот же сценарий работает, когда я запускаю приложение на эмуляторе и использую ip 10.0.2.2 для доступа к localhost на моем ПК)
13 ответов
Google опубликовал решение этой проблемы здесь.
Шаги:
- Подключите ваше устройство Android к компьютеру для разработки с включенной отладкой по USB
- Откройте Chrome на своем компьютере разработчика, откройте новую вкладку, щелкните правой кнопкой мыши на новой вкладке браузера, нажмите "Проверить".
- Нажмите значок с тремя точками справа вверху , -> Дополнительные инструменты, удаленные устройства.
- Посмотрите на нижнюю часть экрана и убедитесь, что имя вашего устройства появилось в списке с зеленой точкой.
- Посмотрите ниже на часть настроек, проверьте метку переадресации портов
- Добавить правило. Например, если ваш веб-сервер python работает на вашем компьютере localhost:5000, и вы хотите получить к нему доступ через порт 3333 устройства, вы набираете
3333
в левой части и введитеlocalhost:5000
и нажмите добавить правило. - Вуаля, теперь вы можете получить доступ к вашему веб-серверу с вашего устройства. Попробуйте открыть новую вкладку браузера и зайти на http://localhost:3333/ со своего устройства.
Я наконец решил эту проблему. Я использовал Samsung Galaxy S с Froyo. "Порт" ниже - это тот же порт, который вы используете для эмулятора (10.0.2.2:port). Что я сделал:
- сначала подключите ваше реальное устройство с помощью USB-кабеля (убедитесь, что вы можете загрузить приложение на свое устройство)
- получить IP-адрес от подключенного устройства, которое начинается с 192.168.xx: порт
- откройте "Центр управления сетями и общим доступом"
- нажмите на "Local Area Connection" на устройстве и выберите "Details"
- скопируйте "IPv4-адрес" в свое приложение и замените его следующим образом:
http://192.168.x.x:port/test.php
- загрузить свое приложение (снова) на свое реальное устройство
- перейдите в свойства и включите "USB-модем"
- запустите ваше приложение на устройстве
Теперь должно работать.
Я читал многочисленные форумы и пробовал играть в приложения, но до сих пор не нашел решения.
Я считаю, что мой сценарий похож на ваш, но я уточню, чтобы помочь другим. У меня есть локальный веб-сайт и веб-сервисы, которые будут использоваться моим приложением для Android. Мне нужно, чтобы это работало в дороге для демонстрации только с моим ноутбуком и без сетевого подключения.
Примечание. Использование моего iPhone в качестве точки доступа Wi-Fi и подключение компьютера и устройства Android работало, но подключение к iPhone 4S работает медленно и регулярно прерывается.
Мое решение заключается в следующем:
- Отключите сетевые кабели на ПК и выключите Wi-Fi.
- Отключить Wi-Fi на устройстве Android
- Подключите Android к ПК через USB
- Включите "USB-модем" в меню Android. (Под сетями-> подробнее...-> Модем и точка доступа ")
- Получить IP-адрес вашего компьютера, который был назначен с помощью USB-кабеля. (откройте командную строку и введите "ipconfig", затем найдите IP-адрес, назначенный сетевым адаптером USB)
- Откройте браузер на ПК, используя найденный IP-адрес вместо localhost для тестирования. т.е.
http://192.168.1.1/myWebSite
- Откройте браузер на андроид и проверьте, работает ли он
Я сделал это на компьютере с Windows, и он работал отлично!
Включите USB-модем в вашем мобильном телефоне. Введите ipconfig в командной строке на вашем компьютере и найдите ipv4 для "локального подключения адаптера Ethernet x" (в основном, первого). Теперь перейдите в свой мобильный браузер, введите ipv4 с номером порта вашего веб-приложения. например:- 192.168.40.142:1342
Это работало с этими простыми шагами!
- Убедитесь, что на компьютере установлен adb, на телефоне включена отладка по USB и телефон разрешил доступ к компьютеру. Подключите телефон к компьютеру через USB-кабель и убедитесь, что он виден (он должен отображаться в команде Bash.
adb devices
. - В браузере Chrome на вашем компьютере откройте chrome: // inspect / # devices, нажмите кнопку "Переадресация портов", установите флажок "Включить переадресацию портов" и добавьте порт на компьютере, который должен быть доступен с телефона ( подробные инструкции здесь). Вам нужно будет держать открытой вкладку с chrome://inspect/#devices.
- В браузере телефона перейдите по адресу localhost:[номер_порта], и он должен отобразить все, что выполняется на компьютере.
Это работает в Windows и Ubuntu Linux, а также должно работать на Mac.
Вот фрагмент кода моего приложения для Android:
Это приложение может связываться с моделью HTTP get-post между сервлетом, работающим на сервере, и устройством Android, подключенным в режиме отладки по USB (поскольку приложение находилось в стадии разработки).
Я также могу запустить приложение через Wi-Fi, когда сервер Tomcat Apache 7 работает (когда разработка приложения была завершена).
Чтобы получить ваш IP-адрес
- Перейти к командной строке
- Тип
ipconfig
- Нажмите ввод
В списке IPv4-адрес - ваш IP-адрес.
Как легко получить доступ к LocalHost в Actual Android Device -> Подключите ваш компьютер к устройству Android через USB
- Перейти к проверке Chrome нажмите "F12" или Control+Shift+C
Проверьте нижнюю часть инструмента для проверки хрома.
Теперь перейдите в настройки на вкладке "Удаленное устройство".
Вкладка "Удаленные устройства"
установите флажок "Обнаружить USB-устройство", а также установите флажок "Переадресация портов".
Теперь нажмите "Добавить правила", введите любой порт устройства, например (4880) и в поле "Локальный адрес" введите фактический адрес локального хоста в моем случае, например (127.0.0.1:480).
After Adding the Rule go to your android studio -> inside your code URL( http://127.0.0.1:4880/). Remember to change the port from 480 -> 4880.
Go to Remote Device Tab in Chrome and Click on your connected Device. Add New URL(127.0.0.1:4880) Inspect the Android Device Chrome Browser
Check your Actual Device Chrome Browser and start Debugging the code on Actual Android device.
Ответ Zsivics Sanel выше отлично работает для отладки по USB, но если вы хотите получить доступ к своему локальному хосту на устройстве для Wifi ADB, вы можете использовать команду
adb reverse tcp:port tcp:port
и используйте ссылку на вашем Android, чтобы получить доступ к
http://localhost:port/
вашего компьютера.
- Это также работает для отладки по USB :)
Подробный ответ с объяснением здесь .
Здравствуйте, вы можете получить доступ к вашему xampp localhost по
- Панель управления ->
- брандмауэр Windows защитник ->
- Расширенные настройки (слева) -> Входящие правила -> Новое правило -> Порт -> в конкретный локальный порт, напишите свои порты Apache -> далее -> далее, после чего вы сможете получить доступ к локальному хосту с помощью локального ПК. Айпи адрес:
Мне очень понравился ответ Джона, но я хотел бы дать его с некоторыми изменениями для тех, кто хочет протестировать некоторую конфигурацию клиент / сервер, запустив клиентский TCP на подключенном через USB устройстве Mobile и сервер на локальном ПК.
Во-первых, совершенно очевидно, что 10.0.2.2 не будет работать, потому что это РЕАЛЬНОЕ аппаратное мобильное устройство, а не симулятор.
Так что следуйте инструкциям Джона:
- Отключите все сетевые кабели на ПК и выключите Wi-Fi.
- Выключить вайфай на андроид устройстве
- Подключите устройство Android к ПК через USB
Включите "USB-модем" (USB-модем / USB-сотовый модем / USB שימוש כמודם סלולרי) в меню Android. (Под сетями-> подробнее...-> Модем и точка доступа ")
- Это USB-соединение будет выступать в качестве DHCP-сервера для вашего соединения с одним ПК, поэтому оно назначит вашему ПК выделенный (динамический) IP-адрес в локальной сети USB. Теперь все, что вам нужно сделать, это сообщить клиентскому приложению этот IP-адрес и порт.
Получите IP-адрес вашего компьютера (который был назначен с помощью USB-кабеля). (Откройте командную строку и введите "ipconfig", затем найдите IP-адрес, назначенный сетевым адаптером USB, в Linux его
ifconfig
или Ubuntu "Информация о подключении" и т. д.)Скажите приложению подключиться к этому IP (т.е. 192.168.42.87) с помощью чего-то вроде (Java - клиентская сторона):
String serverIP = "192.168.42.87"; int serverPort = 5544; InetAddress serverAddress = InetAddress.getByName(serverIP); Socket socket = new Socket(serverAddress, serverPort); ...
Наслаждаться..
Подключение телефона Android через USB-кабель и доступ к http-серверу на компьютере.
- Брандмауэр - выключите его, как только все заработает, вы можете добавить правило в разделе "Правила для входящих подключений", включить HTTP-сервер Apache (UDP и TCP) (или любой другой используемый вами HTTP-сервер). Предупреждение - если вы отключите брандмауэр, ваш компьютер станет уязвимым на интернет-атаки. Поэтому сначала отключите интернет и отключитесь от сети.
- Подключите USB-кабель. Если появится окно сети, выберите Домашняя сеть. Если он не появляется, возможно, он установлен в Public (что не работает), поэтому перейдите в: Панель управления \ Сеть и Интернет \ Центр управления сетями и общим доступом (в win7) и установите для него значение Домашняя сеть. Это может дать вам следующий экран после того, как вы нажмете на него, чтобы поделиться изображениями, музыкой... просто нажмите "Отмена". На главном экране домашняя сеть все еще будет активна.
- Вам нужно, чтобы IP-адрес компьютера, локальный хост или другие псевдонимы не работали. Чтобы получить IP-адрес, в командной строке Windows введите ipconfig и найдите IPv4-адрес.,,,,,,,,,,: 192.168.###.### Это IP, который ваш телефон дал вашему компьютеру.
Теперь все готово, в браузере телефона попробуйте получить доступ к тестовому html-файлу с сервера вашего компьютера, он должен отображаться нормально.
Для разработчиков Android, теперь в вашем коде Android, вы должны использовать "http://", иначе это не будет работать. Например: MyAsyncTask.execute("http://192.168.123.123/test.html")
Часть II - Настройка IP на фиксированный / статический.
Теперь, когда все работает, каждый раз, когда вы отключаете кабель и подключаете его снова, ваш IP будет меняться. И если вы используете его где-то, как внутри кода, вам придется обновлять его каждый раз! Решение, которое я придумал, - установить статический IP-адрес.
- Подключив и подключив телефон, вернитесь в Центр управления сетями и общим доступом и нажмите на подключение по локальной сети "Подключения:".
- На следующем экране выберите Свойства, затем выделите IP 4, нажмите там свойства и нажмите "Использовать следующий IP-адрес".
- Поместите Default Gateway и Subnet Mask точно так же, как это было в ipconfig, а для IP-адреса измените только последние 3 цифры на любое значение от 1 до 255
Этот IP-адрес будет вашим новым фиксированным / статическим IP-адресом, и он останется прежним при следующем подключении телефона.
Проверьте параметры типа подключения USB. У вас должен быть один, называемый "через Интернет". Это позволит вашему телефону использовать то же соединение, что и ваш компьютер.
Проблема, с которой я столкнулся, возможно, это поможет кому-то, я долгое время работал, когда мой компьютер и устройство Android были подключены к одной сети Wi-Fi, а устройство Android, подключенное через IPV4-адрес компьютера с открытым портом 8080, пробило брандмауэр.
ОДИН ДЕНЬ: Я установил эмулятор Genymotion, чтобы отлаживать пользовательский интерфейс на разных экранах. СПАСИБО конфигурациям сети Genymotion / Virtualbox, он испортил мой WiFi-адаптер.
Исправление заключалось в перенастройке настроек IPV4 / TCP на сетевом адаптере WiFi: