내 Android 기기의 이름을 어떻게 변경합니까?


59

내 Android 기기는 Nexus One입니다. 그러나 이것은 모든 현재 Android 기기에 적용됩니다.

내 Android 기기의 이름을 어떻게 변경합니까?

무선 라우터의 클라이언트 테이블에 연결하면 내 Android 장치가 예를 들어 android_1234567890abedfc로 표시됩니다. 더 읽기 쉬운 이름을 지정하고 싶습니다.


DHCP 서버를 통해 호스트 이름을 구성 할 수도 있습니다. 그러나 안드로이드 가이 구성 옵션을 사용하는지 확인하지 않았습니다. 어쨌든 단지 화장품 옵션입니다.
흐름


@Flow (다양하지만) Android DHCPCD에는 DHCP에서 호스트 이름을 설정하기위한 dhcpcd-run-hook이 없습니다. 내 삼성 Froyo 장치에서 Atleast. ntp 후크도 없습니다. DHCPCD는이를 지원합니다.
cde

답변:


22

호스트 이름 (장치 이름)을 변경하려면 터미널을 루트로 사용해야합니다.

Eclair (2.1)의 경우 : echo MYNAME> / proc / sys / kernel / hostname

Froyo (2.2)의 경우 : (대부분 2.3에서도 작동) setprop net.hostname MYNAME

그런 다음 Wi-Fi를 다시 시작하십시오. 변경 사항을 보려면 uname -a를 입력하십시오.

일부 장치는 작업을 위해 재부팅해야합니다!


이것은 젤리 빈에서 작동합니까?
jrg

3
작동하지만 재부팅시 지속되지 않습니다.
palswim

1
uname -a그것은 비록 나를 위해 호스트 이름을 표시하지 않습니다 localhost. 무엇을 보여줄 것으로 기대하십니까?
endolith

15

요약:

  • 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 )
  • hostname(통화 상자를 통해 설치된 경우 명령이 항상 설치되는 것은 아닙니다. / proc / sys / kernel / hostname )

사용중인 Android 버전에 따라 다릅니다.

안드로이드 4.0 이상

최신 버전은 올바른 build.prop항목 을 사용합니다 . 즉, 안드로이드는 build.prop정상적인 부팅 과정을 읽습니다 . 연결 서비스가 실행되면 설정에서 net.hostname이 설정되어 있는지 확인한 다음 비어 있으면 "android_"+ (영구적) 안드로이드 ID를 사용합니다. 이것이 당신이해야 할 전부입니다.

추가 net.hostname=HOSTNAMEHERE/system/build.prop(루트 필요할 수있다). 파일 끝에 빈 줄을 남겨 두십시오.

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

안드로이드 2.3 이하

예전 버전, 진저 브레드, 프로 요 등은 간단히 말하면됩니다. 확인 귀찮게하지 않습니다. net.hostname을 android_24412414로 설정합니다. 따라서 연결 서비스가로드를 완료 한 후에 변경해야합니다. 운 좋게도 모든 새 연결이 아닌 시작을 한 번만 실행합니다. 그래서 우리 setprop net.hostname HOSTNAMEHERE는 그것을 고수하기 위해 그 후에 달려야 합니다. 불행히도 부팅 과정에서 상당히 늦게 실행되므로 boot_complete를 변경할 항목이 필요합니다. 대부분 자체적으로 실행되는 앱입니다.

프로 요의 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 기반)에는 init.rc가 실행 hostname localhost되므로 모든 명령 아래에 build.prop 호스트 이름 또는 android_id 호스트 이름이 표시되지 않습니다! 그래서 당신도 그것을 설정해야합니다.

hostname HOSTNAMEHERE 또는 echo HOSTNAMEHERE > /proc/sys/kernel/hostname

참고 : 수행 방법에 따라 위 명령을 루트로 실행해야 작동합니다. Init.rc는 일반적으로 읽기 전용 시스템 파티션에 있으므로이를 편집하려면 루트 액세스가 필요합니다.

