Como altero o nome do meu dispositivo Android?

59

Meu dispositivo Android é o Nexus One. Mas isso deve se aplicar a todos os dispositivos Android atuais.

Como altero o nome do meu dispositivo Android?

Quando me conecto às tabelas de clientes do meu roteador sem fio, meus dispositivos Android são listados, por exemplo, como: android_1234567890abedfc. Eu gostaria de dar um nome mais legível.

esponja
fonte
Também é possível configurar o nome do host através do servidor DHCP. Mas não verifiquei se o Android usa essa opção de configuração. De qualquer forma, é apenas uma opção cosmética.
Flow
@Flow (varia, porém) O DHCPCD do Android não possui os dhcpcd-run-hooks para definir o nome do host no DHCP. Pelo menos no meu dispositivo Samsung Froyo. Também não possui os ganchos NTP. DHCPCD suporta embora.
Cde
para GNU Linux: askubuntu.com/questions/9540/how-do-i-change-the-computer-name , métodos de baixo nível de kernel funcionarão
Ciro Santilli

Respostas:

22

Para alterar o nome do host (nome do dispositivo), você deve usar o terminal (como root):

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

Para o Froyo (2.2): (funciona também na maioria dos 2.3) setprop net.hostname MYNAME

Em seguida, reinicie o seu wi-fi. Para ver a alteração, digite uname -a

alguns dispositivos precisam ser reiniciados para o trabalho!

Eder Gusatto
fonte
Isso funciona com jujubas?
Jrg 01/09/12
3
Isso funciona, mas não persiste na reinicialização.
palswim
11
uname -anão mostra o nome do host para mim, apesar de dizer localhost. o que você espera que ele mostre?
endolith 28/02
15

Resumo:

  • getprop net.hostname (Nome do host do sistema Android, provavelmente nome do tipo android_24412414)
  • echo $HOSTNAME (nome do host shell / terminal / env, provavelmente ro.product.device de build.prop)
  • cat /proc/sys/kernel/hostname(Nome do host do sistema Linux, provavelmente localhost )
  • head /etc/hosts(Nome do host do sistema Linux, provavelmente localhost )
  • hostname(O comando nem sempre instalado, se instalado pela caixa de ocupado, lê / proc / sys / kernel / hostname )

Depende da versão do Android que você possui.

Android 4.0 e superior

As versões mais recentes usarão a build.propentrada correta . Bem, isto é, o Android lê o build.propprocesso de inicialização normal. Depois que o Serviço de Conectividade é executado, ele verifica se net.hostname está definido nas Configurações e, se estiver vazio, ele usa o "android_" + ID do Android (permanente). Então é tudo o que você precisa fazer.

Adicionar net.hostname=HOSTNAMEHEREa /system/build.prop(raiz pode ser necessária). Deixe uma linha em branco no final do arquivo.

ConnectivityService.java de Kitkat, observe a instrução 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 abaixo

Versões mais antigas, Gingerbread, Froyo, etc, acabam com ele. Não se preocupa em verificar. Ele definirá net.hostname como android_24412414 ... não importa o quê. Portanto, você precisará alterá-lo após o término do carregamento do Serviço de Conectividade. Felizmente, ele executa a inicialização apenas uma vez, não em todas as novas conexões. Então, só precisamos correr setprop net.hostname HOSTNAMEHEREatrás disso para que ele permaneça. Infelizmente, ele é executado bastante tarde no processo de inicialização, portanto, você precisa de algo que faça as alterações no boot_complete. Provavelmente, um aplicativo é executado por si só.

ConnectivityService.java do 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);

Mas depois há outra questão.

A configuração net.hostname não é copiada para todo o sistema! Se você usar um aplicativo de console / terminal, talvez não obtenha o mesmo nome de host. Meu telefone, um Samsung Sidekick 4G (baseado no semi-Galaxy S), possui um init.rc que é executado hostname localhost, portanto, todos os comandos abaixo não verão seu nome de host build.prop ou o nome de host android_id! Então você precisa definir isso também.

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

Nota: Dependendo de como você está fazendo isso, você precisará executar o comando acima como root para que ele funcione. O Init.rc normalmente está na partição do sistema somente leitura, portanto, é necessário acesso root para editá-lo.

O comando dhcpcd, que é executado para obter um endereço dhcp, não será atualizado para um nome de host fornecido pelo servidor (isso pode ser corrigido adicionando os dhcpcd-run-hooks e dhcpcd.conf) e não fornecerá um nome de host ao servidor dhcp se $(hostname)(O comando hostname) estiver em branco ou localhost, e ele não usar internamente net.hostname. libnetutils é usado para chamar dhcpcd com -h "net.hostname", mas se por algum motivo decidir não ligar com -h, o DHCPCD AINDA ENVIARÁ O NOME DO HOSTNAME DO SISTEMA via gethostname (), desde que não seja "(nenhum) "," localhost "ou vazio. Em Stock Froyo de qualquer maneira. A Samsung ferrou o cão em alguns dispositivos como o meu. Nenhum nome de host passa, tempo de rede forçado etc.

