私はサムスンギャラクシーネクサス電話(アンドロイド4.0プラットフォーム)を使用しています。
私はUbuntuのLinux OS上でAndroidアプリを開発しています。私は自分のアプリケーションをSamsungの携帯電話デバイスで直接実行したいので、次の設定手順を実行しました。
私のプロジェクトのAndroidManifest.xml
ファイルで、Android:debuggable="true"
要素に<application>
を追加しました
デバイスでは、設定>セキュリティが有効不明なソース
デバイス上で、設定>開発者向けオプション有効USBデバッグ
私のコンピューターで、以下の内容で/etc/udev/rules.d/51-Android.rules
ファイルを作成しました。
SUBSYSTEM=="usb", ATTR{idVendor}=="04E8", MODE="0666", GROUP="plugdev"
私のコンピューターで、chmod a+r /etc/udev/rules.d/51-Android.rules
コマンドを実行します。
それから私のコンピューターでターミナルを開いてadb devices
コマンドを実行しました。
List of devices attached
???????????? no permissions
私のデバイスは表示されず???????????? no permissions
しか表示されなかったので、次のコマンドを実行します。
adb kill-server
adb start-server
adb devices
しかし、私はまだ持っています:
List of devices attached
???????????? no permissions
どうして?何が足りないの?
私にとって効果的なのは、adbサーバーを再起動することです。 Linuxの場合:Sudo adb kill-server
、次にSudo adb start-server
。それからそれは箱から出してほぼすべてのデバイスを検出します。
私が最終的にここで答えを見つけるまで私には何も働きませんでした: http://ptspts.blogspot.co.il/2011/10/how-to-fix-adb-no-permissions-error -on.html
将来消えてしまうので、ここにコピーします。
次の内容の/tmp/Android.rulesという名前のファイルを作成します(16進のベンダ番号はベンダリストページから取得しました)。
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0e79", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0502", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0b05", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="413c", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0489", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="091e", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="12d1", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="24e3", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2116", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0482", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="17ef", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1004", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="22b8", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0409", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2080", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0955", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2257", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="10a9", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1d4d", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0471", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04da", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="05c6", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1f53", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04dd", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fce", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0930", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="19d2", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1bbb", MODE="0666"
以下のコマンドを実行してください。
Sudo cp /tmp/Android.rules /etc/udev/rules.d/51-Android.rules
Sudo chmod 644 /etc/udev/rules.d/51-Android.rules
Sudo chown root. /etc/udev/rules.d/51-Android.rules
Sudo service udev restart
Sudo killall adb
電話機とコンピュータの間のUSBケーブルを外します。
電話を再接続してください。
adb devices
を実行して、電話にアクセスする権限があることを確認します。
, USER="$LOGINNAME"
ファイルで, MODE="0666"
の代わりに.rules
を使用することが可能であることに注意してください。あなたのログイン名の代わりに$LOGINNAME
を、すなわちid -nu
が出力するものに置き換えてください。
場合によっては、udev rulesファイルに末尾近くにソートされる名前(z51-Android.rules
など)を付ける必要があります。
以下のコマンドを入力してください。
adb kill-server
Sudo ./adb start-server
adb devices
問題は、rootとしてadbサーバーを実行していないことです。
私がMTPからカメラ(PTP)に接続を切り替えるとき、ついにすべて試しました、どれもうまくいきませんでした。
この質問には、adb
をroot
として実行することを強要すること(これを唯一の解決策としても推奨される解決策としても宣伝してはいけません)から完全に無関係な問題の解決に至るまで、たくさんの悪い答えがあります。
これは、すべての adb
と fastboot
のデバイスのパーミッションをまとめて管理するための、最も簡単で普遍的な方法です。
echo 'ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:ff420?:*", MODE="0666"' | Sudo tee /etc/udev/rules.d/99-Android.rules
Sudo udevadm control --reload-rules
Sudo udevadm trigger --verbose --action=add --subsystem-match=usb
あるいは、私がこれに投稿した少し長いバージョン の要旨 を使用することもできます。
OPが彼の質問で間違っていた特定の事に関しては - それは.rules
ファイルを編集した後にudev
ルールを再ロードしていませんでした。
またOPは、自分の携帯電話に持っているAndroidビルド(別名ROM)を知らせていませんでした。 idVendor
の値はソフトウェアで設定されるため、ROMによって異なります。そのため、彼の元々のルールで使用されていた04E8
の値は、SamsungのストックROMを搭載したデバイスに対してのみ有効でした。しかし、これはこのudev
ルールの問題ではありません。VendorIDに関係なく、adb
またはfastboot
インターフェースを持つすべてのデバイスに一致します。
Archlinuxではこれが時折起こることがあります。修正:
$ Sudo -s
# adb kill-server
# adb start-server
Debianを使っている人のために、ファイル "/etc/udev/rules.d/51-Android.rules"を作成するためにUbuntuの下でデバイスを設定するためのガイドは機能しません。私はここ からの指示に従った 。参照用にここに同じものを置きます。
このファイルをスーパーユーザーとして編集します。
Sudo nano /lib/udev/rules.d/91-permissions.rules
これと同じようなテキストを見つけなさい
# usbfs-like devices
SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, \ MODE=”0664″
次に、以下のようにモードを0666に変更します。
# usbfs-like devices
SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, \ MODE=”0666″
これでadbは動作しますが、認識できるようにデバイスを設定する必要があります。このファイルをスーパーユーザーとして作成する必要があります。
Sudo nano /lib/udev/rules.d/99-Android.rules
そして入る
SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, ATTRS{idVendor}==”0bb4″, MODE=”0666″
上記の行はHTC用です。完全なリストは@ grebulonの投稿に従ってください。
ファイルを保存して、スーパーユーザーとしてudevを再起動します。
Sudo /etc/init.d/udev restart
USB経由で電話を接続すると、プロジェクトをコンパイルして実行したときに検出されるはずです。
私は同じ問題を抱えていた、解決策は仲間のようです:(ところで、あなたはあなたのデバイスを根絶する必要はありません。)
楽しい。
私は私のギャラクシーS3と同じ問題を抱えていました。私の問題はidVendor
の値04E8
が正しいものではないということでした。正しいものを見つけるには、スマートフォンをコンピュータに接続して、ターミナルでlsusb
を実行します。これはあなたのスマートフォンを次のように一覧表示します。
Bus 002 Device 010: ID 18d1:d002 Google Inc.
したがって、正しいidVendor
値は18d1
です。 /etc/udev/rules.d/51-Android.rules
の行は次のようになります。
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"
それから私はSudo udevadm control --reload-rules
を実行し、そしてすべてがうまくいった!
私はこれが少し遅れるかもしれないことを知っていますが、ここに手動でAndroid ADB USB Driverを追加する方法についての非常に良い記事があります。 Ubuntu 14.04 LTSにAndroid ADB USBドライバを手動で追加する
リンクコンテンツを追加するように編集されました
注:AndroidデバイスをUSBデバッグモードで接続していることを確認してください。
端末を開き(CTRL + ALT + T
)、次のコマンドを入力してください:lsusb
今、あなたはこれに似たような答えを得るかもしれません:Bus 002 Device 013: ID 283b:1024
注:このBus 002 Device 008: ID 283b:1024
を参照して{idVendor}==”283b” {idProduct}==”1024″
次のコマンドを入力してください。Sudo gedit /etc/udev/rules.d/51-Android.rules
これは、Androidのルールファイル(51-Android.rules
)を作成するか、指定された場所にある既存のファイルを開く(/etc/udev/rules.d
)
このファイルに新しい行を追加します。SUBSYSTEM==”usb”, ATTRS{idVendor}==”283b”, ATTRS{idProduct}==”1024″, MODE=”0666″
注デバイス値を使用してidVendor
およびidProduct
の値を編集します。保存して閉じます。
次のコマンドを入力してください。Sudo chmod a+rx /etc/udev/rules.d/51-Android.rules
- 読み取り/実行許可を与えるSudo service udev restart
- udev
サービスを再起動します
今度はidVendor
をadb_usb.ini
に追加する必要があります。以下のコマンドを入力してください。cd ~/.Android
gedit adb_usb.ini
次の値を追加します:0x283b
これは0x(idVendor
value)に他なりません。だから値をに置き換えます。デバイス値を考慮してファイルを保存して閉じます。
次のコマンドを入力してください。Sudo service udev restart
Androidデバイスを取り外して、もう一度接続します。
次のコマンドを入力してください。adb kill-server
adb devices
そこに行きます!あなたのデバイスはリストされていなければなりません。
コピー元手動でUbuntu 14.04 LTSにAndroid ADB USBドライバを追加する
私のために働きました。
M0Rf30/Android-udev-rules
GitHubコミュニティによって管理されているudev-rulesを使用してください
https://github.com/M0Rf30/Android-udev-rules/blob/master/51-Android.rules
これは私がこれまでに見た中で最も完全なudev-rulesリストで、現在推奨されているSudo apt-get install Android-tools-adb
公式ドキュメント上 よりもさらに多く、そして私にとってはその問題を解決しました。
他の回答が示唆しているように、adb
サーバーをrootとして実行しないでください。代わりにArch Linuxを使っているのなら以下のようにしてください。
Android-udev
パッケージをインストールしてくださいUdevルールを再読み込みします。
# udevadm control --reload-rules
adbusers
グループに自分自身を追加してから、ログアウトしてログインします。
# usermod -aG adbusers $LOGNAME
出典: https://wiki.archlinux.org/index.php/Android#Configuring_adb
提供されたすべての回答は、USBケーブルを取り外して再接続できることを前提としています。これが不可能な状況では(例えば、あなたが遠隔地にいる時)、提案されたudev規則が再プラグですることを基本的にするためにあなたは以下をすることができます:
lsusb
気になる機器を見つけてください。
Bus 003 Device 005: ID 18d1:4ee4 Google Inc. Nexus
バス番号が表示されていることを書き留めてから実行します。バス003
の場合:
Sudo chmod a+w /dev/bus/usb/003/*
明らかにこれはあなたが望むよりも寛容であるかもしれませんが(これだけでなくもっと多くのデバイスが接続されているかもしれませんが)、あなたは考えを得ます。
私のデバイスはPOSITIVOで、私の運用システムはUbuntu 14.04 LTS
です。だから、私の問題は変数名にありました
/etc/udev/rules.d/51-Android.rulesファイルを作成してSUBSYSTEM=="usb", SYSFS{idVendor}=="1662", MODE="0666"
を置きます。
デバイスを切断して実行します。
$ Sudo udevadm control --reload-rules
$ Sudo service udev restart
この後私は再び開発者モードでAndroidデバイスを接続して
$ adb devices
List of devices attached
1A883XB1K device
Udevを再起動したら、adbサーバーを終了し、adbサーバーを起動してAndroid SDKインストールパスに移動し、Sudoですべて実行します。その後、それは権限の問題を解決しますADBデバイスを実行します。
私の場合、ubuntu 12.04 LTSでは、HTC Incredible usbモードを充電からメディアに変更しなければならず、デバイスはadbの下に表示されました。もちろん、どちらの場合もデバッグはすでにオンになっています。
GROUP="plugdev"
の代わりにあなたのユーザーのメイングループを使ってみてください。
してくださいSudo
NAME _(Sudo adb start-server
)を使用することを提案する解決策に従わないでください。これはroot(管理者)としてadbを実行します、そしてそれはそのように実行することになっていません! これは悪い回避策です!
ファイルを作成または変更すると、rootとして実行されているものすべてがシステム内で何でもできるようになります。その許可がrootのみが使用するように変更される可能性があります。またしないでください。
正しいことは、ユーザに許可を与えるようにシステムを設定することです。このガイドをチェックアウトする私はそれを正しくする方法について書きました。