dhcp 주소를 얻기 위해 실행되는 dhcpcd 명령은 서버에서 제공 한 호스트 이름으로 업데이트되지 않으며 (올바른 dhcpcd-run-hooks 및 dhcpcd.conf를 추가하여 수정할 수 있음) 호스트 이름을 제공하지 않습니다. $(hostname)(hostname 명령)이 비어 있거나 로컬 호스트이고 내부적으로 net.hostname을 사용하지 않는 경우 dhcp 서버로 . libnetutils는 -h "net.hostname"을 사용하여 dhcpcd를 호출하는 데 사용되지만 어떤 이유로 든 -h를 사용하여 호출하지 않기로 결정한 경우 DHCPCD는 "(없음)이 아닌 한 gethostname ()을 통해 시스템 호스트 이름을 전송합니다. ","localhost "또는 비어 있습니다. 어쨌든 Froyo에. 삼성은 내 장치와 같은 일부 장치에서 바보를 망쳤다. 호스트 이름 통과, 강제 네트워크 시간 등이 없습니다.

Gingerbread 및 Samsung 미만의 내 솔루션은 DHCP 클라이언트 데몬 구성을 편집하십시오.

마지막으로 할 수있는 일은 /etc/dhcpcd/dhcpcd.conf입니다. hostname YOURHOSTNAME파일에 추가 하면 명령 행에 호스트 이름이 지정되지 않은 한 파일을 사용합니다. 이것은 android_234etc 문제를 해결하지 않지만 호스트 이름이 localhost 인 경우 (Samsung은 libnetutils와 localhost를 init.rc에 망 쳤기 때문에 내 문제) 루트가 필요하지만 재부팅 할 때마다 작동합니다. dhcpcd가 -h Hostname 옵션과 함께 호출되면 작동하지 않습니다.


10

루팅 된 Nexus 7에서 4.2.2로이 작업을 수행 할 수있는 방법을 찾았습니다. 설정은 지속적으로 저장되며 재부팅하는 동안 작동합니다.
출처 : 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, 아마도 진저 브레드)하지 않습니다.
cde

ICS is 4.2.2, JB
HasH_BrowN

가장 쉬운 방법 setprop은 장치의 루트 쉘을 통해 명령 을 사용하는 것 입니다. 예를 들어setprop net.hostname NewHostName
Mark

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

3
이것은 CyanogenMOD 및 아마도 다른 수정 ROM에서 작동하지만 재고 AOSP ROM에서는 작동하지 않습니다.
Caleb

Android 버전뿐만 아니라 제조업체 및 빌더에 전적으로 의존합니다.
cde

5

Google Play 스토어로 이동하십시오. "hostname"을 검색하고 hostname changer 앱을 다운로드하십시오 .

뿌리가 있어야합니다.


장치 이름을 바꾸면 내부적으로 문제가 발생합니까?
bgmCoder

0

호스트 이름은 네트워크에 연결된 호스트를 쉽게 식별하고 기억하는 데 사용됩니다. 부팅시 (예 : /etc/hostnameLinux 기반 시스템 에서) 설정됩니다 . 호스트 이름은 DHCP 클라이언트 (이 경우 Android 장치)가 DHCP 서버 (WiFi 라우터)에 IP 주소를 할당하기 위해 만드는 일부 DHCPREQUEST( IETF에서 코드 12 로 표준화) 의 일부입니다 . DHCP 서버는 DNS 와 같은 서비스를 제공하기 위해 호스트 이름을 저장합니다 .

Android는 Linux 커널의 호스트 이름 서비스 를 사용하는 대신 속성 net.hostname을 사용 하여 Android ID를 기반으로하는 모든 장치에 대해 고유 한 호스트 이름을 설정했습니다. 이 호스트 이름 속성은 DHCP 핸드 셰이크에도 사용되었습니다. 그러나 Android 5 dhcpcd가 Java DHCP 클라이언트를 위해 네이티브 를 포기한 이후 호스트 이름은 null 입니다 DHCPREQUEST. net.hostname이다 도 세트 않으며, DHCP 클라이언트에 의해 평가 하였다. 그래서 와이파이 라우터는 새로운 안드로이드 장치에 대한 더 호스트 이름을 표시하지, 어느 쪽도 우리는 그것을 변경 / 해제 / 설정할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.