adbdevicesコマンドが機能しない


86

Ubuntu 10.1064ビットを実行しています。Android DebugBridgeバージョン1.0.26と一緒にia32-libsをインストールしています。

私の問題:

  1. adb devices>>> ???????????? 権限なし
  2. sudo adb devices > >>> sudo:adb:コマンドが見つかりません
  3. adb shell >>>エラー:デバイスの権限が不十分です

これらはすべて関連していると思います。これが関連情報です。

$ echo $PATH
/home/me/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/android-sdk-linux_x86/tools:/opt/android-sdk-linux_x86/platform-tools

$ which adb
/opt/android-sdk-linux_x86/platform-tools/adb

$ adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
????????????    no permissions

$ sudo adb devices
sudo: adb: command not found

$ adb shell
error: insufficient permissions for device

CM6.1を実行しているルート化されたMotoDroidとCM7ベースのROMを実行しているルート化されたG-Tabでも同じ結果が得られます。

次の関連記事を確認しました。

私は提案のほとんど(すべてではない)を試しましたが、問題を解決できませんでした。私が試しなかったことは不適切に思えた。さらにいくつかのヒントをいただければ幸いです。トラブルシューティングを続けます。

私が試しなかったことの1つは、/ etc / udev / rules.d /70-android.rulesを編集することでした。それが問題になる可能性がありますか?それが「sudo:adb:コマンドが見つかりません」の原因となる方法がわかりません。たぶん私の問題はすべて関連しているわけではありません。とにかく、この時点では、他の投稿で説明されているパスの問題やその他の一般的な問題があるとは思わないので、他の人からの入力が必要だと思います。

編集: EboMikeとRivieraKidのおかげで解決しました。これは実際には2つの異なる問題でした。

  1. 上記の項目#2(sudo:adb:コマンドが見つかりません)は、次のようにシンボリックリンクを作成することで解決されました。

    $ sudo ln -s /opt/android-sdk-linux_x86/platform-tools/adb /usr/local/sbin/adb
    

    これにより、EboMikeが提案したように、このソリューションを使用できるようになりました。それを行うことは私のMotoDroidに必要でした。(ただし、Viewsonic G-Tabletではadbをsudoとして実行する必要はありませんでした。)

  2. 私の他の2つの項目は、RivieraKidが提案したように(このリンクから)udevルールを実装することで解決されました。



アイテム#1は本当に私を助けてくれました。アイテム#2についてわからない
Francisco Quintero 2013

回答:


87

私が試しなかったことの1つは、/ etc / udev / rules.d /70-android.rulesを編集することでした。それが問題になる可能性がありますか?

あなたがそれをしなかった特別な理由はありますか?質問に答えるには-はい!udevルールは、Ubuntuにデバイスが何であるかを通知し、ユーザースペースツールがデバイスにアクセスできるようにするものです。

指示に正しく従わないと、adbを使用できません。

ただし、そのことを念頭に置いて、使用しているUbuntuのバージョンはわかりませんが、10.10で問題が発生しました。ルールファイルの内容を投稿する必要がある場合はお知らせください。

sudoを介してadbを実行することについて心配する必要はありません。必要ありません。MODE="0666"udevのルールからは、あなたが任意のユーザとしてデバイスにアクセスすることができます。


編集:

ルールをリロードすることを忘れないでください:

sudo udevadm control --reload-rules

編集#2:

@Jesse Glickが正しく指摘しているように、adbがすでにデーモンモードで実行されている場合は、これを機能させるために再起動する必要もあります。

sudo adb kill-server

ここではsudoを使用しました。これにより、adbが強制終了されることが保証され、サーバーを停止するための公式にサポートされている方法です。次回adbが使用されたときに自動的に再起動されますが、今回は正しい環境で再起動されます。


1
リンクありがとうございます。それらの指示が公式であるという事実をどのように見逃したのかわかりません。私は人々が回避策としてそれをしていると思いました。Viewsonic GTabletのベンダーコードを見つけてudevルールを追加すると、機能するようになりました。ありがとう。
MountainX

1
何らかの理由で、MotorolaDroidをadbデバイスに表示させることができません。これで、GTabとエミュレーターを表示できますが、Droidは表示できません。
MountainX

上記を参照。ルートとしてadbを実行すると、MotoDroidが表示されました。
MountainX

$ cat /etc/udev/rules.d/51-android.rules SUBSYSTEM == "usb"、SYSFS {idVendor} == "22b8"、MODE = "0666" SUBSYSTEM == "usb"、SYSFS {idVendor} = = "0955"、MODE = "0666"
MountainX

1
adb以前にデーモンが実行されていた場合は、デーモンを再起動する必要があります。
ジェシーグリック

22

rootとしてadbサーバーを再起動する必要があります。こちらをご覧ください