Minha solução para Gingerbread e abaixo da Samsung, edite a configuração do DHCP Client Daemon:

A última coisa que você pode fazer é editar o /etc/dhcpcd/dhcpcd.conf. Se você adicionar hostname YOURHOSTNAMEao arquivo, ele será usado, a menos que um nome de host seja fornecido na linha de comando. Isso não corrigirá o problema do android_234etc, mas sim se o nome do host for localhost (problema meu, já que a Samsung ferrou libnetutils e localhost no init.rc). Você precisará do Root, mas isso funciona nas reinicializações. Isso não funcionará se o dhcpcd for chamado com a opção -h Hostname.

cde
fonte
10

Eu encontrei uma maneira de fazer isso no meu Nexus 7 com 4.2.2. A configuração é salva persistentemente e funciona durante as reinicializações.
Fonte: http://nileshgr.com/2012/10/13/how-to-change-wifi-host-name-of-your-android-device

  1. Observe que o dispositivo deve estar enraizado para usar adb
  2. Corre adb pull /system/build.prop
  3. Edite o build.proparquivo e acrescentenet.hostname=NewHostname
  4. Executar adb push build.prop /sdcard/build.prop(ou /mnt/sdcard, se falhar)
  5. Execute adb shelle execute os seguintes comandos:
    $ su
    # mount -o rw,remount /system
    # cp /sdcard/build.prop /system/build.prop(ou /mnt/sdcardse você o usou anteriormente)
    # mount -o ro,remount /system
    # exit
  6. Reinicie o dispositivo
Lennart
fonte
Isso foi corrigido nas versões mais recentes do Android. Ele verifica net.hostname em build.prop. Versões mais antigas do Android não (principalmente Froyo, talvez Gingerbread).
Cde4
ICS is not 4.2.2, que seria JB
HasH_BrowN
uma maneira mais fácil de fazer isso é usar o setpropcomando por meio de um shell raiz no dispositivo: por exemplosetprop net.hostname NewHostName
Marque
11
@mark que seria derrotado na reinicialização. Esta resposta é uma versão permanente.
Cde
9

Isso funciona no CyanogenMod e provavelmente em outras ROMs modificadas, mas não em ROMs AOSP:

Vá para Configurações> Opções do desenvolvedor e role para baixo até Nome do host do dispositivo . Raiz não é necessária.

(Clique na imagem para ampliar)

IMG:

cbabb
fonte
2
Sim, você não pode fazer isso em um tablet Acer A100 executando o Android 4.0.3. Na verdade, ele nem tem "Nome do host do dispositivo" nas Opções do desenvolvedor.
amigos estão dizendo sobre bgmCoder
7

Não tenho estoque há muito tempo, mas em Configurações do aplicativo> Desenvolvimento, você verá a opção 'Nome do host do dispositivo'.

Tim T
fonte
em quais versões do Android? Quando olho para as opções de desenvolvimento no meu Droid 3 (Android 2.3.4), não tenho essa opção.
Michael Kohne
3
Isso funciona no CyanogenMOD e provavelmente em outras ROMs modificadas, mas não em ROMs AOSP.
Caleb
Completamente dependente do fabricante e construtor, bem como da versão do Android.
Cde4
5

Vá para a Google Play Store. Pesquise "hostname" e faça o download do aplicativo de alteração de hostname .

Deve estar enraizado.

Ryan Knell
fonte
Renomear o dispositivo prejudicará algo internamente?
amigos estão dizendo sobre bgmCoder
0

O nome do host é usado para identificar e lembrar facilmente os hosts conectados a uma rede. É definido na inicialização, por exemplo, /etc/hostnameem sistemas baseados em Linux. O nome do host também faz parte DHCPREQUEST(padronizado como código 12 pelo IETF) que um cliente DHCP (dispositivo Android no nosso caso) faz no servidor DHCP (roteador WiFi) para obter um endereço IP atribuído. O servidor DHCP armazena os nomes de host para oferecer serviços como DNS .

O Android - em vez de usar o serviço de nome de host do kernel do Linux - usava a propriedade net.hostnamepara definir um nome de host exclusivo para cada dispositivo baseado no ID do Android. Essa propriedade hostname também foi usada para handshake DHCP. Contudo, desde Android 5 - quando o nativo dhcpcdfoi abandonada em favor de cliente Java DHCP - hostname é nula no DHCPREQUEST. nãonet.hostname é definido nem avaliado pelo cliente DHCP. Portanto, os roteadores WiFi não mostram nomes de host para dispositivos Android mais recentes, nem podemos defini-lo / desmarcá-lo / alterá-lo.

Irfan Latif
fonte