Làm cách nào để thay đổi tên thiết bị Android của tôi?


59

Thiết bị Android của tôi là Nexus One. Nhưng điều này nên áp dụng cho tất cả các thiết bị Android hiện tại.

Làm cách nào để thay đổi tên thiết bị Android của tôi?

Khi tôi kết nối với các bảng máy khách của bộ định tuyến không dây, các thiết bị Android của tôi được liệt kê ví dụ như: android_1234567890abedfc. Tôi muốn đặt cho nó một cái tên dễ đọc hơn.


Cũng có thể định cấu hình tên máy chủ thông qua máy chủ DHCP. Nhưng tôi đã không kiểm tra nếu Android sử dụng tùy chọn cấu hình này. Dù sao đó chỉ là một lựa chọn mỹ phẩm.
Lưu lượng


@Flow (Khác nhau nhưng) DHCPCD của Android không có dhcpcd-run-hook để đặt tên máy chủ từ DHCP. Toàn bộ trên thiết bị Samsung Froyo của tôi. Nó cũng không có móc ntp. DHCPCD không hỗ trợ nó mặc dù.
cde

đối với GNU Linux: askubfox.com/questions/9540/how-do-i-change-the-computer-name , các phương thức kernel cấp thấp sẽ hoạt động
Ciro Santilli 改造

Câu trả lời:


22

Để thay đổi tên máy chủ (tên thiết bị), bạn phải sử dụng thiết bị đầu cuối (dưới dạng root):

Đối với Eclair (2.1): echo MYNAME> / Proc / sys / kernel / tên máy chủ

Đối với Froyo (2.2): (cũng hoạt động trên hầu hết 2.3) setprop net.hostname MYNAME

Sau đó khởi động lại wi-fi của bạn. Để xem sự thay đổi, nhập uname -a

Một số thiết bị cần khởi động lại cho công việc!


Cái này có tác dụng với thạch đậu không?
JRG

3
Điều này hoạt động, nhưng không tiếp tục khởi động lại.
palswim

1
uname -akhông hiển thị tên máy chủ cho tôi, mặc dù nó nói localhost. bạn mong đợi nó thể hiện điều gì?
endolith

15

Tóm lược:

  • getprop net.hostname (Tên máy chủ hệ thống Android, có thể là tên loại android_24412414)
  • echo $HOSTNAME (tên máy chủ shell / terminal / env, có khả năng ro.product.device từ build.prop)
  • cat /proc/sys/kernel/hostname(Tên máy chủ hệ thống Linux, có khả năng localhost )
  • head /etc/hosts(Tên máy chủ hệ thống Linux, có khả năng localhost )
  • hostname(Lệnh không phải lúc nào cũng được cài đặt, nếu được cài đặt qua hộp bận, sẽ đọc / Proc / sys / kernel / hostname )

Phụ thuộc vào phiên bản Android bạn có.

Android 4.0 trở lên

Các phiên bản mới hơn sẽ sử dụng đúng build.propmục. Vâng, có nghĩa là, Android đọc build.propnhư là quá trình khởi động bình thường. Khi Dịch vụ kết nối chạy, nó sẽ kiểm tra xem net.hostname có được đặt trong Cài đặt không, sau đó nếu trống, thì nó sẽ sử dụng ID android "android_" + (vĩnh viễn). Vì vậy, đó là tất cả những gì bạn cần làm.

Thêm net.hostname=HOSTNAMEHEREvào /system/build.prop(Root có thể cần thiết). Để lại một dòng trống ở cuối tập tin.

Kitkat's ConnectivityService.java, lưu ý câu lệnh 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 trở xuống

