android emulator - serial - Conecte un dispositivo Android a un servicio web en el host local
uart linux (11)
Implementé un servicio web para una aplicación de Android. El servicio web se ejecuta en mi host local (192.168.1.2). Usando el emulador de Android logré conectarme al servicio web. Intenté conectar mi dispositivo Android utilizando el modo de depuración al servicio web, pero no funcionó. Entonces, mi pregunta es si es posible conectar un dispositivo Android a este servicio web que se ejecuta en mi host local (192.168.1.2) sin usar una IP real.
Es una forma mucho más simple compatible con google!
- Conecte su teléfono a través de USB a la computadora y habilite la depuración de usb
- En su computadora, abra el navegador Chrome y escriba exactamente esta dirección:
chrome://inspect/#devices
- Ahora puede vincular el puerto de su computadora al puerto de su dispositivo mediante el botón de reenvío de puerto . En mi computadora tengo el servicio en la dirección
localhost:61437
y acabo de vincularlo al puerto 8081 del dispositivo. Recuerda marcar la casilla de verificación ''Habilitar reenvío de puertos''
¿Ya resolviste tu problema? También tengo un problema como tú. Estos son los pasos que ya hice:
- desconecta el cable LAN o apaga cualquier otra conexión a Internet de tu pc.
- conecte su móvil Android a su PC usando usb.
- encender el tethering de usb
- de vuelta a tu pc revisa tu ip el mío es 192.168.42.37
- revisa tu aplicación de servicio web en tu pc. digamos http://192.168.42.37/webserviceapp
- de vuelta a su móvil Android. prueba esta url http://192.168.42.37/webserviceapp
Ahora puede acceder a su aplicación de servicio web en su pc desde su teléfono móvil.
Bueno, su localhost es 127.0.0.1 (o :: 1) y su LAN IP es 192.168.1.2. Cada PC / dispositivo que esté conectado bajo su LAN podría llegar a su servicio web en IP 192.168.1.2
Su dispositivo Android debe estar conectado a través de la misma red de área local (LAN), tal vez a través de una conexión Wifi, de modo que pueda hablar con 192.168.1.2.
Si no puede conectar su dispositivo Android a la misma LAN, por ejemplo, tiene solo una conexión 3G que necesita jugar con su enrutador / firewall para redirigir todo el tráfico entrante (tal vez solo el tráfico http) desde su IP pública a su IP privada ( 192.168.1.2)
Espero que esto ayude
En mi caso, ninguna de estas soluciones funciona porque el firewall de Windows lo bloquea, pero poner una regla en el firewall no tiene efecto.
El problema en mi caso es que mi computadora portátil está conectada con Wifi y Windows tenía la conexión Wifi como una red pública. Debo cambiar la conexión de red a la red privada. http://www.comofuncionatodo.net/tecnologia/informatica/como-cambiar-de-red-publica-a-red-privada-en-windows-10/
Escribiré mi proceso, ya que nada en SO me funcionó. Estos son los pasos que tomé para conectar mi dispositivo físico con Android al servicio web que se ejecuta en mi computadora portátil (conectada al teléfono) en localhost:
Habilite la depuración de USB en su dispositivo Android
Ejecute su servicio web en su máquina. Mi servicio web se ejecuta en localhost, el puerto 3000 en desarrollo:
http://localhost:3000/api/...
Ejecute
ifconfig
(Unix) oipconfig
(Windows)- Encuentre la dirección de
inet
su máquina en su interfaz LAN . El mío es 10.0.0.121 para la interfazwlan0
. Externamente, es 68.43.XX.XXX, que no es la dirección que desea utilizar. - Use la IP LAN ya que se está conectando a su servicio en la LAN, de lo contrario, es posible que obtenga un
econnrefused
rechazoeconnrefused
(conexión rechazada) debido a las reglas del firewall. - Cree su URL http con esa dirección IP y el puerto en el que se ejecuta su servicio web. Para mí, es
http://10.0.0.121:3000/api/...
Cuando lance su aplicación, debe realizar las conexiones a su servicio web local en los registros, Wireshark, etc., y debería ver la actividad / datos deseados en su aplicación Android.
Esta solución es para el servidor de desarrollo de GAE en Eclipse
Paso 1: obtener la IP de LAN
Vaya a la consola de comandos de Windows (presione Win + R, luego escriba "cmd"). En la consola, ingrese "ipconfig". Verá una lista de visualización. En Adaptador de LAN inalámbrica Wi-Fi, obtenga la dirección IPv4. Será algo 192.168.xx
LAN IP: 192.168.xx
Paso 2:
Vaya a Eclipse, abra el servidor configurado
En Propiedades del servidor de desarrollo GAE -> Dirección de la interfaz local para enlazar, ingrese la dirección IP de la LAN y guárdela.
Paso 3:
Ahora puede acceder al servidor GAE mediante
8888 - Se refiere al número de puerto, como se menciona en el servidor de desarrollo de GAE
Estoy de acuerdo con las otras respuestas como buenos enfoques si no desea exponer su servicio web DEV en Internet. Sin embargo, es mucho más fácil si solo expone el servicio web. Hay una serie de servicios gratuitos de DNS, pero he encontrado que no-ip es el más fácil de configurar. Lo uso exactamente para el propósito sobre el que preguntaste; entonces puedo probar con mi servicio web DEV en un dispositivo real.
Si elige ir con no-ip (no tengo ninguna afiliación con esa compañía, es solo la que he usado y estoy familiarizado), puede obtener una URL pública de acceso público como http: //MyExampleWebServer.no-ip -org , y no-ip tiene una utilidad que puedes instalar, incluso si estás detrás de una dirección IP dinámica, siempre mantendrá la IP externa correcta asociada a esa URL. Si está trabajando desde su casa, solo necesita asegurarse de que transmita el tráfico del puerto 80 a su dirección IP 192.xxx interna (o al puerto que use, tal vez 443 por ssl).
Es así de fácil y ahora puede acceder a ese servicio web desde cualquier dispositivo que pueda acceder a Internet.
No he trabajado con eso, pero creo que Dyndns también ofrece un servicio similar.
Lo hice en una Mac usando GasMask y Charles Proxy Server. Su teléfono y su computadora deben estar en la misma red.
digamos que la url del servicio web a la que desea acceder se encuentra en http://api.xyz.com , primero usa GasMask para apuntar esa url a su servidor local, luego use Charles para configurar un servidor proxy. A continuación, vaya a la configuración de su teléfono, vaya a Wi-Fi, pulse prolongadamente la red a la que está conectado, elija Modificar red e ingrese la configuración de proxy que Charles le asignó.
Para acceder a los servicios web locales utilizando sus propios hosts de servidor en lugar de direcciones IP con puertos, siga estos pasos:
- Asegúrese de que su dispositivo Android y su máquina local estén en la misma red.
- Instale SquidMan en su Mac, Linux o cualquier otro Servidor Proxy.
- Configure el HTTPPort del servidor proxy (por ejemplo, 5555) y los clientes (por ejemplo, 192.168.0.0/24) en su propia máscara de red y ejecute el servidor proxy.
Usted está usando los servicios web en:
a. Un navegador web: configure la configuración proxy de su dispositivo Android desde Modificar redes WiFi.
segundo. Aplicación de Android: configure el Proxy para su cliente HTTP. Si está utilizando Volley, revise esto: Volley Behind a Proxy server .
- Ahora puede conectarse utilizando cualquier URL que esté utilizando en su host para conectarse al servicio web (por ejemplo, http://my-local-machine.com )
Sugerencia: si obtuvo códigos de respuesta 4xx, asegúrese de que su servicio web permita conexiones de otros hosts no locales.
Si se refiere a su servidor local en su sistema desde el emulador de Android, debe usar http://10.0.2.2:8080/ porque el emulador de Android se ejecuta dentro de una máquina virtual (QEMU), por lo tanto, aquí 127.0.0.1 o localhost será el propio emulador. dirección de bucle invertido.
Tuve los mismos problemas, investigué mucho y descubrí que tienes que hacer cambios explícitos en la configuración de tu firewall. Su firewall está bloqueando su código para acceder desde una fuente externa. Entonces, todo lo que tiene que hacer es ir a la configuración del firewall, agregar el puerto 80 (en mi caso, ya que estoy usando Apache http Server) para entrantes y salientes. Ahora puede probarlo en el navegador de su teléfono http: //192.16 . . **: 80 /