Question

J'ai le problème suivant:

Je fais un fichier hosts personnalisés pour tester certaines fonctionnalités de mon application, puis le pousser à mon émulateur Android. La chose est que ces paramètres ne sont pas immédiatement. Je dois attendre environ 10 minutes avant qu'ils ne deviennent actifs.

Alors ma question est: comment faire les nouveaux hôtes fichier instantanément actif? J'ai beaucoup de paramètres différents à tester et je ne peux pas attendre 10 minutes à chaque fois.

Était-ce utile?

La solution

Java maintient son propre cache DNS interne. Le système d'exploitation reflète le nouveau fichier hosts immédiatement (vérifier que avec ping sur la ligne de commande) mais vous aurez besoin de dire quoi que ce soit java ne cache. Ajoutez ces lignes à votre application de test:

System.setProperty("networkaddress.cache.ttl" , "0"); System.setProperty("networkaddress.cache.negative.ttl" , "0");

Pour plus d'informations sur ces propriétés, voir ici: http://docs.oracle.com/javase/ 7 / docs / technotes / guides / net / properties.html

Autres conseils

Je viens édité sur mon Samsung Galaxy S enraciné mon fichier hosts, et les changements ont pris effet immédiatement. Peut-être le problème que vous voyez est quelque chose à voir avec la BAD?

Je l'ai fait:

  1. Utilisation Busybox, copiez le fichier hosts à un emplacement modifiable avec cp /etc/hosts /mnt/sdcard/hosts.new;
  2. Modifier /mnt/sdcard/hosts.new en utilisant l'éditeur de texte pré-installé, en ajoutant les deux entrées dont j'ai besoin. Je IP, nom d'hôte non qualifié, puis FQDN, par exemple 192.168.2.81 siva siva.myinventeddomain.org.au, mais d'autres formats devraient dans le travail de la théorie aussi;
  3. Dans BusyBox à nouveau, su à la racine;
  4. /system est ro par défaut, donc je devais le faire avec rw mount -o remount,rw /system;
  5. Pour éviter de taper plus tard, cd /etc (après quoi l'invite du shell /system/etc montré plutôt que /etc, ce qui me fait soupçonner manigances symlink);
  6. Sauvegardez le fichier hosts par défaut (qui ne contenait que 127.0.0.1 localhost) avec mv hosts hosts.old;
  7. Installer un nouveau fichier hosts avec mv /mnt/sdcard/hosts.new hosts;
  8. Exécuter sync (simplement parce que je suis paranoïaque - cela ne devrait pas être nécessaire);
  9. Remount /system fs ro avec mount -o remount,ro /system;
  10. Quitter BusyBox;
  11. Fired up navigateur web (FireFox) et siva entré dans l'URL combiné / champ de recherche thingy (siva étant l'une des deux entrées hôtes j'ai ajouté).

Avant ces changements, l'étape 11 a donné lieu à une recherche Google stupide pour « Siva » ou quelque chose; immédiatement après eux, je reçois mon LAN httpd page d'accueil de vhost, comme je l'attends.

Il y avait bien moins de 10 minutes se sont écoulées entre ce travail et cela ne fonctionne pas.

Le lien vers Java doco Sun peut ou peut ne pas être pertinent (il est probablement pas). Android ne contient pas de machine virtuelle Java du tout, et encore moins celui de DIM. Il utilise une autre machine virtuelle appelée Dalvik - voir l'entrée Wikipedia: http://en.wikipedia.org / wiki / Dalvik_% 28software% 29

Le fait que vous pouvez programmer les téléphones Android dans une langue qui ressemble beaucoup à Java est à côté du point.

Je ne l'ai pas essayé d'utiliser le fichier hosts; mais je l'ai essayé d'utiliser DNS personnalisé ...

  1. Démarrer un endroit serveur DNS (vous pouvez charger DD-WRT, un routeur de fantaisie, ou exécuter un démon sur votre PC).
  2. EN OPTION:. Configurer votre routeur local (serveur DHCP) avec l'emplacement du serveur DNS en cours d'exécution (faire d'abord dans la liste des serveurs DNS)
  3. SAUT # 2: Configurer votre téléphone pour IP statique (Wi-Fi Paramètres-> Menu button-> Avancé). Réglez le DNS1 être votre serveur.
  4. Demandez à votre téléphone de connexion à ce réseau via WIFI.

Votre fait! Maintenant, vous pouvez gérer rognures noms DNS / IP ainsi que des temps de location (par exemple si le téléphone mettra à jour l'adresse IP tous les 30 ans si vous avez besoin). Un peu compliqué, mais vous ne devez pas charger le fichier hosts sur le téléphone: -.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top