¿Cómo cambio el nombre de mi dispositivo Android?

59

Mi dispositivo Android es el Nexus One. Pero esto debería aplicarse a todos los dispositivos Android actuales.

¿Cómo cambio el nombre de mi dispositivo Android?

Cuando me conecto a las tablas de clientes de mi enrutador inalámbrico, mis dispositivos Android se muestran, por ejemplo, como: android_1234567890abedfc. Me gustaría darle un nombre más legible.

esponja
fuente
También es posible configurar el nombre de host a través del servidor DHCP. Pero no he comprobado si Android usa esta opción de configuración. De todos modos, es solo una opción cosmética.
Flujo
@Flow (Varía pero) Android DHCPCD no tiene dhcpcd-run-hooks para configurar el nombre de host desde DHCP. Al menos en mi dispositivo Samsung Froyo. Tampoco tiene los ganchos ntp. Sin embargo, DHCPCD lo admite.
cde
para GNU Linux: askubuntu.com/questions/9540/how-do-i-change-the-computer-name , los métodos de kernel de bajo nivel funcionarán
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Respuestas:

22

Para cambiar el nombre de host (nombre del dispositivo) debe usar el terminal (como root):

Para Eclair (2.1): echo MYNAME> / proc / sys / kernel / hostname

Para Froyo (2.2): (funciona también en la mayoría de los 2.3) setprop net.hostname MYNAME

Luego reinicie su wi-fi. Para ver el cambio, escriba uname -a

¡algunos dispositivos deben reiniciarse para funcionar!

Eder Gusatto
fuente
¿Funciona esto en gominolas?
jrg
3
Esto funciona, pero no persiste en el reinicio.
palswim
1
uname -ano me muestra el nombre de host, aunque sí lo dice localhost. ¿Qué esperas que muestre?
endolito
15

Resumen:

  • getprop net.hostname (Nombre de host del sistema Android, probablemente nombre de tipo android_24412414)
  • echo $HOSTNAME (nombre de host de shell / terminal / env, probablemente ro.product.device de build.prop)
  • cat /proc/sys/kernel/hostname(Nombre de host del sistema Linux, probablemente localhost )
  • head /etc/hosts(Nombre de host del sistema Linux, probablemente localhost )
  • hostname(El comando no siempre está instalado, si se instala a través del cuadro ocupado, leerá / proc / sys / kernel / hostname )

Depende de la versión de Android que tenga.

Android 4.0 y superior

Las versiones más nuevas utilizarán la build.propentrada correcta . Bueno, es decir, Android lee el build.propproceso de arranque normal. Una vez que se ejecuta el Servicio de conectividad, verifica si net.hostname está configurado en la Configuración, luego, si está vacío, utiliza la ID de Android "android_" + (permanente). Entonces eso es todo lo que necesitas hacer.

Agregar net.hostname=HOSTNAMEHEREa /system/build.prop(puede ser necesaria la raíz). Deje una línea en blanco al final del archivo.

