Bagaimana cara mengubah nama perangkat Android saya?

59

Perangkat Android saya adalah Nexus One. Tetapi ini harus berlaku untuk semua perangkat Android saat ini.

Bagaimana cara mengubah nama perangkat Android saya?

Ketika saya terhubung ke tabel klien router nirkabel saya, perangkat android saya terdaftar misalnya sebagai: android_1234567890abedfc. Saya ingin memberinya nama yang lebih mudah dibaca.

sepon
sumber
Anda juga dapat mengkonfigurasi nama host melalui server DHCP. Tapi saya belum memeriksa apakah android menggunakan opsi konfigurasi ini. Ini hanyalah pilihan kosmetik.
Alir
@Flow (Bervariasi tetapi) Android DHCPCD tidak memiliki dhcpcd-run-hooks untuk mengatur nama host dari DHCP. Setidaknya pada perangkat Samsung Froyo saya. Juga tidak memiliki kait ntp. DHCPCD memang mendukungnya.
cde
untuk GNU Linux: askubuntu.com/questions/9540/how-do-i-change-the-computer-name , metode kernel level rendah akan berfungsi
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Jawaban:

22

Untuk mengubah nama host (nama perangkat) Anda harus menggunakan terminal (sebagai root):

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

Untuk Froyo (2.2): (berfungsi juga di sebagian besar 2.3) setprop net.hostname MYNAME

Kemudian restart wi-fi Anda. Untuk melihat perubahannya, ketikkan uname -a

beberapa perangkat perlu di-boot ulang untuk bekerja!

Eder Gusatto
sumber
Apakah ini berhasil pada jelly bean?
jrg
3
Ini berfungsi, tetapi tidak bertahan saat reboot.
palswim
1
uname -atidak menunjukkan nama host bagi saya, meskipun dikatakan demikian localhost. apa yang Anda harapkan untuk ditampilkan?
endolith
15

Ringkasan:

  • getprop net.hostname (Nama Host Sistem Android, kemungkinan tipe nama android_24412414)
  • echo $HOSTNAME (shell / terminal / nama host env, kemungkinan ro.product.device dari build.prop)
  • cat /proc/sys/kernel/hostname(Nama Host Sistem Linux, kemungkinan localhost )
  • head /etc/hosts(Nama Host Sistem Linux, kemungkinan localhost )
  • hostname(Perintah tidak selalu diinstal, jika diinstal melalui kotak sibuk, akan membaca / proc / sys / kernel / hostname )

Tergantung pada versi Android yang Anda miliki.

Android 4.0 dan Di Atas

Versi yang lebih baru akan menggunakan build.propentri yang benar . Yaitu, Android membaca build.propseperti proses boot normal. Setelah Layanan Konektivitas berjalan, ia memeriksa untuk melihat apakah net.hostname diatur dalam Pengaturan, lalu jika kosong, maka ia menggunakan "android_" + (permanen) ID Android. Jadi itu semua yang perlu Anda lakukan.

Tambahkan net.hostname=HOSTNAMEHEREke /system/build.prop(Root mungkin diperlukan). Biarkan baris kosong di akhir file.

Kitkat's ConnectivityService.java, perhatikan pernyataan 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 dan Di Bawah

Versi yang lebih lama, Gingerbread, Froyo, dll, cukup clobber saja. Tidak masalah untuk memeriksa. Ini akan mengatur net.hostname ke android_24412414 ... apa pun yang terjadi. Jadi, Anda harus mengubahnya setelah Layanan Konektivitas selesai memuat. Untungnya, itu hanya menjalankan startup sekali, tidak pada setiap koneksi baru. Jadi kita hanya perlu menjalankan setprop net.hostname HOSTNAMEHEREsetelah itu agar tetap. Sayangnya, ini berjalan cukup terlambat dalam proses boot, jadi Anda perlu sesuatu yang akan membuat perubahan pada boot_complete. Kemungkinan besar Aplikasi yang berjalan dengan sendirinya.

KonektivitasService.java Froyo :

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

Tapi kemudian ada masalah lain.

Pengaturan net.hostname, tidak disalin ke seluruh sistem! Jika Anda menggunakan aplikasi konsol / terminal, Anda mungkin tidak mendapatkan nama host yang sama. Ponsel saya, Samsung Sidekick 4G (berbasis semi-Galaxy S) memiliki init.rc yang berjalan hostname localhost, jadi semua perintah di bawahnya tidak akan melihat nama host build.prop Anda atau nama host android_id! Jadi Anda perlu mengaturnya juga.

hostname HOSTNAMEHERE atau echo HOSTNAMEHERE > /proc/sys/kernel/hostname

Catatan: Bergantung pada bagaimana Anda melakukannya, Anda harus menjalankan perintah di atas sebagai root agar dapat berfungsi. Init.rc biasanya pada partisi sistem hanya baca, jadi akses root diperlukan untuk mengeditnya.

Perintah dhcpcd, yang dijalankan untuk mendapatkan alamat dhcp, tidak akan memperbarui ke nama host yang disediakan oleh server (Itu bisa diperbaiki dengan menambahkan dhcpcd-run-hooks dan dhcpcd.conf yang tepat), dan itu tidak akan memberikan nama host ke server dhcp jika $(hostname)(Perintah hostname) kosong atau localhost, dan itu tidak menggunakan net.hostname secara internal. libnetutils digunakan untuk memanggil dhcpcd dengan -h "net.hostname", tetapi jika karena alasan tertentu ia memutuskan untuk tidak menelepon dengan -h, DHCPCD AKAN MASIH MENGIRIM SISTEM HOSTNAME melalui gethostname (), asalkan tidak "(tidak ada) "," localhost ", atau kosong. Pada Stock Froyo pula. Samsung mengacaukan anjing pada beberapa perangkat seperti milik saya. Tidak ada nama host yang dilewati, waktu jaringan yang dipaksakan, dll.

