anfitriones Android Uso de archivo
-
09-10-2019 - |
Pregunta
Tengo el siguiente problema:
hacer un archivo hosts personalizados para probar algunas de las características de mi solicitud y luego empujarlo a mi emulador de Android. Lo que pasa es que estos ajustes no tienen efecto inmediato. Tengo que esperar unos 10 minutos antes de activarse.
Así que mi pregunta es: ¿cómo hacer que el nuevo archivo de hosts activa al instante? Tengo muchas configuraciones diferentes para probar y no puedo esperar 10 minutos cada vez.
Solución
Java mantiene su propia caché DNS interno. El sistema operativo reflejará el nuevo archivo de hosts de inmediato (verificar que con ping
en la línea de comandos), pero usted tendrá que indicar a Java no caché nada. Añadir estas líneas a su aplicación de prueba:
System.setProperty("networkaddress.cache.ttl" , "0");
System.setProperty("networkaddress.cache.negative.ttl" , "0");
Para obtener más información sobre estas propiedades, consulte aquí: http://docs.oracle.com/javase/ 7 / docs / notas técnicas / guías / net / properties.html
Otros consejos
Me acaba de editar mi archivo de hosts en mi arraigada Samsung Galaxy S, y los cambios que entró en vigor inmediatamente. Tal vez el problema que estamos viendo es algo que ver con ADB?
Hice esto:
- Uso Busybox, copiar el archivo hosts para una ubicación editable con
cp /etc/hosts /mnt/sdcard/hosts.new
; - Editar
/mnt/sdcard/hosts.new
usando el editor de textos pre-instalado, sumando las dos entradas que necesito. Solía ??IP, nombre de host calificado, entonces FQDN, por ejemplo192.168.2.81 siva siva.myinventeddomain.org.au
, pero otros formatos debería, en teoría funcione también; - En BusyBox de nuevo, a raíz
su
; -
/system
es ro por defecto, así que tuve que hacerlo RW conmount -o remount,rw /system
; - Para guardar escribir más tarde,
cd /etc
(con lo cual el intérprete de comandos/system/etc
mostró más que/etc
, lo que me hace sospechar chanchullos enlace simbólico); - copia de seguridad del archivo de hosts por defecto (que contenía sólo
127.0.0.1 localhost
) conmv hosts hosts.old
; - Instalar nuevo archivo hosts con
mv /mnt/sdcard/hosts.new hosts
; - Ejecutar
sync
(simplemente porque soy paranoico - esto no debería ser necesario); - Vuelva a montar
/system
fs ro conmount -o remount,ro /system
; - Salir BusyBox;
- Fired up navegador web (Firefox) y
siva
entrado en la URL combinado / Términos de búsqueda cosita (siva
ser una de las dos entradas anfitriones que es nuestro).
Antes de estos cambios, el paso 11 dio lugar a una estúpida búsqueda en Google de 'siva' o algo así; inmediatamente después de ellos, consigo mi httpd página de la red LAN de host virtual delante, como espero.
Hubo también menos de 10 minutos transcurridos entre el trabajar y no trabajar.
El enlace a Java de Sun mana puede o puede no ser relevante (probablemente no lo es). Android no contiene una máquina virtual Java en absoluto, y mucho menos uno de solar. Se ejecuta una máquina virtual diferente llamada Dalvik - ver entrada de Wikipedia: http://en.wikipedia.org / wiki / Dalvik_% 28software% 29
El hecho de que se puede programar teléfonos Android en un idioma que se parece mucho a Java no viene al caso.
No he intentado usar el archivo de hosts; pero he intentado usar DNS personalizado ...
- Iniciar un servidor DNS en algún lugar (se puede cargar DD-WRT, disponer de un router de lujo, o ejecutar un demonio en su PC).
- OPCIONAL:. Configurar el router local (servidor DHCP) con la ubicación del servidor DNS que se ejecuta (lo hacen por primera vez en la lista de servidores DNS)
- Si el salto # 2: configurar el teléfono para IP estática (Wi-Fi Configuración-> Menú botón-> avanzado). Ajuste el DNS1 ser su servidor.
- conectar su teléfono a esta red a través de WiFi.
Su hecho! Ahora puede administrar nombres DNS / IP desperdicios junto con tiempos de concesión (por ejemplo, por lo que el teléfono se actualizará el IP cada 30 seg si necesita). Un tanto complicado, pero no tiene que cargar el archivo hosts en el teléfono: -).