Come posso cambiare il nome del mio dispositivo Android?


59

Il mio dispositivo Android è il Nexus One. Ma questo dovrebbe valere per tutti gli attuali dispositivi Android.

Come posso cambiare il nome del mio dispositivo Android?

Quando mi collego alle tabelle client del mio router wireless, i miei dispositivi Android sono elencati ad esempio come android_1234567890abedfc. Vorrei dargli un nome più leggibile.


È anche possibile configurare il nome host tramite il server DHCP. Ma non ho verificato se Android utilizza questa opzione di configurazione. È comunque solo un'opzione cosmetica.
Flusso


@Flow (varia ma) DHCPCD Android non ha i dhcpcd-run-hook per impostare il nome host da DHCP. Atleast sul mio dispositivo Samsung Froyo. Non ha nemmeno gli hook ntp. DHCPCD tuttavia lo supporta.
cde

Risposte:


22

Per cambiare il nome host (nome del dispositivo) devi usare il terminale (come root):

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

Per Froyo (2.2): (funziona anche con la maggior parte dei 2.3) setprop net.hostname MYNAME

Quindi riavviare il Wi-Fi. Per vedere la modifica, digitare uname -a

alcuni dispositivi devono essere riavviati per lavoro!


Funziona su jelly bean?
jrg

3
Funziona, ma non persiste al riavvio.
Palswim,

1
uname -anon mostra il nome host per me, anche se lo dice localhost. cosa ti aspetti che mostri?
Endolith,

15

Sommario:

  • getprop net.hostname (Nome host del sistema Android, probabilmente nome tipo android_24412414)
  • echo $HOSTNAME (shell / terminal / env hostname, probabilmente ro.product.device da build.prop)
  • cat /proc/sys/kernel/hostname(Nome host del sistema Linux, probabilmente localhost )
  • head /etc/hosts(Nome host del sistema Linux, probabilmente localhost )
  • hostname(Il comando non sempre installato, se installato tramite la casella di occupato, leggerà / proc / sys / kernel / hostname )

Dipende dalla versione di Android che hai.

Android 4.0 e versioni successive

Le versioni più recenti useranno la build.propvoce giusta . Bene, vale a dire, Android legge build.propcome è normale processo di avvio. Una volta eseguito il servizio di connettività, verifica se net.hostname è impostato nelle Impostazioni, quindi se è vuoto, utilizza l'ID Android "permanente_" + (permanente). Quindi è tutto ciò che devi fare.

Aggiungi net.hostname=HOSTNAMEHEREa /system/build.prop(potrebbe essere necessario il root). Lascia una riga vuota alla fine del file.

Kitivity di ConnectivityService.java, nota l'istruzione 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 e versioni precedenti

Versioni precedenti, Gingerbread, Froyo, ecc. Non si preoccupa di controllare. Imposta net.hostname su android_24412414 ... non importa quale. Quindi dovrai cambiarlo dopo che il servizio di connettività ha terminato il caricamento. Fortunatamente, esegue l'avvio solo una volta, non su ogni nuova connessione. Quindi dobbiamo solo rincorrerlo setprop net.hostname HOSTNAMEHEREperché si attacchi. Sfortunatamente, viene eseguito abbastanza tardi nel processo di avvio, quindi è necessario qualcosa che apporti le modifiche su boot_complete. Molto probabilmente un'app che funziona da sola.

Froyo's ConnectivityService.java :

    // 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);

Ma poi c'è un altro problema.

L'impostazione net.hostname, non viene copiata in tutto il sistema! Se si utilizza un'applicazione console / terminale, è possibile che non si ottenga lo stesso nome host. Il mio telefono, un Samsung Sidekick 4G (basato su semi-Galaxy S) ha un init.rc che gira hostname localhost, quindi tutti i comandi sottostanti non vedranno né il tuo nome host build.prop né il nome host android_id! Quindi è necessario impostare anche quello.

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

Nota: a seconda di come lo stai facendo, dovrai eseguire il comando sopra come root per farlo funzionare. Init.rc è in genere sulla partizione di sistema di sola lettura, quindi per modificarlo è necessario l'accesso root.

Il comando dhcpcd, che viene eseguito per ottenere un indirizzo dhcp, non verrà aggiornato a un nome host fornito dal server (che può essere risolto aggiungendo i giusti dhcpcd-run-hooks e dhcpcd.conf) e non fornirà un nome host al server dhcp se $(hostname)(Il comando hostname) è vuoto o localhost e non utilizza internamente net.hostname. libnetutils è usato per chiamare dhcpcd con -h "net.hostname", ma se per qualche motivo decide di non chiamare con -h, DHCPCD ANCORA INVIERA 'IL SISTEMA HOSTNAME tramite gethostname (), purché non sia "(nessuno) "," localhost "o vuoto. A magazzino Froyo comunque. Samsung ha fregato il cane su alcuni dispositivi come il mio. Nessun nome host passante, tempo di rete forzata, ecc.