Solusi Saya untuk Roti Jahe dan di bawah Samsung, Edit konfigurasi DHCP Client Daemon:

Hal terakhir yang dapat Anda lakukan adalah mengedit /etc/dhcpcd/dhcpcd.conf. Jika Anda menambahkan hostname YOURHOSTNAMEke file, itu akan menggunakannya, kecuali nama host diberikan pada commandline. Ini tidak akan memperbaiki masalah android_234etc, tetapi akan terjadi jika nama host adalah localhost (Masalah saya, karena Samsung mengacaukan libnetutils dan localhost di init.rc). Anda akan membutuhkan Root, tetapi ini bekerja lintas reboot. Ini tidak akan berfungsi jika dhcpcd dipanggil dengan opsi -h Hostname.

cde
sumber
10

Saya menemukan cara untuk melakukan ini pada Nexus 7 saya yang sudah di-root dengan 4.2.2. Pengaturan disimpan secara terus-menerus dan berfungsi saat reboot.
Sumber: http://nileshgr.com/2012/10/13/how-to-change-wifi-host-name-of-your-android-device

  1. Perhatikan bahwa perangkat harus di-root untuk menggunakan adb
  2. Lari adb pull /system/build.prop
  3. Edit build.propfile dan tambahkannet.hostname=NewHostname
  4. Jalankan adb push build.prop /sdcard/build.prop(atau /mnt/sdcard, jika gagal)
  5. Jalankan adb shelldan jalankan perintah berikut:
    $ su
    # mount -o rw,remount /system
    # cp /sdcard/build.prop /system/build.prop(atau /mnt/sdcardjika Anda menggunakannya sebelumnya)
    # mount -o ro,remount /system
    # exit
  6. Mulai ulang perangkat
Lennart
sumber
Ini diperbaiki di versi Android yang lebih baru. Ia memeriksa net.hostname dari build.prop. Versi Android yang lebih lama tidak (Terutama Froyo, mungkin Gingerbread).
cde
ICS bukan 4.2.2, itu artinya JB
HasH_BrowN
cara yang lebih mudah untuk melakukan ini adalah dengan menggunakan setpropperintah melalui root shell pada perangkat: misalnyasetprop net.hostname NewHostName
Tandai
1
@mark yang akan musnah pada reboot. Jawaban ini adalah versi permanen.
cde
9

Ini berfungsi pada CyanogenMod dan mungkin ROM yang dimodifikasi lainnya tetapi tidak menyediakan ROM AOSP:

Buka Pengaturan> Opsi Pengembang dan gulir ke bawah ke Nama Host Perangkat . Root tidak diperlukan.

(Klik gambar untuk memperbesar)

IMG:

cbabb
sumber
2
Ya, Anda tidak dapat melakukan ini pada tablet Acer A100 yang menjalankan Android 4.0.3. Bahkan, ia bahkan tidak memiliki "Nama host perangkat" di Opsi Pengembang.
bgmCoder
7

Saya belum menjalankan stok dalam waktu yang lama tetapi dalam Pengaturan Aplikasi> Pengembangan Anda akan melihat opsi 'Nama host perangkat'.

Tim T
sumber
pada versi Android apa? Ketika saya melihat opsi pengembangan pada Droid 3 saya (Android 2.3.4), saya tidak memiliki opsi itu.
Michael Kohne
3
Ini bekerja pada CyanogenMOD dan mungkin ROM modifikasi lainnya tetapi tidak menyediakan ROM AOSP.
Caleb
Tergantung sepenuhnya pada produsen dan pembangun, serta versi android.
cde
5

Buka Google Play Store. Cari "hostname", dan unduh aplikasi hostname changer .

Harus di-root.

Ryan Knell
sumber
Apakah penggantian nama perangkat akan mengacaukan sesuatu secara internal?
bgmCoder
0

Hostname digunakan untuk mengidentifikasi dan mengingat host yang terhubung ke jaringan dengan mudah. Ini diatur saat boot, misalnya dari /etc/hostnamepada sistem berbasis Linux. Hostname juga merupakan bagian dari DHCPREQUEST(standar sebagai kode 12 oleh IETF) yang dibuat oleh klien DHCP (perangkat Android dalam kasus kami) ke server DHCP (router WiFi) untuk mendapatkan alamat IP yang ditetapkan. Server DHCP menyimpan nama host untuk menawarkan layanan seperti DNS .

Android - alih-alih menggunakan layanan hostname kernel Linux - menggunakan properti net.hostnameuntuk menetapkan nama host unik untuk setiap perangkat yang didasarkan pada Android ID. Properti hostname ini juga digunakan untuk jabat tangan DHCP. Namun sejak Android 5 - ketika asli dhcpcdditinggalkan demi Java DHCP client - hostname adalah null di DHCPREQUEST. net.hostnameadalah tidak set , atau dievaluasi oleh klien DHCP. Jadi router WiFi tidak menunjukkan nama host untuk perangkat Android yang lebih baru, kami juga tidak dapat mengatur / menghapus / mengubahnya.

Irfan Latif
sumber