Wie ändere ich den Namen meines Android-Geräts?

59

Mein Android-Gerät ist das Nexus One. Dies sollte jedoch für alle aktuellen Android-Geräte gelten.

Wie ändere ich den Namen meines Android-Geräts?

Wenn ich eine Verbindung zu den Client-Tabellen meines WLAN-Routers herstelle, werden meine Android-Geräte beispielsweise wie folgt aufgelistet: android_1234567890abedfc. Ich möchte einen besser lesbaren Namen vergeben.

Schwamm
quelle
Es ist auch möglich, den Hostnamen über den DHCP-Server zu konfigurieren. Aber ich habe nicht überprüft, ob Android diese Konfigurationsoption verwendet. Es ist sowieso nur eine kosmetische Option.
Flow
@Flow (Variiert aber) Android DHCPCD verfügt nicht über die dhcpcd-run-hooks zum Festlegen des Hostnamens über DHCP. Zumindest auf meinem Samsung Froyo Gerät. Es hat auch nicht die NTP-Hooks. DHCPCD unterstützt dies jedoch.
cde
für GNU Linux: askubuntu.com/questions/9540/how-do-i-change-the-computer-name , werden geringe Kernel - Methoden arbeiten
Ciro Santilli新疆改造中心法轮功六四事件

Antworten:

22

Um den Hostnamen (Gerätenamen) zu ändern, müssen Sie das Terminal (als root) verwenden:

Für Eclair (2.1): Echo MYNAME> / proc / sys / kernel / hostname

Für Froyo (2.2): (funktioniert auch bei den meisten 2.3) setprop net.hostname MYNAME

Starten Sie dann Ihr Wi-Fi neu. Geben Sie uname -a ein, um die Änderung anzuzeigen

Einige Geräte müssen für die Arbeit neu gestartet werden!

Eder Gusatto
quelle
Funktioniert das mit Gummibärchen?
Juli,
3
Dies funktioniert, bleibt aber beim Neustart nicht erhalten.
Palswim
1
uname -azeigt den Hostnamen für mich nicht an, obwohl er besagt localhost. Was erwartest du davon?
Endolith
15

Zusammenfassung:

  • getprop net.hostname (Android-System-Hostname, wahrscheinlich android_24412414 Typname)
  • echo $HOSTNAME (shell / terminal / env hostname, wahrscheinlich ro.product.device von build.prop)
  • cat /proc/sys/kernel/hostname(Linux System Hostname, wahrscheinlich localhost )
  • head /etc/hosts(Linux System Hostname, wahrscheinlich localhost )
  • hostname(Kommando nicht immer installiert, wenn über Busy Box installiert, lautet / proc / sys / kernel / hostname )

Hängt davon ab, welche Android-Version Sie haben.

Android 4.0 und höher

Neuere Versionen verwenden den richtigen build.propEintrag. Das heißt, Android liest den build.propVorgang wie gewohnt. Sobald der Konnektivitätsdienst ausgeführt wird, wird überprüft, ob net.hostname in den Einstellungen festgelegt ist. Wenn leer, wird die Android-ID "android_" + (permanent) verwendet. Das ist alles, was Sie tun müssen.

Hinzufügen net.hostname=HOSTNAMEHEREzu /system/build.prop(Root wird möglicherweise benötigt). Lassen Sie am Ende der Datei eine leere Zeile.

Beachten Sie in Kitkats ConnectivityService.java die IF isEmpty-Anweisung :

    // 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 und niedriger

Ältere Versionen, Gingerbread, Froyo usw., machen einfach Spaß. Es stört nicht zu überprüfen. Es wird net.hostname auf android_24412414 gesetzt ... egal was passiert. Sie müssen es also ändern, nachdem der Connectivity Service vollständig geladen wurde. Zum Glück wird der Start nur einmal ausgeführt, nicht bei jeder neuen Verbindung. Also müssen wir einfach nachlaufen setprop net.hostname HOSTNAMEHERE, damit es bleibt. Leider läuft es ziemlich spät im Bootprozess, so dass Sie etwas brauchen, das die Änderungen an boot_complete vornimmt. Höchstwahrscheinlich eine App, die von selbst läuft.

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

Aber dann gibt es noch ein anderes Problem.

Die Einstellung net.hostname wird nicht auf das gesamte System kopiert! Wenn Sie eine Konsolen- / Terminalanwendung verwenden, erhalten Sie möglicherweise nicht denselben Hostnamen. Mein Handy, ein Samsung Sidekick 4G (Semi-Galaxy S-basiert), hat eine init.rc, die ausgeführt wird hostname localhost, sodass unter allen Befehlen weder Ihr build.prop-Hostname noch der Hostname von android_id angezeigt werden! Also musst du das auch einstellen.

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

Hinweis: Je nachdem, wie Sie es tun, müssen Sie den obigen Befehl als root ausführen, damit es funktioniert. Init.rc befindet sich normalerweise auf der schreibgeschützten Systempartition, sodass zum Bearbeiten Root-Zugriff erforderlich ist.

Der Befehl dhcpcd, der ausgeführt wird, um eine DHCP-Adresse abzurufen, wird nicht auf einen vom Server bereitgestellten Hostnamen aktualisiert (Dies kann durch Hinzufügen der richtigen dhcpcd-run-hooks und dhcpcd.conf behoben werden), und es wird kein Hostname bereitgestellt an den DHCP-Server senden, wenn $(hostname)(der Befehl hostname) leer oder localhost ist und intern nicht net.hostname verwendet wird. libnetutils wird zum Aufrufen von dhcpcd mit -h "net.hostname" verwendet. Wenn jedoch aus irgendeinem Grund entschieden wird, nicht mit -h aufzurufen, sendet DHCPCD den SYSTEM-HOSTNAME weiterhin über gethostname (), sofern er nicht "(none)" ist. "," localhost "oder leer. Auf jeden Fall auf Lager Froyo. Samsung hat das Hündchen bei einigen Geräten wie meinem versaut. Es werden keine Hostnamen durchgelassen, keine Netzwerkzeit erzwungen usw.

