私が試みるとき:
$ adb devices
私は結果を得ます:
List of devices attached
???????????? no permissions
何が問題ですか?
ubuntu 16.04マシンで試してみましたが、完全に機能しました。 7.1.1デバイスを試してみましたが、これも完全に機能しました。
Adbサーバーを再起動してください。
Sudo adb kill-server
その後
Sudo adb start-server
次に、デバイスを接続してデバッグをオンにして入力します
adb devices
同じ問題がありました。デバイスのUSBモードがNOTであることを確認充電のみで解決しました。
Udevがデバイスを誤って追加している可能性があります。私もこの問題を抱えており、比較的簡単な解決策に出会いました。
Lsusbでデバイスを見つける
$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 8087:0a2b Intel Corp.
Bus 001 Device 002: ID 05c8:03a2 Cheng Uei Precision Industry Co., Ltd (Foxlink)
Bus 001 Device 006: ID 18d1:4ee7 Google Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
この場合の関心点:
Bus 001 Device 006: ID 18d1:4ee7 Google Inc.
対応するデバイスファイルをチェックアウトする
$ ls -l /dev/bus/usb/001/006
おそらくあなたは次のようなものを見るでしょう
crw-rw-r-- 1 root root 189, 5 Sep 8 21:47 /dev/bus/usb/001/006
これは、デバイスファイルがユーザールートとグループルートによって所有されることを意味します。そのため、adbは標準ユーザーとしてではなくルートとしてアクセスできます。
これは、新しいudevルールを作成することで解決できます-/etc/udev/rules.d/51-Android.rules
-を使用して、デバイスをグループplugdev
に追加しました。adbは、すでにあなたがメンバーであると想定しています(id
を使用して確認してください)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee7", MODE="0660",
GROUP="plugdev", SYMLINK+="Android%n"
** ATTR {idProduct} == "4ee7"をステップ1で見つけた独自の製品IDに置き換えてください。 **(ベンダーがGoogle Inc.でない場合は、ベンダーIDもlsusbのコロンの前のものに置き換えてください)。
次に、デバイスのプラグを抜いてから再び接続し(udevが新しいファイルに自動的に応答する)、tadaaを実行します。
$ adb devices
List of devices attached
YC873P0G device
Sudo
(Sudo adb start-server
)を使用することを提案する解決策に従わないでください!これはルート(管理者)としてadbを実行し、そのように実行することは想定されていません!!! これは悪い回避策です!
ファイルを作成または変更した場合、rootとして実行されているすべてのことがシステムで何でもできます。rootのみが使用する許可を変更できます。繰り返しますが、しないでください!
正しいことは、ユーザーに許可を与えるようにシステムをセットアップします。チェックアウト このガイド 適切に行う方法について書きました。
Sumeet Deshmukhの答えを拡張するために、彼のアプローチは一般に機能します-コンソールからadb
コマンドのみを使用したい場合。
ただし、Android Studioは明らかに独自のadbサーバーを起動し、私たちを殺します。これは、Sudoを使用してサーバーを強制終了/起動した後、Studioが再起動することを意味します。これにより、起動が許可されない状況になります。
解決策は、最初にStudioを起動してから、サーバーの起動/停止を実行することです。そうすることで、Nexus 5XをStudioで有効な実行ターゲットとして表示することができました。
これは最適な状況ではありません(Studioを起動するたびにコマンドを実行する必要があります)が、迅速かつ汚い方法でトリックを実行します。より恒久的な解決策を見つけた場合は、この回答を更新します。
plugdev
グループに自分を追加し、すべてのシェルセッションで変更が有効になることを確認するためにマシンを再起動した後、それは機能しませんでした。その後、51-Android.rules
に/etc/udev/rules.d
ファイルがないことがわかり、問題を解決するために次のことを行う必要がありました。
# Here the vendor ID is of Google
$ echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0660", GROUP="plugdev"' | Sudo tee —append /etc/udev/rules.d/51-Android.rules
$ Sudo chmod a+r /etc/udev/rules.d/51-Android.rules
$ Sudo udevadm control --reload-rules
$ Sudo service udev restart
また、Androidデバイスを取り外して再度接続する必要がありました。
Androidデバイスで許可を与える必要があります。 [設定]> [開発者オプション]に移動します。 Usbデバッグをオフにしてから再度オンにしてみてください。ケーブルを取り外して再接続します。また、開発者オプションから保存されているすべての認証を削除してみてください。電話のプロンプトでデバッグ許可を要求するようになります。受け入れ。
USBモードをPhoneから変更すると、私にとってはうまくいきました。 (ファイル転送に設定します。)
M0Rf30/Android-udev-rules
GitHubコミュニティはudev-rulesを維持しました
https://github.com/M0Rf30/Android-udev-rules/blob/master/51-Android.rules
これはこれまで見た中で最も完全なudev-rulesのリストであり、現在推奨されているSudo apt-get install Android-tools-adb
公式ドキュメント上 よりもさらに多く、試してみてください。
[設定] >> [メンテナンス] >> [ストレージ]に移動します。次に、左上のメニューを確認し、USBコンピューター接続をクリックして、メディアデバイス(MTP)に変更します。
なぜこれが機能するのか分かりませんが、これが私のために働いた唯一の解決策でした
Adbが実行されている場所を見つけます(私のようであれば、複数のバージョンがインストールされています)。反応ネイティブのようなツールは、あなたの人生をより難しくするためにランダムな他のバージョンを使用することを決定するかもしれません。私にとっては~/Android/Sdk/platform-tools/adb
です。だから私は実行します:
Sudo chown root:YOUR_USERNAME ~/Android/Sdk/platform-tools/adb
Sudo chmod 4550 ~/Android/Sdk/platform-tools/adb
Androidツールは非常に迷惑です。