web-dev-qa-db-ja.com

openSUSE 13.2で実行されているAndroid St​​udio Workspaceのデバイスの権限が不十分です

Quarx によって作成されたCyanogenmod v11カスタムROM(ナイトリービルド)を実行するルート化されたMotorola Defy +があります。 Android St​​udio Workspace、(ASW)v.1.1.0を使用して、このデバイスでデバッグしようとすると、

????????????[null]

Choose Deviceウィンドウにリストされ、Logcatウィンドウが表示されます

insufficient permissions for device

このデバイスとROMをデバッグ目的で使用したいと思います。

取得したコマンドラインからlsusbと入力すると、

Bus 002 Device 002: ID 22b8:431d Motorola PCS

これは、Motorolaユニットの正しいデバイスIDです。これらのファイルに正しいMotorola IDを使用して、51-Android.rulesおよび71-Android.rulesを/etc/udev/rules.d/にインストールしました。

また、デバイスで開発者オプションからSBデバッグ権限を取り消すを試しましたが、うまくいきませんでした。

別のオプションがあるかもしれないと期待して、ルートとしてASWを実行しようとしませんでした。ある?

更新:ADBにアクセスしてアクセスできました

uvachem-gsmith2:/home/greg/Android/Sdk/platform-tools # ./adb

その後、killサーバーを実行し、rootユーザーに対してSUを実行し、サーバーを再起動しました。次に、Android St​​udioからデバイスに接続しようとしました。 PCからRSAキーを受け入れることについてデバイスでメッセージを受け取り、「はい」と言ってから、デバイスにアプリを展開できました。元の質問に戻りますが、ルートとしてログインせずにこのデバイスにアクセスする別の方法はありますか?これを防止している電話ファイルシステムにアクセス許可の問題があるかのようです...

Update#2ここでの中心的な問題は許可の問題でした。 ADBをrootとして実行するとrooted Androidデバイスへのアクセスが許可されますが、このデバイスのudevファイルのアクセス許可を変更することをお勧めします... 664から666にリセットすると、 (以下の回答を参照)。これにより、PCはデバイス上のファイルシステムにアクセスできます。

52
portsample

この行の許可を/etc/udev/rules.d/51-Android.rulesから変更し、

#Motorola 
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0664", GROUP="plugdev"

に、

#Motorola 
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0666", GROUP="plugdev"

ルートとしてadbを実行する必要がない方法で、この問題を解決します。

24
portsample

Android 5.1を実行しているNexus 4でLinuxマシンを使用しているときにこれがありました

修正は、「USB経由のデバッグ」と「MTPとして接続」の両方を有効にすることでした。 OSXで同じデバイスとAndroid St​​udioおよびadbを使用する場合は逆ですが、Android St​​udioがハンドセットを認識できるようにするには、「MTPとして接続」を無効にする必要があります。

150
cro

私は私のために働いた簡単な答えを見つけました:

adb kill-server
Sudo adb start-server
Sudo adb devices

その後、デバイスが見つかります。お役に立てれば。

参照: http://itsfoss.com/fix-error-insufficient-permissions-device/

65
user4791518

それは簡単です。 USBモードをファイル転送モードに変更するだけで機能します。

25
Saroj Dahal

MTPは使用できなくなりました。 Android 8の[ファイルの転送]オプションが機能しませんでした。

「写真PTPの転送」が機能し、Studioがデバイス名を表示しました。

私のステップ

  1. 開発者向けオプションを開きます。
  2. USBデバッグを有効にします。
  3. Sudo usermod -aG plugdev $ LOGNAME
  4. uSB接続をPTPに変更する
12
kelalaka

私の電話でSymphony W75、オプションでSBコンピューター接続->選択メディアデバイス(MTP)として接続は問題を解決しました。

11
ranit

以前に正常に接続していたデバイス(Nvidia Shield)を更新したため、PCのセットアップが既に正しいことがわかりました。開発者の設定は、Android 7.0で新しいレイアウトになっているようです。

[設定]> [設定]> [開発者オプション]> [ネットワーク]> [USB構成の選択]にあります。

ここでは、PTPを選択する必要があり、すべてが再び正常に機能します。

Selecting USB configuration mode

7
Habib

長い間、私はPrestigio PMP5570Cタブレットで同じ問題を抱えていました。

あなたがしなければならないことは、あなたのタブレットであなたがコンピュータに/からデータをコピーしたいことを確認することです(私が忘れていたもの)、@ portsampleが書いた2行を追加します。

デバイス入力のidVendorを見つけることができます

lsusb

uBUNTU 12.04では、次のようになります:

バス001デバイス011:ID 2207:0010、

2207はベンダーIDです。質問と回答を要約します...