La mia soluzione per Gingerbread e sotto Samsung, modifica la configurazione del demone client DHCP:

L'ultima cosa che puoi fare è modificare /etc/dhcpcd/dhcpcd.conf. Se si aggiunge hostname YOURHOSTNAMEal file, lo utilizzerà, a meno che non venga fornito un nome host sulla riga di comando. Questo non risolverà il problema android_234etc, ma lo farà se il nome host è localhost (Il mio problema, dal momento che Samsung ha fregato libnetutils e localhost in init.rc). Avrai bisogno di Root, ma questo funziona attraverso i riavvii. Questo non funzionerà se dhcpcd viene chiamato con l'opzione -h Hostname.


10

Ho trovato un modo per farlo sul mio Nexus 7 con root 4.2.2. L'impostazione viene salvata in modo persistente e funziona durante i riavvii.
Fonte: http://nileshgr.com/2012/10/13/how-to-change-wifi-host-name-of-your-android-device

  1. Nota che il dispositivo deve essere rootato per usare adb
  2. Correre adb pull /system/build.prop
  3. Modifica il build.propfile e aggiunginet.hostname=NewHostname
  4. Esegui adb push build.prop /sdcard/build.prop(o /mnt/sdcard, se fallisce)
  5. Esegui adb shelled esegui i seguenti comandi:
    $ su
    # mount -o rw,remount /system
    # cp /sdcard/build.prop /system/build.prop(o /mnt/sdcardse l'hai usato in precedenza)
    # mount -o ro,remount /system
    # exit
  6. Riavvia il dispositivo

Questo problema è stato risolto nelle versioni più recenti di Android. Controlla net.hostname da build.prop. Le versioni precedenti di Android non lo fanno (principalmente Froyo, forse Gingerbread).
cde

ICS non è 4.2.2, che sarebbe JB
HasH_BrowN il

un modo più semplice per farlo è utilizzare il setpropcomando tramite una shell di root sul dispositivo: ad esempiosetprop net.hostname NewHostName
Segna il

1
@mark che verrebbe bloccato al riavvio. Questa risposta è una versione permanente.
cde

9

Funziona su CyanogenMod e probabilmente su altre ROM modificate ma non su ROM AOSP stock:

Vai su Impostazioni> Opzioni sviluppatore e scorri verso il basso fino a Nome host dispositivo . La radice non è necessaria.

(Clicca sull'immagine per ingrandire)

IMG:


2
Sì, non puoi farlo su un tablet Acer A100 con Android 4.0.3. In realtà, non ha nemmeno "Nome host dispositivo" nelle Opzioni sviluppatore.
bgmCoder

7

Non eseguo lo stock da molto tempo ma in Impostazioni applicazione> Sviluppo vedrai l'opzione 'Nome host dispositivo'.


su quali versioni di Android? Quando guardo le opzioni di sviluppo sul mio Droid 3 (Android 2.3.4), non ho questa opzione.
Michael Kohne,

3
Funziona su CyanogenMOD e probabilmente su altre ROM modificate ma non su ROM AOSP di scorta.
Caleb,

Completamente dipendente dal produttore e dal costruttore, nonché dalla versione Android.
cde

5

Vai su Google Play Store. Cerca "hostname" e scarica l' app di modifica del nome host .

Deve essere rootato.


Rinominare il dispositivo rovinerà qualcosa internamente?
bgmCoder

0

Il nome host viene utilizzato per identificare e ricordare facilmente gli host collegati a una rete. È impostato all'avvio, ad esempio da /etc/hostnamesistemi basati su Linux. Anche il nome host fa parte di DHCPREQUEST(standardizzato come codice 12 da IETF) che un client DHCP (nel nostro caso dispositivo Android) fa al server DHCP (router WiFi) per ottenere un indirizzo IP assegnato. Il server DHCP memorizza i nomi host per offrire servizi come DNS .

Android, anziché utilizzare il servizio hostname del kernel Linux, utilizzava la proprietà net.hostnameper impostare un nome host univoco per ogni dispositivo basato sull'ID Android. Questa proprietà hostname è stata utilizzata anche per l'handshake DHCP. Tuttavia, poiché Android 5 - quando il nativo dhcpcdè stato abbandonato a favore di client Java DHCP - hostname è nulla in DHCPREQUEST. nonnet.hostname è impostato né valutato dal client DHCP. Quindi i router WiFi non mostrano nomi host per i nuovi dispositivi Android, né possiamo impostarli / annullarli / cambiarli.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.