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.
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!
uname -a
zeigt den Hostnamen für mich nicht an, obwohl es heißt localhost
. was erwartest du, dass es zeigt?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.
Neuere Versionen verwenden den richtigen build.prop
Eintrag. Nun, das heißt, Android liest das build.prop
so, 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=HOSTNAMEHERE
zu /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);
Ä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);
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 localhost
wird, sodass alle darunter liegenden Befehle weder Ihren build.prop-Hostnamen noch den android_id-Hostnamen sehen! Also musst du das auch einstellen.
hostname HOSTNAMEHERE
oderecho 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.
Als letztes können Sie /etc/dhcpcd/dhcpcd.conf bearbeiten. Wenn Sie etwas hostname YOURHOSTNAME
zur 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.
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
- Beachten Sie, dass das Gerät gerootet sein muss, um adb verwenden zu können
- Laufen
adb pull /system/build.prop
- Bearbeiten Sie die
build.prop
Datei und hängen Sie sie annet.hostname=NewHostname
- Ausführen
adb push build.prop /sdcard/build.prop
(oder/mnt/sdcard
, wenn es fehlschlägt)- Führen Sie
adb shell
die folgenden Befehle aus und führen Sie sie aus:
$ su
# mount -o rw,remount /system
# cp /sdcard/build.prop /system/build.prop
(oder/mnt/sdcard
wenn Sie das zuvor verwendet haben)
# mount -o ro,remount /system
# exit
- Starte das Gerät neu
setprop
Befehl über eine Root-Shell auf dem Gerät zu verwenden: zum Beispielsetprop net.hostname NewHostName
Ich habe lange Zeit keine Lagerbestände mehr ausgeführt, aber in den Anwendungseinstellungen > Entwicklung sehen Sie die Option „Geräte-Hostname“.
Gehen Sie zum Google Play Store. Suchen Sie nach „hostname“ und laden Sie die App zum Ändern des Hostnamens herunter.
Muss gerootet sein.
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/hostname
Linux-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.hostname
wurde weiterhin ( 1 , 2 , 3 , 4 ) im neuen Java-DHCP-Client verwendet, als der native Dienst dhcpcd
aufgegeben und der spätere Dienst in Android 7 entfernt wurde. Seit Android 8 – als es nur android_id
noch Apps gab – net.hostname
ist es nicht mehr festgelegt, also null
wird a eingeschickt DHCPREQUEST
. Siehe Android 8 Datenschutzänderungen und Sicherheitsverbesserungen :
net.hostname
ist 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.hostname
manuell mit dem Befehl festlegen oder eine Datei von 's setprop
hinzufü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
.rc
busybox udhcpc
Fluss
Jared Burrows
CD
Ciro Santilli OurBigBook.com