12.04の「adb push」コマンドでの「権限が不十分です」エラー


57

APKファイルをタブレットにプッシュしようとすると、このエラーが発生しました。手伝ってください。

adb server is out of date.  killing... 
* daemon started successfully * 
error: insufficient permissions for device.

助けてくれてありがとう。


1
Androidの公式開発者向けドキュメントを参照することでサポートされているuser84207の回答は、Anwar Shahが受け入れている回答よりもはるかに優れています。可能な限りルートとしてデーモンを実行しないでください。adbをルートとして実行すると、コンピューターはより多くの攻撃に対して脆弱になります。
nealmcb

回答:


20

Ubuntuで時々この同じエラーを見てきました。この問題を回避するには、sudoコマンドを使用してadbを実行します。たとえば、app.apksdcardをプッシュする場合、コマンドは次のようになります

sudo adb push app.apk /mnt/sdcard

また、アプリケーション設定(GingerBread)または開発セクション(IceCream Sandwich以上)で「USBデバッグ」モードを選択したことを確認してください。adbがすでに実行されている場合、まずコマンドでそれを強制終了する必要がありますsudo adb kill-server

これが役立つことを願っています。


私はそれを手に入れましたが、まだこの方法を試してみます...助けてくれてありがとう
ネハ・シャラド・ウマギギ

5
「わかった」...解決策を見つけたら共有してください。そうすれば、他の人が利益を得られるようになります(質問したときに自分に利益をもたらしたいと思ったように)。たとえば、私は現在この問題を抱えていますが、あなたが説明したのとまったく同じ問題であっても、他の場所を探すことを余儀なくされています。
エルジョアルゴ

2
adbのバグがコンピューター全体を引き継ぐ可能性があるため、この答えは危険です。user84207によるudevルールを使用した答えは、公式のAndroid開発者ドキュメントへの参照でサポートされており、この問題を回避します。
nealmcb

これは、問題に対する最も簡単で簡単な、少なくとも機能する回避策です。
アンワー

注:non-sudo sudoadbは異なるインストール済みバージョンが検出されるため、これはうまくいきました。これが機能するのは、adbそれ自体がより多くの特権を必要とするからではありません。
ケビンクーパー

61

私はこの同じ問題に遭遇しました。ここに示されているようにudevルールを追加すると、トリックが実行されました。

rootとしてログインし、ファイル/etc/udev/rules.d/51-android.rulesを作成し、次のような行を追加して、plugdevグループ内のすべてのユーザーに権限を付与します。

SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev"

この例では、ベンダーIDはHTCです。デバイスのベンダーIDを使用する必要があります。ベンダーIDは、次のlsusbような行を実行して検索することで取得できます。

Bus 002 Device 009: ID 2a47:9e18

この例では、あなたのベンダーIDは以下のようになり2a47ますが、交換する必要がありますので、0bb42a47。したがって、正しい行は次のようになります。

SUBSYSTEM=="usb", ATTR{idVendor}=="2a47", MODE="0666", GROUP="plugdev"

次に、ファイルに読み取り権限を割り当て、udevをリロードし、adbデーモンをリロードします。

sudo chmod a+r /etc/udev/rules.d/51-android.rules
sudo udevadm control --reload-rules
adb kill-server
adb start-server

デバイスを切断して、USBポートに再接続する必要がある場合があります。


9
USBベンダーIDは、lsusbコマンドで取得できます。コロンで区切られたペアの最初の部分です。たとえば、18d1:4e22は、ベンダーIDが18d1であることを意味します。
ピーターランバーグ

新しいルールファイルを追加した後、udevを「トリガー」する必要がある場合があります(わかりませんが)。askubuntu.com/questions/82470/…を「トリガー」する方法を次に示します。
user29020

2
および/またはデバイスを切断して再接続する必要がありますか?しかし、この答えは私にとってはうまくいき、adbをルートとして実行するよりもはるかに優れています。Ubuntuユーザーもplugdevグループの一部である必要があります。実行idして調べてください。
nealmcb

2
あなたはデバイスの多くで動作するようにしている場合、このレポは非常に便利ですgithub.com/M0Rf30/android-udev-rules
zamber


22

StackOverflowに関するJorch914の回答により、この問題は解決されました。

OKだから私はついに問題を見つけました、明らかにこのデバイスではカメラとして接続するように設定する必要があります(USBデバッグがすでに有効になった後でも)

ここに画像の説明を入力してください

また、このリンクは設定プロセスについて説明しています


1
はい、これで終わりです!Android Nでは「USB構成を選択」する必要がありましたが、これはデフォルトで「充電中」に設定されていました。
ダンダスカレスク

