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

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

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

Wenn ich mich mit den Client-Tabellen meines drahtlosen Routers verbinde, werden meine Android-Geräte beispielsweise wie folgt aufgelistet: android_1234567890abedfc. Ich würde ihm gerne einen besser lesbaren Namen geben.

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 (variiert, aber) Android DHCPCD verfügt nicht über die dhcpcd-run-hooks zum Festlegen des Hostnamens von DHCP. Zumindest auf meinem Samsung Froyo-Gerät. Es hat auch keine NTP-Hooks. DHCPCD unterstützt es aber.

Antworten (7)

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 auf den meisten 2.3) setprop net.hostname MYNAME

Starten Sie dann Ihr WLAN neu. Um die Änderung anzuzeigen, geben Sie uname -a ein

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

Funktioniert das bei Jelly Beans?
Dies funktioniert, bleibt aber beim Neustart nicht bestehen.
uname -azeigt den Hostnamen für mich nicht an, obwohl es heißt localhost. was erwartest du, dass es zeigt?

Zusammenfassung:

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

Kommt darauf an, welche Android-Version du hast.

Android 4.0 und höher

Neuere Versionen verwenden den richtigen build.propEintrag. Nun, das heißt, Android liest das build.propso, als wäre es ein normaler Startvorgang. Sobald der Konnektivitätsdienst ausgeführt wird, prüft er, ob net.hostname in den Einstellungen festgelegt ist. Wenn er leer ist, verwendet er die „android_“ + (permanente) Android-ID. Das ist alles, was Sie tun müssen.

Hinzufügen net.hostname=HOSTNAMEHEREzu /system/build.prop(Root kann erforderlich sein). Lassen Sie am Ende der Datei eine Leerzeile.

Kitkats ConnectivityService.java, beachten Sie 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, etc, hauen einfach drauf. Es stört nicht zu überprüfen. Es wird net.hostname auf android_24412414 setzen ... egal was passiert. Sie müssen es also ändern, nachdem der Konnektivitätsdienst geladen wurde. Glücklicherweise führt es den Start nur einmal aus, nicht bei jeder neuen Verbindung. Wir müssen also nur hinterherlaufen setprop net.hostname HOSTNAMEHERE, damit es haften bleibt. Leider läuft es ziemlich spät im Boot-Prozess, also brauchen Sie etwas, das die Änderungen an boot_complete vornimmt. Höchstwahrscheinlich eine App, die von selbst läuft.

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

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 Telefon, ein Samsung Sidekick 4G (semi-Galaxy S-basiert), hat eine init.rc, die ausgeführt hostname localhostwird, sodass alle darunter liegenden Befehle weder Ihren build.prop-Hostnamen noch den android_id-Hostnamen sehen! Also musst du das auch einstellen.

hostname HOSTNAMEHEREoderecho HOSTNAMEHERE > /proc/sys/kernel/hostname

Hinweis: Abhängig davon, wie Sie es tun, müssen Sie den obigen Befehl als root ausführen, damit er funktioniert. Init.rc befindet sich normalerweise auf der schreibgeschützten Systempartition, daher ist Root-Zugriff erforderlich, um es zu bearbeiten.

Der dhcpcd-Befehl, der ausgeführt wird, um eine DHCP-Adresse zu erhalten, 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 er stellt keinen Hostnamen bereit an den DHCP-Server, wenn $(hostname)(der Hostname-Befehl) leer oder localhost ist und net.hostname intern nicht verwendet wird. libnetutils wird zum Aufrufen von dhcpcd mit -h "net.hostname" verwendet, aber wenn es sich aus irgendeinem Grund entscheidet, nicht mit -h aufzurufen, wird DHCPCD TROTZDEM DEN SYSTEM-HOSTNAMEN über gethostname() SENDEN, solange es nicht "(none)" ist. ", "localhost" oder leer. Auf Stock Froyo sowieso. Samsung hat bei einigen Geräten wie meinem das Hündchen vermasselt. Kein Hostname-Pass-Through, erzwungene Netzwerkzeit usw.

Meine Lösung für Gingerbread und unterhalb von Samsung, Bearbeiten Sie die DHCP-Client-Daemon-Konfiguration:

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

Wer verwendet Android 2.3? Funktioniert diese Version noch im Jahr 2020? Die Links von 2008 funktionieren noch, das ist rückwärts.

