我的Android设备是Nexus One。但这应适用于所有当前的Android设备。

如何更改我的Android设备的名称?

当我连接到无线路由器的客户端表时,我的android设备例如列出为:android_1234567890abedfc。我想给它一个更易读的名称。

评论

也可以通过DHCP服务器配置主机名。但是我还没有检查android是否使用此配置选项。无论如何,这只是一个装饰选择。

blog.burrowsapps.com/2011/09/android-change-hostname.html。

@Flow(有所不同,但)Android DHCPCD没有用于从DHCP设置主机名的dhcpcd-run-hooks。我的Samsung Froyo设备上的Atleast。它也没有ntp挂钩。 DHCPCD确实支持它。

适用于GNU Linux:askubuntu.com/questions/9540/how-do-i-change-the-computer-name,低级内核方法将起作用

#1 楼

要更改主机名(设备名称),您必须使用终端(以root用户身份):

对于Eclair(2.1):
回显MYNAME> / proc / sys / kernel / hostname

对于Froyo(2.2):(在大多数2.3上也可以使用)
要查看更改,请键入uname -a

某些设备需要重新启动才能工作!

评论


对果冻豆有用吗?

– jrg
2012年9月1日下午3:43

此方法有效,但在重新启动后不会持续存在。

–palswim
13年8月8日在18:16

uname -a不会显示我的主机名,尽管它确实显示了localhost。您希望它显示什么?

– Endolith
16年2月28日在0:11

#2 楼

摘要:



getprop net.hostname(Android系统主机名,可能是android_24412414类型名称)

echo $HOSTNAME(shell /终端机/环境主机名,可能是ro.product .device from build.prop)

cat /proc/sys/kernel/hostname(Linux系统主机名,可能是本地主机)

head /etc/hosts(Linux系统主机名,可能是本地主机)

hostname (并非总是安装命令,如果通过忙碌箱安装,则将显示/ proc / sys / kernel / hostname)。

取决于您所使用的Android版本。

Android 4.0及更高版本

较新的版本将使用正确的build.prop条目。好吧,也就是说,Android会按照正常的启动过程读取build.prop。连接服务运行后,将检查是否在“设置”中设置了net.hostname,如果为空,则使用“ android _” +(永久)android ID。因此,这就是您所需要做的。

net.hostname=HOSTNAMEHERE添加到/system/build.prop(可能需要Root)。在文件末尾留空白行。

Kitkat的ConnectivityService.java,请注意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和下面的

较旧的版本(姜饼,Froyo等),只是破坏它。它不会打扰检查。它将把net.hostname设置为android_24412414 ...无论如何。因此,在连接服务完成加载后,您将需要对其进行更改。幸运的是,它只运行一次启动,而不是在每个新连接上运行。因此,我们只需要在其后运行setprop net.hostname HOSTNAMEHERE即可使其坚持下去。不幸的是,它在启动过程中运行得很晚,因此您需要在boot_complete上进行更改的内容。最有可能自行运行的应用程序。

Froyo的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);


但是还有另一个问题。

net.hostname设置不会复制到整个系统!如果使用控制台/终端应用程序,则可能不会获得相同的主机名。我的手机是Samsung Sidekick 4G(基于半银河S),具有运行hostname localhost的init.rc,因此所有下面的命令都看不到您的build.prop主机名或android_id主机名!因此,您也需要进行设置。


hostname HOSTNAMEHEREecho HOSTNAMEHERE > /proc/sys/kernel/hostname


注意:根据您的操作方式,您需要以超级用户身份运行以上命令以使其正常运行。 Init.rc通常位于只读系统分区上,因此需要root用户访问权限才能对其进行编辑。

运行dhcpcd命令以获取dhcp地址,该命令不会更新为由提供的主机名。服务器(可以通过添加正确的dhcpcd-run-hooks和dhcpcd.conf来解决),并且如果$(hostname)(hostname命令)为空白或本地主机,则它将不会为dhcp服务器提供主机名,并且内部也不是使用net.hostname。 libnetutils用于以-h“ net.hostname”调用dhcpcd,但是如果由于某种原因它决定不以-h调用,DHCPCD仍会通过gethostname()发送系统主机名,只要它不是“(none)”即可。 ”,“ localhost”或为空。仍然在股票Froyo。三星把狗狗固定在像我这样的设备上。没有主机名传递,网络时间过长等。