動作しませんでした。詳細: me@desktop:/opt/android-sdk-linux_x86/platform-tools$ sudo adb kill-server sudo: adb: command not found me@desktop:/opt/android-sdk-linux_x86/platform-tools$ adb kill-server me@desktop:/opt/android-sdk-linux_x86/platform-tools$ sudo adb start-server sudo: adb: command not found
MountainX

adbスーパーユーザーのパスにありません。入力which adbしてパスを見つけ、それをルートのパスに追加します。
EboMike 2011

あなたがこれを読むことができることを願っています。(コメントをフォーマットして改行を含める方法がわかりません。)adbはrootユーザーのパスにあります。元の投稿にwhichadbコマンドを貼り付けました。パスは/ opt / android-sdk-linux_x86 / platform-tools / adbです。$ sudo -s root @ desktop:#echo $ PATH / usr / local / sbin:/ usr / local / bin:/ usr / sbin:/ usr / bin:/ sbin:/ bin:/ usr / X11R6 / bin:/ opt / android-sdk-linux_x86 / tools:/ opt / android-sdk-linux_x86 / platform-tools
MountainX

1
これは奇妙なことです。rootとして実行するか、sudoで実行するかによって、「whichadb」から得られる結果は異なります。これが出力$ sudo which adb $
MountainX

ルートとしてadbを実行するときに、フルパスを指定します。
EboMike 2011

13

Gentoo / Funtoo Linuxシステムで、同様の問題が発生しています。

常に正しいデバイスの説明と不十分な権限を取得していません:

# sudo ./adb devices
List of devices attached 
????????????    no permissions
# ./adb usb
error: insufficient permissions for device

私にとっては、Googleからのハウツーを支援します。私の場合、udevルールを追加する必要がありました。

# cat /etc/udev/rules.d/51-android.rules 
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev" 

ファイルシステムの権利を設定します

# chmod a+r /etc/udev/rules.d/51-android.rules

スマートフォンを再接続すると、電話へのアクセスが成功し、EclipseのAndroid DeviceChooserにも表示されます。

# sudo ./adb devices
List of devices attached 
3XXXXXXXXXXXXXC device
# sudo ./adb usb
restarting in USB mode

また、plugdevグループに対するユーザーのメンバーシップを確認する必要があります。


3

私が読んだすべての答えはを示していSUBSYSTEM=="usb"ます。しかし、私の(おそらく古代の)udevはこれをに変更する必要がありましたDRIVER=="usb"。最後に、adbサーバーをroot以外のユーザーとして実行できるようになりました...そうです。

udevmonitor --envの出力を確認し、その後に次の出力を確認すると有益な場合があります。

udevinfo -a -p <DEVICE_PATH_AS_REPORTED_BY-udevmonitor>

マシンにudevmonitorudevinfoが存在しない場合はudevadm monitorudevadm info -a -p ...代わりにとを使用してください。
アッシュ

2

IntelliJIDEAのようなIDEに注意してください、独自のadb-serverを起動する傾向があることに。

サーバーを手動で強制終了し、sudoを使用して新しいインスタンスを実行しても、IDEにサーバー自体を強制終了させるまで、ここでは役に立ちません。


2

rootとしてadbサーバーを再起動するとうまくいきました。見る:

derek@zoe:~/Downloads$ adb sideload angler-ota-mtc20f-5a1e93e9.zip 
loading: 'angler-ota-mtc20f-5a1e93e9.zip'
error: insufficient permissions for device
derek@zoe:~/Downloads$ adb devices
List of devices attached
XXXXXXXXXXXXXXXX    no permissions

derek@zoe:~/Downloads$ adb kill-server
derek@zoe:~/Downloads$ sudo adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
derek@zoe:~/Downloads$ adb devices
List of devices attached
XXXXXXXXXXXXXXXX    sideload

私も:HTCSensationを搭載したLinuxMint Serena18.1。Noobアラート:私はこれで2日間悩んでいるので、ほぼ確実にスナフされています
Aethelbald


0

新鮮なCyanogenmod11を実行しているHTCOnem7。

電話はUSBに接続されており、データ接続をテザリングしています。

それから私はこの驚きを得る:

cinder@ultrabook:~/temp/htc_m7/2015-11-11$ adb shell
error: insufficient permissions for device

cinder@ultrabook:~/temp/htc_m7/2015-11-11$ adb devices
List of devices attached
????????????    no permissions

解決策:電話のテザリングをオフにします。

cinder@ultrabook:~/temp/htc_m7/2015-11-11$ adb devices
List of devices attached
HT36AW908858    device

-3

私はちょうど同じ状況になりました、ファクトリーデータリセットは私のためにうまくいきました。


確かにこれはコメントですか?
マシューテイラー

私の悪い。デバイスのリセットとデータのクリーニングはうまくいったと言いたかったのです。
Andrii Krokhin 2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.