1
何らかの理由で私は常にピクセルをMacに接続して作業を開始できましたが、CentOS開発ワークステーションに移動したとき、デバッグ許可のプロンプトを表示するためにこれを行う必要がありました。ありがとう
-bsautner

2
私のために働いた。トリックは、それを「充電」から他の何かに変更することです。
ビム


10

私はちょうど同じ問題を実行しましたが、ここに私がそれをどのように通過できたかがあります:

  • :次のコマンドを発行して、既存のadbサーバーを殺さなければなりませんadb kill-server(それは間違っているかもしれないが、私はとsudoをせずに、それを発行しました
  • 以下を発行して、適切な権限でadbサーバーを起動します。 sudo adb start-server
  • 出来上がり。あなたは必要なコマンドを発行することを知っているかもしれません

知っているかどうかはわかりませんが、adbを含むパッケージがあります。これは、古いバージョンのadbへの参照を取得していることに気付いたためです。コマンドラインで次のコマンドを発行してインストールできます。sudo apt-get install android-tools-adb

これがお役に立てば幸いです。


プラットフォームツールのADBはより新しい可能性があります。一方、これらのツールは個別のダウンロードとしても入手可能です。
マーティンツァイトラー

2

数分前に予想通りに動作していたinsufficient permissions for deviceにもかかわらず、今日、エラーに遭遇しましたadb。今私は得る:

$ adb devices
List of devices attached 
????????????    no permissions

$ adb shell
error: insufficient permissions for device

エラーが発生する少し前に、無効Media device (MTP)にする必要がありましたMTP。ただし、USBデバッグ、または少なくとも一部のadbコマンドでは、Media device (MTP)有効にする必要があるようです。

Media device (MTP)Android 4.4で有効にするには、次にアクセスしてください。

Settings
Storage
The "..." menu (in the upper right corner)
USB computer connection
Media device (MTP)

MTPが無効の場合lsusb、次のように表示されます。

Bus 002 Device 071: ID [idVendor1]:[idProduct1] Google Inc.

有効MTPにした後、lsusbは次を表示します。

Bus 002 Device 072: ID [idVendor2]:[idProduct2] [idVendor string]

idVendorとidProductは、MTP有効か無効かに応じて変更されます。

私はAndroidの専門家ではないため、上記の動作は特定のモデルの電話に固有のものである可能性があります。


0

別の理由による可能性があります。デバイスにapkをインストールしようとすると、このエラーが発生します。

$ adb install platforms/android/build/outputs/apk/android-armv7-release.apk 
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
error: insufficient permissions for device
- waiting for device -

デバイスが正しいモードで準備ができていなかったために発生しました。デバイスは、USBを介して4G接続を共有していました。

そのように知ることができます:

$ adb devices -l
List of devices attached
* daemon not running. starting it now on port 5037 *
* daemon started successfully *

33332EF19F3D00EC       no permissions usb:1-1.2

そのため、電話での接続の共有を無効にして、再起動するだけで十分でした。

一般adb deviceに、デバイスにファイルをプッシュする前に、コマンドで次の結果が得られることを確認してください

$ adb devices -l
List of devices attached
33332EF19F3D00EC       device usb:1-1.2

これらの場合、adbサーバーを強制終了または再起動する必要はありません。

USB経由のデータ転送用にデバイスをマウントした場合、おそらく同じ状況になります。


0

私は同じ問題を抱えていて、その不十分な許可を受け取りました。私がしたことは、ラップトップのUSB権限を無効にすることでした。その後、USBデバッグを停止および開始しました。それをラップトップに差し戻し、USBデバッグ権限を付与しました。


1
このプロセスの詳細を教えてください。ステップバイステップが理想的であるため、OPはあなたの例に従うことができます。:)
ThatGuy

0

私は同じ問題に直面していますが、your_android_sdk_pathのパスを環境変数に追加することでこれを解決しました

sudo export $PATH:/your_android_sdk_path/platform-tools/adb

これらのファイル~/.bashrcfileを編集してアカウントまたはシステム全体にこれを追加する方法 、~/.profile または /etc/profile, /etc/bash.bashrc, or /etc/environmentシステム全体のアクセスに追加する場合は、その希望があります。

そして、そのリンクをビンに作成します

sudo ln -s /your_android_sdk_path/platform-tools/adb /bin/adb

adbデバイスまたはコマンドを使用している場合は、まず次のようにサーバーを強制終了します

adb kill-server

その後、サーバーを起動します

adb start-server
adb devices

これで、問題なくデバイスが適切にリストされていることがわかります



0

さらに別の可能性:USBテザリングはadbと競合します。それを無効にすると、問題が解決します。

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