我的Gingerbread及以下三星解决方案,编辑DHCP客户端守护程序配置:

最后要做的是编辑/etc/dhcpcd/dhcpcd.conf。如果将hostname YOURHOSTNAME添加到文件,它将使用该文件,除非在命令行上指定了主机名。这不能解决android_234etc问题,但是如果主机名是localhost(我的问题,因为三星在init.rc中将libnetutils和localhost搞砸了)就可以了。您将需要Root,但这可以在重新启动后起作用。如果使用-h Hostname选项调用dhcpcd,则此方法将无效。

评论


谁使用Android 2.3?此版本在2020年是否仍然有效? 2008年的链接仍然有效,这是落后的。

–user3123159
11月12日20:21



#3 楼

我找到了一种在4.6.2上扎根的Nexus 7上执行此操作的方法。该设置将永久保存并在整个重新启动过程中起作用。
来源:http://nileshgr.com/2012/10/13/how-to-change-wifi-host-name-of-your-android-device



请注意,该设备必须已扎根才能使用adb
运行adb pull /system/build.prop
编辑build.prop文件并附加net.hostname=NewHostname
运行adb push build.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
重新启动设备



评论


这已在较新版本的Android中修复。它从build.prop检查net.hostname。较旧的Android版本则没有(主要是Froyo,也许是Gingerbread)。

–cde
2014年1月4日,12:22

ICS不是4.2.2,那就是JB

–HasH_BrowN
2014年9月27日20:17在

一种更简单的方法是通过设备上的root shell使用setprop命令:例如setprop net.hostname NewHostName

–马克
2014年10月16日0:00

@mark重启后会崩溃。该答案是永久性版本。

–cde
16年8月7日在6:26

#4 楼

这适用于CyanogenMod和其他可能修改过的ROM,但不适用于现有的AOSP ROM:

转到“设置”>“开发人员选项”,然后向下滚动到“设备主机名”。不需要根。

(单击图片放大)



评论


是的,您不能在运行Android 4.0.3的Acer A100平板电脑上执行此操作。实际上,在开发人员选项中甚至没有“设备主机名”。

– bgmCoder
2015年11月4日在4:14

#5 楼

我已经很久没有库存了,但是在“应用程序设置”>“开发”中,您会看到“设备主机名”选项。

评论


在什么版本的Android上?当我在Droid 3(Android 2.3.4)上查看开发选项时,我没有该选项。

–迈克尔·科恩(Michael Kohne)
2012年3月19日15:24

这适用于CyanogenMOD以及可能的其他经过修改的ROM,但不适用于普通的AOSP ROM。

–卡莱布
13-10-18在15:50

完全取决于制造商和制造商,以及android版本。

–cde
2014年1月4日,12:21

#6 楼

前往Google Play商店。搜索“主机名”,并下载主机名更改器应用程序。

必须植根。

评论


重命名设备会在内部造成任何混乱吗?

– bgmCoder
2015年11月4日在4:13

#7 楼

主机名用于轻松识别和记住连接到网络的主机。它是在启动时设置的,例如在基于Linux的系统上来自/etc/hostname。主机名也是DHCPREQUEST(由IETF标准化为代码12)的一部分,DHCP客户端(在本例中为Android设备)通过net.hostname向DHCP服务器(WiFi路由器)分配IP地址。 DHCP服务器存储主机名以提供DNS之类的服务。请参阅如何通过主机名ping本地网络主机中的详细信息?。

Android-代替使用Linux内核的主机名服务-使用属性android_id(自Android 2.2起)为每个设备设置唯一的主机名基于net.hostname。此主机名属性用于DHCP握手(已在Android 2.2和4.0中添加)。在Android 6中,当放弃本机dhcpcd并在Android 7中删除了更高版本的服务时,在新的Java DHCP客户端中继续使用(1、2、3、4)android_id。由于Android 8-当net.hostname对应用程序来说唯一时-null否设置了更多,因此在DHCPREQUEST中发送了net.hostname。请参阅Android 8隐私更改和安全性增强功能:


net.hostname现在为空,并且dhcp客户端不再发送主机名


因此,WiFi路由器不显示Android 8+的主机名,我们也无法设置/取消设置/更改它。在每次启动时。或使用第三方客户端(例如setprop)将所需的主机名和其他选项发送到路由器。请参阅通过ADB Shell连接到WiFi。