私のAndroidデバイスはNexus Oneです。ただし、これは現在のすべてのAndroidデバイスに適用する必要があります。
Androidデバイスの名前を変更するにはどうすればよいですか?
ワイヤレスルーターのクライアントテーブルに接続すると、android_1234567890abedfcのようにAndroidデバイスがリストされます。もっとわかりやすい名前を付けたいと思います。
私のAndroidデバイスはNexus Oneです。ただし、これは現在のすべてのAndroidデバイスに適用する必要があります。
Androidデバイスの名前を変更するにはどうすればよいですか?
ワイヤレスルーターのクライアントテーブルに接続すると、android_1234567890abedfcのようにAndroidデバイスがリストされます。もっとわかりやすい名前を付けたいと思います。
回答:
ホスト名(デバイス名)を変更するには、ターミナルを(ルートとして)使用する必要があります。
Eclair(2.1)の場合:エコーMYNAME> / proc / sys / kernel / hostname
Froyo(2.2)の場合:(ほとんどの2.3でも動作します)setprop net.hostname MYNAME
次に、wi-fiを再起動します。変更を確認するには、uname -aと入力します。
一部のデバイスは作業のために再起動する必要があります!
uname -a
とは言っていますが、ホスト名は表示されませんlocalhost
。何を期待していますか?
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のバージョンによって異なります。
新しいバージョンでは正しいbuild.prop
エントリが使用されます。つまり、Androidはbuild.prop
通常のブートプロセスとして読み取ります。接続サービスが実行されると、net.hostnameが設定で設定されているかどうかを確認し、空の場合は「android _」+(永続)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);
古いバージョン、Gingerbread、Froyoなどは、単にそれを壊します。確認する必要はありません。net.hostnameをandroid_24412414に設定します...何があっても。そのため、接続サービスの読み込みが完了した後に変更する必要があります。幸いなことに、すべての新しい接続ではなく、スタートアップを1回だけ実行します。したがって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(セミギャラクシーSベース)には、実行されるinit.rcがあるhostname localhost
ので、下のすべてのコマンドはbuild.propホスト名またはandroid_idホスト名のいずれも表示しません!したがって、それも設定する必要があります。
hostname HOSTNAMEHERE
またはecho HOSTNAMEHERE > /proc/sys/kernel/hostname
注:実行方法によっては、上記のコマンドを機能させるためにrootとして実行する必要があります。通常、Init.rcは読み取り専用のシステムパーティション上にあるため、編集するにはルートアクセスが必要です。
dhcpアドレスを取得するために実行されるdhcpcdコマンドは、サーバーが提供するホスト名に更新されません(正しいdhcpcd-run-hooksとdhcpcd.confを追加することで修正できます)。ホスト名は提供しません。$(hostname)
(hostnameコマンド)が空白またはlocalhostであり、内部的にnet.hostnameを使用しない場合、dhcpサーバーに送信されます。libnetutilsは、-h "net.hostname"を使用してdhcpcdを呼び出すために使用されますが、何らかの理由で-hを使用しない場合、DHCPCDは "(none)でない限り、gethostname()を介してシステムホスト名を送信します。 "、" localhost "、または空。とにかく在庫Froyo。サムスンは、私のようないくつかのデバイスでこの問題を解決しました。ホスト名のパススルーなし、強制ネットワーク時間など
最後にできることは、/ etc / dhcpcd / dhcpcd.confを編集することです。hostname YOURHOSTNAME
ファイルに追加すると、コマンドラインでホスト名が指定されていない限り、それが使用されます。これでandroid_234etcの問題は修正されませんが、ホスト名がlocalhostの場合は問題が解決します(Samsungがinit.rcでlibnetutilsとlocalhostをねじ込んだため)。ルートが必要になりますが、これは再起動後も機能します。dhcpcdが-h Hostnameオプションで呼び出された場合、これは機能しません。
4.2.2でルート化されたNexus 7でこれを行う方法を見つけました。設定は永続的に保存され、再起動中も機能します。
ソース:http : //nileshgr.com/2012/10/13/how-to-change-wifi-host-name-of-your-android-device
- adbを使用するには、デバイスをルート化する必要があることに注意してください
- 走る
adb pull /system/build.prop
build.prop
ファイルを編集して追加net.hostname=NewHostname
- 実行
adb push build.prop /sdcard/build.prop
(または/mnt/sdcard
、失敗した場合)adb shell
次のコマンドを実行および実行します:(
$ su
# mount -o rw,remount /system
# cp /sdcard/build.prop /system/build.prop
または/mnt/sdcard
以前に使用した場合)
# mount -o ro,remount /system
# exit
- デバイスを再起動します
setprop
、デバイスのルートシェル経由でコマンドを使用することです。たとえば、14setprop net.hostname NewHostName
ホスト名は、ネットワークに接続されているホストを簡単に識別して記憶するために使用されます。/etc/hostname
Linuxベースのシステムなどからの起動時に設定されます。ホスト名は、DHCPクライアント(この例ではAndroidデバイス)がDHCPサーバー(WiFiルーター)に割り当ててIPアドレスを割り当てる(IETFによりコード12DHCPREQUEST
として標準化)の一部でもあります。DHCPサーバーはホスト名を保存して、DNSなどのサービスを提供します。
Android-Linuxカーネルのホスト名サービスを使用する代わりに、プロパティnet.hostname
を使用して、Android IDに基づいたすべてのデバイスに一意のホスト名を設定しました。このホスト名プロパティは、DHCPハンドシェイクにも使用されました。ただし、Android 5-ネイティブdhcpcd
がJava DHCPクライアントを支持して放棄されたため、ホスト名はでnullですDHCPREQUEST
。net.hostname
でどちらのセット、またDHCPクライアントによって評価しました。そのため、WiFiルーターは新しいAndroidデバイスのホスト名を表示せず、設定も設定解除も変更もできません。