Các phiên bản cũ hơn, Gingerbread, Froyo, v.v., chỉ cần ghi đè lên nó. Nó không bận tâm để kiểm tra. Nó sẽ đặt net.hostname thành android_24412414 ... không có vấn đề gì. Vì vậy, bạn sẽ cần thay đổi nó sau khi Dịch vụ kết nối đã tải xong. May mắn thay, nó chỉ chạy khởi động một lần, không phải trên mọi kết nối mới. Vì vậy, chúng tôi chỉ cần chạy setprop net.hostname HOSTNAMEHEREsau đó để nó dính. Thật không may, nó chạy khá muộn trong quá trình khởi động, vì vậy bạn cần một cái gì đó sẽ thực hiện các thay đổi trên boot_complete. Nhiều khả năng là một ứng dụng tự chạy.

ConnectivityService.java của 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);

Nhưng sau đó có một vấn đề khác.

Cài đặt net.hostname, không được sao chép vào toàn bộ hệ thống! Nếu bạn sử dụng ứng dụng console / terminal, bạn có thể không có cùng tên máy chủ. Điện thoại của tôi, Samsung Sidekick 4G (dựa trên bán Galaxy S) có init.rc chạy hostname localhost, vì vậy tất cả các lệnh bên dưới sẽ không thấy tên máy chủ build.prop hoặc tên máy chủ android_id! Vì vậy, bạn cần phải thiết lập điều đó quá.

hostname HOSTNAMEHERE hoặc là echo HOSTNAMEHERE > /proc/sys/kernel/hostname

Lưu ý: Tùy thuộc vào cách bạn đang thực hiện, bạn sẽ cần chạy lệnh trên dưới dạng root để nó hoạt động. Init.rc thường nằm trên phân vùng hệ thống chỉ đọc, vì vậy cần có quyền truy cập root để chỉnh sửa nó.

Lệnh dhcpcd, được chạy để lấy địa chỉ dhcp, sẽ không cập nhật tên máy chủ do máy chủ cung cấp (Điều đó có thể được sửa bằng cách thêm dhcpcd-run-hook và dhcpcd.conf) và nó sẽ không cung cấp tên máy chủ đến máy chủ dhcp nếu $(hostname)(Lệnh hostname) trống hoặc localhost và bên trong nó không sử dụng net.hostname. libnetutils được sử dụng để gọi dhcpcd với -h "net.hostname", nhưng nếu vì lý do nào đó, nó quyết định không gọi bằng -h, DHCPCD SILL GỬI HỆ THỐNG HOSTNAME qua gethostname (), miễn là không phải "(không có) "," localhost "hoặc trống. Trên cổ phiếu Froyo nào. Samsung đã vặn pooch trên một số thiết bị như của tôi. Không có tên máy chủ nào đi qua, thời gian mạng bắt buộc, v.v.

Giải pháp của tôi cho Gingerbread và bên dưới Samsung, Chỉnh sửa cấu hình DHCP Client Daemon:

Điều cuối cùng bạn có thể làm là chỉnh sửa /etc/dhcpcd/dhcpcd.conf. Nếu bạn thêm hostname YOURHOSTNAMEvào tập tin, nó sẽ sử dụng nó, trừ khi tên máy chủ được đưa ra trên dòng lệnh. Điều này sẽ không khắc phục sự cố android_234etc, nhưng nếu tên máy chủ là localhost (Vấn đề của tôi, do Samsung đã vặn libnetutils và localhost trong init.rc). Bạn sẽ cần Root, nhưng điều này hoạt động trên các lần khởi động lại. Điều này sẽ không hoạt động nếu dhcpcd được gọi với tùy chọn -h Hostname.


10

Tôi đã tìm thấy một cách để làm điều này trên Nexus 7 đã root của tôi với 4.2.2. Các thiết lập được lưu liên tục và hoạt động trong suốt quá trình khởi động lại.
Nguồn: http://nileshgr.com/2012/10/13/how-to-change-wifi-host-name-of-your-android-device

  1. Lưu ý rằng thiết bị phải được root để sử dụng adb
  2. Chạy adb pull /system/build.prop
  3. Chỉnh sửa build.proptập tin và chắp thêmnet.hostname=NewHostname
  4. Chạy adb push build.prop /sdcard/build.prop(hoặc /mnt/sdcard, nếu thất bại)
  5. Chạy adb shellvà thực hiện các lệnh sau:
    $ su
    # mount -o rw,remount /system
    # cp /sdcard/build.prop /system/build.prop(hoặc /mnt/sdcardnếu bạn đã sử dụng lệnh đó trước đó)
    # mount -o ro,remount /system
    # exit
  6. Khởi động lại thiết bị