ConnectivityService.java de Kitkat, observe la declaración IF isEmpty :

    // setup our unique device name
    if (TextUtils.isEmpty(SystemProperties.get("net.hostname"))) {
        String id = Settings.Secure.getString(context.getContentResolver(),
                Settings.Secure.ANDROID_ID);
        if (id != null && id.length() > 0) {
            String name = new String("android-").concat(id);
            SystemProperties.set("net.hostname", name);

Android 2.3 y versiones inferiores

Las versiones anteriores, Gingerbread, Froyo, etc., simplemente lo golpean. No molesta verificar. Establecerá net.hostname en android_24412414 ... pase lo que pase. Por lo tanto, deberá cambiarlo una vez que el Servicio de conectividad haya terminado de cargarse. Afortunadamente, solo ejecuta el inicio una vez, no en cada nueva conexión. Entonces solo tenemos que correr setprop net.hostname HOSTNAMEHEREdespués de eso para que se pegue. Desafortunadamente, se ejecuta bastante tarde en el proceso de arranque, por lo que necesita algo que haga los cambios en boot_complete. Lo más probable es que una aplicación se ejecute sola.

ConnectivityService.java de Froyo :

    // setup our unique device name
    String id = Settings.Secure.getString(context.getContentResolver(),
            Settings.Secure.ANDROID_ID);
    if (id != null && id.length() > 0) {
        String name = new String("android_").concat(id);
        SystemProperties.set("net.hostname", name);

Pero luego hay otro problema.

¡La configuración net.hostname no se copia en todo el sistema! Si usa una aplicación de consola / terminal, es posible que no obtenga el mismo nombre de host. Mi teléfono, un Samsung Sidekick 4G (basado en semi-Galaxy S) tiene un init.rc que se ejecuta hostname localhost, por lo que todos los comandos debajo no verán su nombre de host build.prop ni el nombre de host android_id. Así que también debes configurar eso.

hostname HOSTNAMEHERE o echo HOSTNAMEHERE > /proc/sys/kernel/hostname

Nota: Dependiendo de cómo lo esté haciendo, necesitará ejecutar el comando anterior como root para que funcione. Init.rc generalmente se encuentra en la partición del sistema de solo lectura, por lo que se necesita acceso de root para editarlo.

El comando dhcpcd, que se ejecuta para obtener una dirección dhcp, no se actualizará a un nombre de host proporcionado por el servidor (eso se puede solucionar agregando dhcpcd-run-hooks y dhcpcd.conf), y no proporcionará un nombre de host al servidor dhcp si $(hostname)(El comando hostname) está en blanco o localhost, y no utiliza internamente net.hostname. libnetutils se usa para llamar a dhcpcd con -h "net.hostname", pero si por alguna razón decide no llamar con -h, DHCPCD TODAVÍA ENVIARÁ EL NOMBRE DEL SISTEMA a través de gethostname (), siempre que no sea "(none) "," localhost "o vacío. En Stock Froyo de todos modos. Samsung atornilló al perro en algunos dispositivos como el mío. No se transfiere el nombre de host, el tiempo de red forzado, etc.

Mi solución para Gingerbread y debajo de Samsung, edite la configuración de DHCP Client Daemon:

Lo último que puede hacer es editar /etc/dhcpcd/dhcpcd.conf. Si agrega hostname YOURHOSTNAMEal archivo, lo usará, a menos que se proporcione un nombre de host en la línea de comandos. Esto no solucionará el problema de android_234etc, pero lo hará si el nombre de host es localhost (Mi problema, ya que Samsung atornilló libnetutils y localhost en init.rc). Necesitará Root, pero esto funciona en todos los reinicios. Esto no funcionará si se llama a dhcpcd con la opción -h Hostname.

cde
fuente
10

Encontré una manera de hacer esto en mi Nexus 7 rooteado con 4.2.2. La configuración se guarda de forma persistente y funciona durante los reinicios.
Fuente: http://nileshgr.com/2012/10/13/how-to-change-wifi-host-name-of-your-android-device

  1. Tenga en cuenta que el dispositivo debe estar rooteado para usar adb
  2. correr adb pull /system/build.prop
  3. Edite el build.proparchivo y agreguenet.hostname=NewHostname
  4. Ejecutar adb push build.prop /sdcard/build.prop(o /mnt/sdcard, si falla)
  5. Ejecute adb shelly ejecute los siguientes comandos:
    $ su
    # mount -o rw,remount /system
    # cp /sdcard/build.prop /system/build.prop(o /mnt/sdcardsi lo utilizó anteriormente)
    # mount -o ro,remount /system
    # exit
  6. Reiniciar el dispositivo
Lennart
fuente
Esto se solucionó en las versiones más recientes de Android. Comprueba net.hostname desde build.prop. Las versiones anteriores de Android no (principalmente Froyo, tal vez Gingerbread).
cde
ICS no es 4.2.2, eso sería JB
HasH_BrowN
Una forma más fácil de hacer esto es usar el setpropcomando a través de un shell raíz en el dispositivo: por ejemplosetprop net.hostname NewHostName
Mark
1
@mark que se golpearía al reiniciar. Esta respuesta es una versión permanente.
cde
9

Esto funciona en CyanogenMod y probablemente en otras ROM modificadas, pero no en ROM de AOSP:

Vaya a Configuración> Opciones de desarrollador y desplácese hacia abajo hasta Nombre de host del dispositivo . La raíz no es necesaria.

(Haga clic en la imagen para ampliarla)

IMG:

cbabb
fuente
2
Sí, no puedes hacer esto en una tableta Acer A100 con Android 4.0.3. De hecho, ni siquiera tiene "Nombre de host del dispositivo" en las Opciones de desarrollador.
bgmCoder
7

No he ejecutado stock en mucho tiempo, pero en Configuración de la aplicación> Desarrollo, verá la opción 'Nombre de host del dispositivo'.

Tim T
fuente
¿En qué versiones de Android? Cuando miro las opciones de desarrollo en mi Droid 3 (Android 2.3.4), no tengo esa opción.
Michael Kohne
3
Esto funciona en CyanogenMOD y probablemente en otras ROM modificadas, pero no en ROM de AOSP.
Caleb
Completamente dependiente del fabricante y constructor, así como de la versión de Android.
cde
5

Ve a Google Play Store. Busque "hostname" y descargue la aplicación de cambio de nombre de host .

Debe estar enraizado.

Ryan Knell
fuente
¿Cambiar el nombre del dispositivo estropeará algo internamente?
bgmCoder
0

El nombre de host se usa para identificar y recordar fácilmente los hosts conectados a una red. Se establece en el arranque, por ejemplo, /etc/hostnameen sistemas basados ​​en Linux. El nombre de host también forma parte DHCPREQUEST(estandarizado como código 12 por IETF) que un cliente DHCP (dispositivo Android en nuestro caso) hace al servidor DHCP (enrutador WiFi) para obtener una dirección IP asignada. El servidor DHCP almacena los nombres de host para ofrecer servicios como DNS .

Android, en lugar de usar el servicio de nombre de host del kernel de Linux , usó la propiedad net.hostnamepara establecer un nombre de host único para cada dispositivo basado en la ID de Android. Esta propiedad de nombre de host también se usó para el protocolo de enlace DHCP. Sin embargo, desde Android 5 - cuando el nativo dhcpcdfue abandonado en favor del cliente Java DHCP - nombre de host es nula en DHCPREQUEST. nonet.hostname está configurado ni evaluado por el cliente DHCP. Por lo tanto, los enrutadores WiFi no muestran nombres de host para dispositivos Android más nuevos, ni podemos configurarlo / desactivarlo / cambiarlo.

Irfan Latif
fuente