我的Android設備是Nexus One。但這應適用於所有當前的Android設備。
如何更改我的Android設備的名稱?
當我連接到無線路由器的客戶端時在表格中,我的android設備列為:android_1234567890abedfc。我想給它一個更易讀的名稱。
我的Android設備是Nexus One。但這應適用於所有當前的Android設備。
如何更改我的Android設備的名稱?
當我連接到無線路由器的客戶端時在表格中,我的android設備列為:android_1234567890abedfc。我想給它一個更易讀的名稱。
要更改主機名(設備名稱),您必須使用終端(以root用戶身份):
對於Eclair(2.1):echo MYNAME> / proc / sys / kernel / hostname
對於Froyo(2.2):(也適用於大多數2.3)setprop net.hostname MYNAME
然後重新啟動wi-fi。要查看更改,請輸入uname -a
某些設備需要重啟才能正常工作!
getprop net.hostname
(Android系統主機名,可能是android_24412414類型名稱) echo $ HOSTNAME
(shell / terminal / env主機名,可能是來自build.prop的ro.product.device) cat / proc / sys / kernel / hostname
(Linux系統主機名,可能是 localhost ) head / etc / hosts
(Linux系統主機名,可能是 localhost )主機名
(並非始終安裝的命令,如果通過繁忙框安裝,將顯示為 / proc / sys / kernel / hostname )
較新的版本將使用正確的 build.prop
條目。好吧,也就是說,Android會在正常啟動過程中讀取 build.prop
。連接服務運行後,將檢查是否在“設置”中設置了net.hostname,如果為空,則使用“ android _” +(永久)android ID。所以這就是您要做的全部。
將 net.hostname = HOSTNAMEHERE
添加到 /system/build.prop
(可能需要Root) )。在文件末尾留空行。
Kitkat的ConnectivityService.java,請注意IF isEmpty語句:
// //如果(TextUtils.isEmpty(SystemProperties.get(“ net.hostname”)))設置我們唯一的設備名稱{字符串id = Settings.Secure.getString(context.getContentResolver(),Settings.Secure.ANDROID_ID); if(id!= null && id.length()> 0){字符串名稱=新的String(“ android-”)。concat(id); SystemProperties.set(“ net.hostname”,name);
較舊的版本,薑餅,Froyo等,只是破壞它。它不會打擾檢查。它將把net.hostname設置為android_24412414 ...無論如何。因此,在連接服務完成加載後,您將需要對其進行更改。幸運的是,它只運行一次啟動,而不是在每個新連接上運行。因此,我們只需要在此之後運行 setprop net.hostname HOSTNAMEHERE
即可。不幸的是,它在啟動過程中運行得很晚,因此您需要在boot_complete上進行更改的內容。最有可能自行運行的應用程序。
Froyo的ConnectivityService.java:
//設置我們唯一的設備名稱String id = Settings.Secure.getString(context.getContentResolver() ,Settings.Secure.ANDROID_ID); if(id!= null && id.length()> 0){字符串名稱=新的String(“ android _”)。concat(id); SystemProperties.set(“ net.hostname”,name);
net.hostname設置未復制整個系統!!如果您使用控制台/終端應用程序,則可能不會獲得相同的主機名。我的手機是Samsung Sidekick 4G(基於半Galaxy S),具有運行 hostname localhost
的init.rc,因此所有下面的命令都看不到您的build.prop主機名或android_id主機名!因此,您也需要進行設置。
主機名HOSTNAMEHERE
或echo HOSTNAMEHERE > / proc / sys / kernel / hostname
注意:根據您的操作方式,您需要以超級用戶身份運行以上命令才能使其正常運行。 Init.rc通常位於只讀系統分區上,因此需要root訪問權限才能對其進行編輯。
運行以獲取dhcp地址的dhcpcd命令不會更新為服務器提供的主機名(可以通過添加正確的dhcpcd-run-hooks和dhcpcd.conf進行修復),並且不會如果 $(hostname)
(hostname命令)為空或localhost,並且在內部不使用net.hostname,則為dhcp服務器提供一個主機名。 libnetutils用於以-h“ net.hostname”調用dhcpcd,但是如果由於某種原因它決定不以-h調用,則DHCPCD仍會通過gethostname()發送系統主機名,只要它不是“ (無)”,“本地主機”或空。仍然在Stock Froyo上。三星把狗狗固定在像我這樣的設備上。沒有主機名通過,強製網絡時間等。
最後要做的就是編輯/ etc /dhcpcd/dhcpcd.conf。如果將 hostname YOURHOSTNAME
添加到文件,它將使用該文件,除非在命令行中指定了主機名。這不能解決android_234etc問題,但是如果主機名是localhost(我的問題,因為三星在init.rc中將libnetutils和localhost搞砸了)就可以了。您將需要Root,但這可以在重新啟動後起作用。如果使用-h Hostname選項調用dhcpcd,則此方法將無效。
我找到了一種在4.6.2上紮根的Nexus 7上執行此操作的方法。該設置將永久保存並在整個重新啟動過程中起作用。
來源: http://nileshgr.com/2012/10/13/how-to-change-wifi-host-name-of-your-android-設備
- 請注意,該設備必須植根才能使用adb
- 運行
adb pull /system/build.prop
- 編輯
build.prop
文件,並附加net.hostname = NewHostname
- 運行
adb push構建。 prop /sdcard/build.prop
(如果失敗,則為/ mnt / sdcard
)- 運行
adb shell
並執行以下命令命令:
$ su
#mount -o rw,remount / system
#cp /sdcard/build.prop / system / build.prop
(如果以前使用過,則為/ mnt / sdcard
)
#mount -o ro,remount / system
#exit
- 重新啟動設備
ol>
這適用於CyanogenMod和其他可能修改過的ROM,但不適用於現有的AOSP ROM:
轉到設置>開發人員選項,然後向下滾動至設備主機名。不需要根。
(點擊圖片放大) sub>
我已經很長時間沒有庫存了,但是在“應用程序設置”>“開發”中,您將看到“設備主機名”選項。
主機名用於輕鬆識別和記住連接到網絡的主機。它是在啟動時設置的,例如來自基於Linux的系統上的 / etc / hostname
。主機名也是 DHCPREQUEST
(由IETF標準化為 code 12)的一部分,DHCP客戶端(在我們的情況下為Android設備)將主機名傳遞到DHCP服務器(WiFi路由器)以獲得分配的IP地址。 DHCP服務器存儲主機名以提供DNS之類的服務。請參閱如何通過主機名ping本地網絡主機?。
Android-代替使用Linux內核的 hostname服務-使用的屬性 net.hostname
(自Android 2.2起),以便為每個基於 android_id
的設備設置唯一的主機名。此主機名屬性用於DHCP握手(已在Android 2.2和 4.0中添加)。在Android 6中,繼續使用 net.hostname
( 1, 2, 3, 4) sup>在新的 Java DHCP客戶端中,而本地 dhcpcd
被放棄,後來服務被刪除在Android 7中。由於Android 8-當 android_id
對應用程序變得唯一時- net.hostname
不再設置 null
通過 DHCPREQUEST
發送。請參閱Android 8 隱私更改和安全增強功能:
net.hostname
現在為空,並且dhcp客戶端不再發送主機名
,因此 WiFi路由器沒有顯示Android 8+的主機名,我們也無法設置/取消設置/更改它。
但是在有根設備上,您可以使用 setprop
命令手動設置 net.hostname
或添加一些 init
的 .rc
文件在每次啟動時設置。或者使用第三方客戶端(例如 busybox udhcpc
)將所需的主機名和其他選項發送到路由器。請參見通過ADB Shell連接到WiFi。