Điều này đã được sửa trong các phiên bản Android mới hơn. Nó kiểm tra net.hostname từ build.prop. Các phiên bản Android cũ hơn thì không (Chủ yếu là Froyo, có thể là Gingerbread).
cde

ICS không phải 4.2.2, đó sẽ là JB
HasH_BrowN

một cách dễ dàng hơn để làm điều này là sử dụng setproplệnh thông qua trình bao gốc trên thiết bị: ví dụsetprop net.hostname NewHostName
Đánh dấu

1
@mark sẽ bị chặn khi khởi động lại. Câu trả lời này là một phiên bản vĩnh viễn.
cde

9

Điều này hoạt động trên CyanogenMod và có thể các ROM đã sửa đổi khác nhưng không lưu trữ ROM AOSP:

Chuyển đến Cài đặt> Tùy chọn nhà phát triển và cuộn xuống Tên máy chủ thiết bị . Root không cần thiết.

(Bấm vào hình để phóng to)

IMG:


2
Vâng, bạn không thể làm điều này trên máy tính bảng Acer A100 chạy Android 4.0.3. Trên thực tế, nó thậm chí không có "Tên máy chủ thiết bị" trong Tùy chọn nhà phát triển.
bgmCoder

7

Tôi đã không chạy chứng khoán trong một thời gian dài nhưng trong Cài đặt ứng dụng> Phát triển, bạn sẽ thấy tùy chọn 'Tên máy chủ thiết bị'.


trên phiên bản Android nào? Khi tôi xem các tùy chọn phát triển trên Droid 3 (Android 2.3.4), tôi không có tùy chọn đó.
Michael Kohne

3
Điều này hoạt động trên CyanogenMOD và có thể các ROM đã sửa đổi khác nhưng không lưu trữ ROM AOSP.
Caleb

Hoàn toàn phụ thuộc vào nhà sản xuất và nhà xây dựng, cũng như phiên bản Android.
cde

5

Truy cập Cửa hàng Google Play. Tìm kiếm "tên máy chủ" và tải xuống ứng dụng thay đổi tên máy chủ .

Phải bắt nguồn từ.


Sẽ đổi tên thiết bị gây rối bất cứ điều gì trong nội bộ?
bgmCoder

0

Tên máy chủ được sử dụng để dễ dàng xác định và ghi nhớ các máy chủ được kết nối với mạng. Nó được thiết lập khi khởi động, ví dụ từ /etc/hostnamecác hệ thống dựa trên Linux. Tên máy chủ cũng là một phần của DHCPREQUEST(được chuẩn hóa theo mã 12 bởi IETF) mà máy khách DHCP (thiết bị Android trong trường hợp của chúng tôi) tạo cho máy chủ DHCP (bộ định tuyến WiFi) để nhận địa chỉ IP được gán. Máy chủ DHCP lưu trữ tên máy chủ để cung cấp các dịch vụ như DNS .

Android - thay vì sử dụng dịch vụ tên máy chủ của nhân Linux - thuộc tính được sử dụng net.hostnameđể đặt tên máy chủ duy nhất cho mọi thiết bị dựa trên ID Android. Thuộc tính tên máy chủ này cũng được sử dụng cho bắt tay DHCP. Tuy nhiên kể từ khi Android 5 - khi mẹ đẻ dhcpcdbị bỏ rơi trong lợi của Java DHCP client - hostname là trong DHCPREQUEST. net.hostnamekhông phải thiết lập , và cũng không được đánh giá bởi DHCP client. Vì vậy, các bộ định tuyến WiFi không hiển thị tên máy chủ cho các thiết bị Android mới hơn, chúng tôi cũng không thể đặt / hủy đặt / thay đổi nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.