Як змінити назву свого пристрою Android?


59

Мій пристрій Android - Nexus One. Але це має стосуватися всіх поточних пристроїв Android.

Як змінити назву свого пристрою Android?

Коли я підключаюсь до клієнтських таблиць бездротового маршрутизатора, мої пристрої Android перелічуються, наприклад, як: android_1234567890abedfc. Я хотів би дати йому більш читабельну назву.


Також можливо налаштувати ім'я хоста через сервер DHCP. Але я не перевіряв, чи використовує Android цю опцію конфігурації. Це все одно просто косметичний варіант.
Потік


@Flow (варіюється, але) Android DHCPCD Android не має dhcpcd-гаків для встановлення імені хоста від DHCP. Принаймні на моєму пристрої Samsung Froyo. У нього також немає гачків ntp. DHCPCD все ж підтримує це.
cde

для GNU Linux: askubuntu.com/questions/9540/how-do-i-change-the-computer-name , ядра низького рівня працюватимуть
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Відповіді:


22

Щоб змінити ім'я хоста (ім'я пристрою), ви повинні використовувати термінал (як root):

Для Eclair (2.1): echo MYNAME> / proc / sys / ядро ​​/ ім'я хоста

Для Froyo (2.2): (працює також на більшості 2.3) setprop net.hostname MYNAME

Потім перезапустіть свій Wi-Fi. Щоб побачити зміни, введіть uname -a

деякі роботи потребують перезавантаження для роботи!


Чи працює це на квасолі?
jrg

3
Це працює, але не зберігається при перезавантаженні.
palswim

1
uname -aне показує ім'я хоста для мене, хоча воно і говорить localhost. що ти очікуєш, що це покаже?
ендоліт

15