6
greg93

この手順は私のために問題を解決します:

- On the Android device, drag the top menu and select "USB for file transfer"
- Press "Run" again

なんて...! :)注:One + 5tのAndroid 8.1で見ました...

上記のすべてを行っても、Androidデバイスで何かを作成する必要があります。さらに、devオプションメニュー(usbデバッグ)に移動します(「承認のキャンセル」などをリセットすることをheしないでください)このように(私はフランス語版です;))

一部の人々が私と同じ問題に遭遇した場合、おそらくあなたにとっても役立つかもしれません:あなたの電話のデバイスを承認することを忘れないでください(そうしない場合は、AndroidデバイスでUSB接続するたびに常に選択ボックス)。横に、あなたの携帯電話上の古い承認されたデバイスを抑制し、Androidデバイス上のあなたのPCを明確に承認するための適切なパラメーターで開始することができます

Androidデバイスを接続すると、ポップアップまたは通知がMACアドレスまたはデバイスと同等の認証を要求します。LinuxPCとAndroid間の接続を認証する場合は認証します_ 端末。

USBケーブルの接続を使用するときは、Androidデバイスで自動更新を取得する必要があります(常に受け入れないが、デバイスにこのボックスが初めて表示される場合)あなたがそれをしないと、すべての権利が良い場合でも、adbデバイスは不正と表示されます(666、UDEVなど)

注:貴重なご協力ありがとうございます。最後に、私の英語がすみません

1
Aymeric Do

このエラーのスクリプトを作成しました。私にとっては、Fedora 28で正常に動作しますが、多くのLinuxディストリビューションで動作するはずです。自己拡張スクリプトの内容を含むファイルを作成するだけです。 usbDebbugingAndroidStudio.shという名前を付けました
実行許可を与える:chmod +x usbDebbugingAndroidStudio.sh

そしてそれを実行します:Sudo ./usbDebbugingAndroidStudio.sh

その後、コマンドlsusbによって表示されるリストを確認し、デバイスのIDを紹介します。例:私の出力はBus 006 Device 002: ID 05c6:9091 Qualcomm, Inc.だったので、05c6と入力してEnterキーを押します。

スクリプト:

#!/usr/bin/env bash


#This script configure Android Debug Bridge permissions to solve the following
#error: com.Android.ddmlib.AdbCommandRejectedException: insufficient permissions for device
#This error is produced when you try to install an APK from Android Studio in your device.
#You can check the vendorId here:
#https://developer.Android.com/studio/run/device#setting-up
#If your device's brand isn't listed check the info displayed by the command lsusb

lsusb
#My output was:
#Bus 006 Device 002: ID 05c6:9091 Qualcomm, Inc.
#The id for this line is 05c6
echo -n "Enter the id of your mobile device: "
read usbProviderId
cd /etc/udev/rules.d/
Sudo touch 51-Android.rules
(
Sudo cat << _EOF_
SUBSYSTEM=="usb", ATTR{idVendor}=="$usbProviderId", MODE="0666", GROUP="plugdev"
_EOF_
) | Sudo tee 51-Android.rules

#Give read and write permissions to the file
Sudo chmod a+r /etc/udev/rules.d/51-Android.rules

#Kill the Android Debug Bridge server to restart it
cd $HOME/Android/Sdk/platform-tools
Sudo ./adb kill-server

#If this still doesn't work unplug the usb cable and connect again.
#And repeat the last step Kill the ADB server.
0
jesusjbr

受け入れられた答えがうまくいかなかった場合は、単純な手順に従ってください:Androidスタジオターミナルを開きます:-

adb kill-server

adb start-server

それは私のために働いた。

0
Ravish Sharma

私や他の多くの人にとって、問題はマシン上のデバイスへのアクセス権に関係しています。これはAndroidのドキュメントによく文書化されているので、最善の解決策は here

Debianベースのシステムでは、ベンダーが特定のリストに存在しない場合、lsusbまたはdmesgを実行してベンダーIDを取得できます。

0
peter

私の状況では:

cd /etc/udev/rules.d/
Sudo chmod a+r ./*.rules  #the name of your rules files.

その後、このエラーなしでadbを使用できます。

0
李岩波

エラーメッセージが言ったように、それはパーミッションが不十分な問題です。私の経験では、これはLinuxマシンでのみ発生し、MacOSとWindowsでうまく機能します。ルート権限でAndroid St​​udioを起動すると、この問題を回避できます。

$Sudo /your_Android_studio_path/bin/studio.sh
0
richa

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

Sudo export $PATH:/your_Android_sdk_path/platform-tools/adb

これらのファイル~/.bashrcファイルまたはシステム全体のアクセスに追加する場合は~/.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