Meine Lösung für Gingerbread und darunter: Bearbeiten Sie die DHCP-Client-Daemon-Konfiguration:

Als letztes können Sie die Datei /etc/dhcpcd/dhcpcd.conf bearbeiten. Wenn Sie hostname YOURHOSTNAMEder Datei hinzufügen , wird diese verwendet, sofern in der Befehlszeile kein Hostname angegeben ist. Dies wird das android_234etc-Problem nicht beheben, aber wenn der Hostname localhost ist (Mein Problem, da Samsung libnetutils und localhost in init.rc geschraubt hat). Sie benötigen Root, dies funktioniert jedoch über Neustarts hinweg. Dies funktioniert nicht, wenn dhcpcd mit der Option -h Hostname aufgerufen wird.

cde
quelle
10

Ich habe einen Weg gefunden, dies auf meinem verwurzelten Nexus 7 mit 4.2.2 zu tun. Die Einstellung wird dauerhaft gespeichert und funktioniert bei allen Neustarts.
Quelle: http://nileshgr.com/2012/10/13/how-to-change-wifi-host-name-of-your-android-device

  1. Beachten Sie, dass das Gerät gerootet sein muss, um adb zu verwenden
  2. Lauf adb pull /system/build.prop
  3. Bearbeiten Sie die build.propDatei und hängen Sie sie annet.hostname=NewHostname
  4. Ausführen adb push build.prop /sdcard/build.prop(oder /mnt/sdcardwenn es fehlschlägt)
  5. Führen Sie adb shelldie folgenden Befehle aus und führen Sie sie aus :
    $ su
    # mount -o rw,remount /system
    # cp /sdcard/build.prop /system/build.prop(oder /mnt/sdcardwenn Sie diese zuvor verwendet haben)
    # mount -o ro,remount /system
    # exit
  6. Starte das Gerät neu
Lennart
quelle
Dies wurde in neueren Versionen von Android behoben. Es überprüft net.hostname von build.prop. Ältere Android-Versionen nicht (Hauptsächlich Froyo, vielleicht Gingerbread).
4.
ICS ist nicht 4.2.2, das wäre JB
HasH_BrowN
ein einfacher Weg , dies zu tun ist , die verwenden setpropBefehl über eine Root - Shell auf dem Gerät: zum Beispielsetprop net.hostname NewHostName
Mark
1
@mark, das beim Neustart überfüllt wäre. Diese Antwort ist eine permanente Version.
cde
9

Dies funktioniert mit CyanogenMod und wahrscheinlich anderen modifizierten ROMs, aber nicht mit AOSP-ROMs:

Gehen Sie zu Einstellungen> Entwickleroptionen und scrollen Sie nach unten zu Geräte-Hostname . Root wird nicht benötigt.

(Zum Vergrößern auf das Bild klicken)

IMG:

cbabb
quelle
2
Ja, dies ist auf einem Acer A100-Tablet mit Android 4.0.3 nicht möglich. Tatsächlich hat es nicht einmal "Geräte-Hostname" in den Entwickleroptionen.
bgmCoder
7

Ich habe lange keinen Bestand mehr, aber unter Anwendungseinstellungen> Entwicklung wird die Option 'Geräte-Hostname' angezeigt.

Tim T
quelle
Auf welchen Versionen von Android? Wenn ich mir die Entwicklungsoptionen auf meinem Droid 3 (Android 2.3.4) anschaue, habe ich diese Option nicht.
Michael Kohne
3
Dies funktioniert mit CyanogenMOD und wahrscheinlich anderen modifizierten ROMs, aber nicht mit AOSP-ROMs.
Caleb
Völlig abhängig vom Hersteller und Erbauer sowie der Android-Version.
cde
5

Gehen Sie zum Google Play Store. Suchen Sie nach "Hostname" und laden Sie die App zum Ändern des Hostnamens herunter .

Muss verwurzelt sein.

Ryan Knell
quelle
Wird das Umbenennen des Geräts irgendetwas intern durcheinander bringen?
bgmCoder
0

Mit dem Hostnamen können Hosts, die mit einem Netzwerk verbunden sind, leicht identifiziert und gespeichert werden. Es wird beim Booten eingestellt, zB von /etc/hostnameLinux-basierten Systemen. Der Hostname ist auch ein Teil von DHCPREQUEST( von IETF als Code 12 standardisiert), den ein DHCP-Client (in unserem Fall Android-Gerät) an den DHCP-Server (WLAN-Router) sendet, um eine IP-Adresse zuzuweisen. Der DHCP-Server speichert die Hostnamen, um Dienste wie DNS anzubieten .

Anstatt den Hostnamen-Dienst des Linux-Kernels zu verwenden, hat Android die Eigenschaft verwendet net.hostname, um einen eindeutigen Hostnamen für jedes Gerät festzulegen, der auf der Android-ID basiert. Diese Hostname-Eigenschaft wurde auch für den DHCP-Handshake verwendet. Da jedoch Android 5 - , wenn das native dhcpcdfür Java DHCP - Client aufgegeben wurde - Hostname ist null in DHCPREQUEST. net.hostnamewird vom DHCP-Client weder gesetzt noch ausgewertet. Die WLAN-Router zeigen also keine Hostnamen für neuere Android-Geräte an, und wir können sie auch nicht einstellen / deaktivieren / ändern.

Irfan Latif
quelle