Ich habe einen Weg gefunden, dies auf meinem gerooteten Nexus 7 mit 4.2.2 zu tun. Die Einstellung wird dauerhaft gespeichert und funktioniert bei 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 verwenden zu können
  2. Laufenadb 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/sdcard, wenn 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 das zuvor verwendet haben)
    # mount -o ro,remount /system
    # exit
  6. Starte das Gerät neu
Dies wurde in neueren Versionen von Android behoben. Es prüft net.hostname von build.prop. Ältere Android-Versionen nicht (hauptsächlich Froyo, vielleicht Gingerbread).
ICS ist nicht 4.2.2, das wäre JB
Ein einfacherer Weg, dies zu tun, besteht darin, den setpropBefehl über eine Root-Shell auf dem Gerät zu verwenden: zum Beispielsetprop net.hostname NewHostName
@mark, das beim Neustart verprügelt würde. Diese Antwort ist eine permanente Version.

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

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

(Bild anklicken zum Vergrößern)

IMG:

Ja, Sie können dies nicht auf einem Acer A100-Tablet mit Android 4.0.3 tun. Tatsächlich hat es in den Entwickleroptionen nicht einmal "Geräte-Hostname".

Ich habe lange Zeit keine Lagerbestände mehr ausgeführt, aber in den Anwendungseinstellungen > Entwicklung sehen Sie die Option „Geräte-Hostname“.

auf welchen Android-Versionen? Wenn ich mir die Entwicklungsoptionen auf meinem Droid 3 (Android 2.3.4) ansehe, habe ich diese Option nicht.
Dies funktioniert auf CyanogenMOD und wahrscheinlich anderen modifizierten ROMs, aber nicht auf AOSP-ROMs.
Völlig abhängig von Hersteller und Builder sowie Android-Version.

Gehen Sie zum Google Play Store. Suchen Sie nach „hostname“ und laden Sie die App zum Ändern des Hostnamens herunter.

Muss gerootet sein.

Wird das Umbenennen des Geräts intern etwas durcheinander bringen?

Der Hostname wird verwendet, um Hosts, die mit einem Netzwerk verbunden sind, einfach zu identifizieren und sich daran zu erinnern. Es wird beim Booten gesetzt, zB von /etc/hostnameLinux-basierten Systemen. Der Hostname ist auch ein Teil davon DHCPREQUEST(standardisiert als Code 12 von IETF), den ein DHCP-Client (in unserem Fall ein Android-Gerät) an einen DHCP-Server (WLAN-Router) sendet, um eine IP-Adresse zugewiesen zu bekommen. Der DHCP-Server speichert die Hostnamen, um Dienste wie DNS anzubieten. Einzelheiten finden Sie unter Wie pinge ich einen lokalen Netzwerkhost nach Hostnamen an? .

Anstatt den Hostnamendienst des Linux-Kernels zu verwenden, verwendete Android die Eigenschaft net.hostname(seit Android 2.2 ), um einen eindeutigen Hostnamen für jedes Gerät festzulegen, das auf android_id. Diese Eigenschaft des Hostnamens wurde für den DHCP-Handshake verwendet (wie in Android 2.2 und 4.0 hinzugefügt ). In Android 6 net.hostnamewurde weiterhin ( 1 , 2 , 3 , 4 ) im neuen Java-DHCP-Client verwendet, als der native Dienst dhcpcdaufgegeben und der spätere Dienst in Android 7 entfernt wurde. Seit Android 8 – als es nur android_idnoch Apps gab – net.hostnameist es nicht mehr festgelegt, also nullwird a eingeschickt DHCPREQUEST. Siehe Android 8 Datenschutzänderungen und Sicherheitsverbesserungen :

net.hostnameist jetzt leer und der DHCP-Client sendet keinen Hostnamen mehr

Die WLAN-Router zeigen also keine Hostnamen für Android 8+ an, wir können sie auch nicht setzen/unset/ändern.

Auf gerooteten Geräten können Sie jedoch net.hostnamemanuell mit dem Befehl festlegen oder eine Datei von 's setprophinzufügen , um sie bei jedem Start festzulegen. Oder verwenden Sie einen Drittanbieter-Client , um den gewünschten Hostnamen und andere Optionen an den Router zu senden. Siehe Herstellen einer WLAN-Verbindung über ADB Shell .init.rcbusybox udhcpc