如何更改Android设备的名称?


59

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

如何更改Android设备的名称?

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


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


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

Answers:


22

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

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

对于Froyo(2.2):(也适用于大多数2.3)setprop net.hostname MYNAME

然后重新启动您的Wi-Fi。要查看更改,请键入uname -a

有些设备需要重启才能正常工作!


可以在软糖上使用吗?
jrg 2012年

3
这可以工作,但重启后不会持久。
palswim

1
uname -a尽管显示了,但没有显示我的主机名localhost。您希望它显示什么?
endolith '16

15

摘要:

  • getprop net.hostname (Android系统主机名,可能是android_24412414类型名)
  • echo $HOSTNAME (shell /终端/ env主机名,可能是来自build.prop的ro.product.device)
  • cat /proc/sys/kernel/hostname(Linux系统主机名,可能是localhost
  • head /etc/hosts(Linux系统主机名,可能是localhost
  • 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(基于半Galaxy S),具有init.rc运行hostname localhost,因此所有下面的命令都看不到您的build.prop主机名或android_id主机名!因此,您也需要进行设置。

hostname HOSTNAMEHERE 要么 echo HOSTNAMEHERE > /proc/sys/kernel/hostname

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

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

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

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


10

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

  1. 请注意,设备必须植根才能使用adb
  2. adb pull /system/build.prop
  3. 编辑build.prop文件并追加net.hostname=NewHostname
  4. 运行adb push build.prop /sdcard/build.prop(或者/mnt/sdcard,如果失败)
  5. 运行adb shell并执行以下命令:(
    $ su
    # mount -o rw,remount /system
    # cp /sdcard/build.prop /system/build.prop或者/mnt/sdcard如果您以前使用过该命令)
    # mount -o ro,remount /system
    # exit
  6. 重新启动设备

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

ICS不是4.2.2,那就是JB
HasH_BrowN 2014年

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

1
@mark重启后会崩溃。这个答案是一个永久的版本。
cde

9

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

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

(点击图片放大)

IMG:


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

7

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


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

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

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


0

主机名用于轻松识别和记住连接到网络的主机。它是在引导时设置的,例如/etc/hostname在基于Linux的系统上。主机名也是DHCP客户端(在本例中为Android设备)通过DHCP服务器(WiFi路由器)获取IP地址分配的一部分DHCPREQUEST(由IETF 标准化为代码12)。DHCP服务器存储主机名以提供DNS之类的服务。

Android而不是使用Linux内核的主机名服务,而是使用属性net.hostname为每个基于Android ID的设备设置唯一的主机名。此主机名属性也用于DHCP握手。不过由于Android 5 -当本机dhcpcd支持Java的DHCP客户端的被遗弃-主机名是DHCPREQUESTnet.hostname既不置,也不由DHCP客户端评估。因此,WiFi路由器不会显示较新的Android设备的主机名,我们也无法设置/取消设置/更改它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.