Quarx によって作成されたCyanogenmod v11カスタムROM(ナイトリービルド)を実行するルート化されたMotorola Defy +があります。 Android Studio 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 Studioからデバイスに接続しようとしました。 PCからRSAキーを受け入れることについてデバイスでメッセージを受け取り、「はい」と言ってから、デバイスにアプリを展開できました。元の質問に戻りますが、ルートとしてログインせずにこのデバイスにアクセスする別の方法はありますか?これを防止している電話ファイルシステムにアクセス許可の問題があるかのようです...
Update#2ここでの中心的な問題は許可の問題でした。 ADBをrootとして実行するとrooted Androidデバイスへのアクセスが許可されますが、このデバイスのudevファイルのアクセス許可を変更することをお勧めします... 664から666にリセットすると、 (以下の回答を参照)。これにより、PCはデバイス上のファイルシステムにアクセスできます。
この行の許可を/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を実行する必要がない方法で、この問題を解決します。
Android 5.1を実行しているNexus 4でLinuxマシンを使用しているときにこれがありました
修正は、「USB経由のデバッグ」と「MTPとして接続」の両方を有効にすることでした。 OSXで同じデバイスとAndroid Studioおよびadbを使用する場合は逆ですが、Android Studioがハンドセットを認識できるようにするには、「MTPとして接続」を無効にする必要があります。
私は私のために働いた簡単な答えを見つけました:
adb kill-server
Sudo adb start-server
Sudo adb devices
その後、デバイスが見つかります。お役に立てれば。
参照: http://itsfoss.com/fix-error-insufficient-permissions-device/
それは簡単です。 USBモードをファイル転送モードに変更するだけで機能します。
MTPは使用できなくなりました。 Android 8の[ファイルの転送]オプションが機能しませんでした。
「写真PTPの転送」が機能し、Studioがデバイス名を表示しました。
私のステップ
私の電話でSymphony W75、オプションでSBコンピューター接続->選択メディアデバイス(MTP)として接続は問題を解決しました。
長い間、私はPrestigio PMP5570Cタブレットで同じ問題を抱えていました。
あなたがしなければならないことは、あなたのタブレットであなたがコンピュータに/からデータをコピーしたいことを確認することです(私が忘れていたもの)、@ portsampleが書いた2行を追加します。
デバイス入力のidVendorを見つけることができます
lsusb
uBUNTU 12.04では、次のようになります:
バス001デバイス011:ID 2207:0010、
2207はベンダーIDです。質問と回答を要約します...
この手順は私のために問題を解決します:
- 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など)
注:貴重なご協力ありがとうございます。最後に、私の英語がすみません
このエラーのスクリプトを作成しました。私にとっては、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.
受け入れられた答えがうまくいかなかった場合は、単純な手順に従ってください:Androidスタジオターミナルを開きます:-
adb kill-server
adb start-server
それは私のために働いた。
私や他の多くの人にとって、問題はマシン上のデバイスへのアクセス権に関係しています。これはAndroidのドキュメントによく文書化されているので、最善の解決策は here
Debianベースのシステムでは、ベンダーが特定のリストに存在しない場合、lsusb
またはdmesg
を実行してベンダーIDを取得できます。
私の状況では:
cd /etc/udev/rules.d/
Sudo chmod a+r ./*.rules #the name of your rules files.
その後、このエラーなしでadbを使用できます。
エラーメッセージが言ったように、それはパーミッションが不十分な問題です。私の経験では、これはLinuxマシンでのみ発生し、MacOSとWindowsでうまく機能します。ルート権限でAndroid Studioを起動すると、この問題を回避できます。
$Sudo /your_Android_studio_path/bin/studio.sh
私は同じ問題に直面しており、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
これで、問題なくデバイスが適切にリストされていることがわかります