web-dev-qa-db-ja.com

Ubuntu 17.04でadb権限なし

私が試みるとき:

$ adb devices

私は結果を得ます:

List of devices attached 
????????????    no permissions

何が問題ですか?

ubuntu 16.04マシンで試してみましたが、完全に機能しました。 7.1.1デバイスを試してみましたが、これも完全に機能しました。

42
Nadav Tasher

Adbサーバーを再起動してください。

Sudo adb kill-server

その後

Sudo adb start-server

次に、デバイスを接続してデバッグをオンにして入力します

adb devices
58
Sumeet Deshmukh

同じ問題がありました。デバイスのUSBモードがNOTであることを確認充電のみで解決しました。

57
Ivan Klass

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

ソース: SBデバッグAndroidデバイス用のudevルールの追加-Janos Gyerik

36
Paul

SudoSudo adb start-server)を使用することを提案する解決策に従わないでください!これはルート(管理者)としてadbを実行し、そのように実行することは想定されていません!!! これは悪い回避策です

ファイルを作成または変更した場合、rootとして実行されているすべてのことがシステムで何でもできます。rootのみが使用する許可を変更できます。繰り返しますが、しないでください!

正しいことは、ユーザーに許可を与えるようにシステムをセットアップします。チェックアウト このガイド 適切に行う方法について書きました。

2
Daniele Segato

Sumeet Deshmukhの答えを拡張するために、彼のアプローチは一般に機能します-コンソールからadbコマンドのみを使用したい場合。

ただし、Android Studioは明らかに独自のadbサーバーを起動し、私たちを殺します。これは、Sudoを使用してサーバーを強制終了/起動した後、Studioが再起動することを意味します。これにより、起動が許可されない状況になります。

解決策は、最初にStudioを起動してから、サーバーの起動/停止を実行することです。そうすることで、Nexus 5XをStudioで有効な実行ターゲットとして表示することができました。

これは最適な状況ではありません(Studioを起動するたびにコマンドを実行する必要があります)が、迅速かつ汚い方法でトリックを実行します。より恒久的な解決策を見つけた場合は、この回答を更新します。

2
Shade

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デバイスを取り外して再度接続する必要がありました。

2
russoue

Androidデバイスで許可を与える必要があります。 [設定]> [開発者オプション]に移動します。 Usbデバッグをオフにしてから再度オンにしてみてください。ケーブルを取り外して再接続します。また、開発者オプションから保存されているすべての認証を削除してみてください。電話のプロンプトでデバッグ許可を要求するようになります。受け入れ。

1
Joel G Mathew

USBモードをPhoneから変更すると、私にとってはうまくいきました。 (ファイル転送に設定します。)

1
NuttLoose

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)に変更します。

0

なぜこれが機能するのか分かりませんが、これが私のために働いた唯一の解決策でした

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ツールは非常に迷惑です。

0
Bufke