Підсумок:

  • getprop net.hostname (Ім'я хосту системи Android, швидше за все, ім’я типу Android
  • echo $HOSTNAME (оболонка / термінал / env ім'я хоста, ймовірно, ro.product.device від build.prop)
  • cat /proc/sys/kernel/hostname(Ім'я хоста Linux, ймовірно localhost )
  • head /etc/hosts(Ім'я хоста Linux, ймовірно localhost )
  • hostname(Команда не завжди встановлена, якщо встановлена ​​через зайнятий вікно, буде читати / proc / sys / ядро ​​/ ім'я хоста )

Залежить від того, яку версію Android ви маєте.

Android 4.0 і вище

Новіші версії використовуватимуть правильний build.propзапис. Ну, тобто, Android читає build.propяк це нормальний процес завантаження. Як тільки служба підключення запускається, вона перевіряє, чи встановлено net.hostname у Налаштуваннях, потім якщо порожній, то він використовує "android_" + (постійний) ідентифікатор Android. Отже, це все, що вам потрібно зробити.

Додати net.hostname=HOSTNAMEHEREв /system/build.prop(може знадобитися корінь). Залиште порожній рядок у кінці файлу.

Kitkat's 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 і нижче

Старіші версії, Пряники, Фройо тощо, просто приборкають його. Це не турбує перевіряти. Він встановить net.hostname для android_24412414 ... незалежно від того. Тому вам потрібно буде змінити його після того, як Служба підключення закінчила завантаження. На щастя, він запускається лише один раз, а не при кожному новому з'єднанні. Тож нам просто потрібно бігти setprop net.hostname HOSTNAMEHEREпісля цього, щоб він прилип. На жаль, він працює досить пізно в процесі завантаження, тому вам потрібно щось, що зробить зміни на boot_complete. Швидше за все додаток, який працює сам по собі.

Froyo's 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, як правило, є на системному розділі лише для читання, тому для його редагування потрібен кореневий доступ.

Команда dhcpcd, яку запускають для отримання адреси dhcp, не буде оновлено до імені хоста, наданого сервером (Це можна виправити, додавши правильні dhcpcd-run-hooks та dhcpcd.conf), і воно не надасть ім'я хоста на сервер dhcp, якщо $(hostname)(команда ім'я хоста) порожня або localhost, і він не використовує внутрішньо net.hostname. libnetutils використовується для виклику dhcpcd з -h "net.hostname", але якщо з якихось причин він вирішив не дзвонити з -h, DHCPCD ВІДПОВІДУЄ НАДІСЛЕННЯ СИСТЕМИ HOSTNAME через gethostname (), поки це не "(none) "," localhost "або порожній. На запасі Froyo все одно. Компанія Samsung накрутила пуху на деяких пристроях, як у мене. Жодне ім'я хоста не проходить, примусовий час мережі тощо

Моє рішення для пряників та нижче Samsung, відредагуйте конфігурацію Daemon клієнта DHCP:

Останнє, що ви можете зробити, це редагувати /etc/dhcpcd/dhcpcd.conf. Якщо ви додасте hostname YOURHOSTNAMEу файл, він буде використовувати це, якщо тільки в командному рядку не вказано ім'я хоста. Це не виправить проблему android_234etc, але буде, якщо ім'я хоста - localhost (Моя проблема, оскільки Samsung вкрутив libnetutils і localhost в init.rc). Вам знадобиться Root, але це працює через перезавантаження. Це не працюватиме, якщо 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. Він перевіряє net.hostname від build.prop. Старіших версій Android немає (головним чином Froyo, можливо, Пряники).
cde

ICS isnt 4.2.2, це було б JB
HasH_BrowN

простіший спосіб зробити це - скористатися setpropкомандою через кореневу оболонку на пристрої: наприкладsetprop net.hostname NewHostName
Марк

1
@mark, який би перетворився на перезавантаження. Ця відповідь є постійною версією.
cde

9

Це працює на CyanogenMod та, ймовірно, інших модифікованих ПЗУ, але не є AOSP ROM:

Перейдіть у Налаштування> Параметри розробника та прокрутіть униз до Назви хоста пристрою . Корінь не потрібен.

(Клацніть зображення, щоб збільшити)

IMG:


2
Так, ви не можете цього зробити на планшеті Acer A100 під керуванням Android 4.0.3. Насправді в опціях розробника навіть немає "Імені хоста пристрою".
bgmCoder

7

Я довго не займався запасом, але в Налаштуваннях програми> Розробка ви побачите опцію "Ім'я хоста пристрою".


на яких версіях Android? Коли я переглядаю варіанти розвитку на своєму Droid 3 (Android 2.3.4), у мене немає такої можливості.
Майкл Коне

3
Це працює на CyanogenMOD та, ймовірно, інших модифікованих ПЗУ, але не є AOSP ROM.
Калеб

Повністю залежить від виробника та будівельника, а також андроїд версії.
cde

5

Перейдіть до Google Play Store. Знайдіть "ім'я хоста" та завантажте додаток для зміни імені хоста .

Повинно бути корінням.


Чи перейменування пристрою все-таки все зіпсує?
bgmCoder

0

Ім'я хоста використовується для легкої ідентифікації та запам'ятовування хостів, підключених до мережі. Він встановлюється під час завантаження, наприклад, із /etc/hostnameсистем на базі Linux. Ім'я хоста - це також частина DHCPREQUEST(стандартизована як код 12 IETF), яку клієнт DHCP (пристрій Android у нашому випадку) робить на сервері DHCP (маршрутизатор WiFi), щоб отримати IP-адресу. DHCP-сервер зберігає імена хостів, щоб пропонувати такі послуги, як DNS .

Android - замість використання сервера імені хоста Linux - використовувала властивість net.hostnameдля встановлення унікального імені хоста для кожного пристрою, заснованого на Android ID. Це властивість імені хоста також використовувалося для рукостискання DHCP. Однак , так як Android 5 - коли рідний dhcpcdбув залишений на користь Java DHCP клієнта - ім'я хоста нуль в DHCPREQUEST. net.hostnameє ні набір , ні оцінювали DHCP клієнта. Таким чином, маршрутизатори WiFi не показують імен хостів для новіших пристроїв Android, і ми не можемо встановити / вимкнути / змінити його.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.