Ubuntu 17.04でadb権限なし


48

私が試みるとき:

$ adb devices

私は結果を得ます:

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

何が問題ですか?

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


試してくださいsudo adb devices。それがうまく機能すれば、メモリから、接続されたデバイスをチェックするためにルートである必要はありませんでした。
-shmink

1
sudoでは動作しませんが、rootログインでは動作します。問題は、Android Studioがルート以外のセッションからadbのみを実行し、jksudoで実行するとファイルが認識されないことです。
ナダブタッシャー

私はアンドロイドスタジオでも同じことを見つけましたが、一般的にはジェットブレインによって作られたものすべてです。Android Studioをインストールしたとき、rootでそれをしましたか?
-shmink

/ usr / local /にルートとして、777 -Rにchmodedとしてインストールされます。ルートとしてではなく、設定とSDKを認識するように実行します。
ナダブタッシャー

rootとして実行して、設定とSDKを適切に変更するだけです。
シュミンク

回答:


64

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

sudo adb kill-server

その後

sudo adb start-server

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

adb devices

2
これは機能します。それを実行した後、実際に実行adb devicesするとデバイスが表示されます(指紋ダイアログが表示されます)。ただし、Android Studioではまだ機能しません。さらに、Android Studioを実行してadb devicesからコンソールから実行すると、「adbサーバーが最新ではありません」と表示され、adbサーバーが再起動します。その後、再び「許可なし」の状況になります。
シェード

これは動作しません。adbデバイスは何も表示せず、ヘッドセットは二度と許可を求めません。
Tyguy7

62

同じ問題がありました。デバイスのUSBモードが充電されていない ことを確認するだけで解決しました。


5
ここでも同じですが、結果なしでUdevルールを変更し、USBをファイル共有に変更しました。デバイスは、以前のubuntuバージョンではudevルールや特定のUSBモードを必要としませんでした。
Fco P.

3
これは正しい答えである必要があります(adb restart serverではありません)
RumburaK


1
正解ではありませんが、うまくいきました。
うずまきD.いちご

1
はい、これは正解です。

39

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、(あなたが使用してチェックし、可能shoukd 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

出典:AndroidデバイスのUSBデバッグ用のudevルールの追加-Janos Gyerik


1
この答えは私の問題を解決しました。パーフェクト、ありがとう。
alexmeia

1
@Paulに感謝します。理由を説明します。udevサービスの再起動も必要だと思います。
ガガン

あなたはあなたが使用sudoをする必要はないはずというもののためにsudoを使用したくない場合は、これが最も確実に正しい解決策である
aholt

これが正しい答えので、これは受け入れられた答えでなければなりません。最も評価の高い答えは、実際には単なる回避策です。
ジョエルクロス

これで解決しました。昨日はルールなしで機能していましたが、ubuntuにアップデートをインストールすると機能しなくなり、これを行う必要がありました。
-simernes

2

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

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

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

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


システムの更新(電話)とスタジオの更新によって修正されたバグですが、ありがとうございました。
ナダブタッシャー

2

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


2

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

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

行うには正しいことは、ユーザーが権限を持って作るチェックアウトするようにシステムを設定されているこのガイド私はそれを正しく行うにはどのように書きましたが。


2

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デバイスのプラグを抜き差しする必要がありました。


これも私には機能しません...
Tyguy7

1

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


動作しない、私はすでにそれを試してみました、それが問題であれば、私はアンドロイド7.1.2を使用しています、そして7.1.1を実行している別のデバイスで動作しました。
ナダブタッシャー

すべてのホスト認証を削除しようとしましたか?その後再起動しましたか?
ジョエルGマシュー

再起動しませんでした。それを試してみて、うまくいったかどうかを教えてあげましょう。
ナダブタッシャー

うまくいった場合は、答えを受け入れることができます。
ジョエルGマシュー

後で今日の病気をチェック
Nadav Tasher


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

[設定] >> [メンテナンス] >> [ストレージ]に移動します。次に、左上のメニューを確認し、USBコンピューター接続をクリックして、メディアデバイス(MTP)に変更します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.