web-dev-qa-db-ja.com

開発用にデバイスを設定します(????????????権限なし)

私はサムスンギャラクシーネクサス電話(アンドロイド4.0プラットフォーム)を使用しています。

私はUbuntuのLinux OS上でAndroidアプリを開発しています。私は自分のアプリケーションをSamsungの携帯電話デバイスで直接実行したいので、次の設定手順を実行しました。

  1. 私のプロジェクトのAndroidManifest.xmlファイルで、Android:debuggable="true"要素に<application>を追加しました

  2. デバイスでは、設定>セキュリティが有効不明なソース

  3. デバイス上で、設定>開発者向けオプション有効USBデバッグ

  4. 私のコンピューターで、以下の内容で/etc/udev/rules.d/51-Android.rulesファイルを作成しました。

    SUBSYSTEM=="usb", ATTR{idVendor}=="04E8", MODE="0666", GROUP="plugdev" 
    
  5. 私のコンピューターで、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

どうして?何が足りないの?

269
Leem.fin

私にとって効果的なのは、adbサーバーを再起動することです。 Linuxの場合:Sudo adb kill-server、次にSudo adb start-server。それからそれは箱から出してほぼすべてのデバイスを検出します。

435
WarrenFaith

私が最終的にここで答えを見つけるまで私には何も働きませんでした: 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など)を付ける必要があります。

338
grebulon

以下のコマンドを入力してください。

adb kill-serverSudo ./adb start-serveradb devices

問題は、rootとしてadbサーバーを実行していないことです。

76
iancrowther

私がMTPからカメラ(PTP)に接続を切り替えるとき、ついにすべて試しました、どれもうまくいきませんでした。

50
Sabeer Mohammed

この質問には、adbrootとして実行することを強要すること(これを唯一の解決策としても推奨される解決策としても宣伝してはいけません)から完全に無関係な問題の解決に至るまで、たくさんの悪い答えがあります。

これは、すべての adbfastboot のデバイスのパーミッションをまとめて管理するための、最も簡単で普遍的な方法です。

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インターフェースを持つすべてのデバイスに一致します。

28
Alex P.

Archlinuxではこれが時折起こることがあります。修正:

$ Sudo -s
# adb kill-server
# adb start-server
16

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経由で電話を接続すると、プロジェクトをコンパイルして実行したときに検出されるはずです。

8
jaga

私は同じ問題を抱えていた、解決策は仲間のようです:(ところで、あなたはあなたのデバイスを根絶する必要はありません。)

  1. スーパーユーザーに切り替えるには、「su」と入力します。
  2. あなたのパス/ adb kill-server。
  3. your-path/adb start-server.
  4. エラーが発生しない場合は、rootアカウントに「your-path/adb devices」というデバイスリストが表示されます。
  5. スーパーユーザーを終了します。
  6. 今すぐあなたのアカウントで "ADBデバイス"を実行することができます。

楽しい。

5
Jeffrey Yang

私は私のギャラクシー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を実行し、そしてすべてがうまくいった!

4
user3714693

私はこれが少し遅れるかもしれないことを知っていますが、ここに手動で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サービスを再起動します

今度はidVendoradb_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ドライバを追加する

私のために働きました。

4
dc-aoxn

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公式ドキュメント上 よりもさらに多く、そして私にとってはその問題を解決しました。

  1. http://developer.Android.com/guide/developing/device.html の指示に従ってください
  2. /etc/udev/rules.d/51-Android.rules内のベンダーID「0bb4」を「18d1」に置き換えます。または、SUBSYSTEM == "usb"、SYSFS {idVendor} == "18d1"、MODE = "0666"という行を追加します。
  3. コンピュータを再起動するか、単にudevサービスを再起動してください。
2
krishnendu

他の回答が示唆しているように、adbサーバーをrootとして実行しないでください。代わりにArch Linuxを使っているのなら以下のようにしてください。

  1. Pacmanと一緒にAndroid-udevパッケージをインストールしてください
  2. Udevルールを再読み込みします。

    # udevadm control --reload-rules
    
  3. adbusersグループに自分自身を追加してから、ログアウトしてログインします。

    # usermod -aG adbusers $LOGNAME
    

出典: https://wiki.archlinux.org/index.php/Android#Configuring_adb

1

抜かずに

提供されたすべての回答は、USBケーブルを取り外して再接続できることを前提としています。これが不可能な状況では(例えば、あなたが遠隔地にいる時)、提案されたudev規則が再プラグですることを基本的にするためにあなたは以下をすることができます:

lsusb

気になる機器を見つけてください。

Bus 003 Device 005: ID 18d1:4ee4 Google Inc. Nexus

バス番号が表示されていることを書き留めてから実行します。バス003の場合:

Sudo chmod a+w /dev/bus/usb/003/*

明らかにこれはあなたが望むよりも寛容であるかもしれませんが(これだけでなくもっと多くのデバイスが接続されているかもしれませんが)、あなたは考えを得ます。

1
Christian Fritz

私のデバイスは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
1
luciana

Udevを再起動したら、adbサーバーを終了し、adbサーバーを起動してAndroid SDKインストールパスに移動し、Sudoですべて実行します。その後、それは権限の問題を解決しますADBデバイスを実行します。

私の場合、ubuntu 12.04 LTSでは、HTC Incredible usbモードを充電からメディアに変更しなければならず、デバイスはadbの下に表示されました。もちろん、どちらの場合もデバッグはすでにオンになっています。

0
Alan

GROUP="plugdev"の代わりにあなたのユーザーのメイングループを使ってみてください。

0
Yury

してくださいSudoNAME _Sudo adb start-server)を使用することを提案する解決策に従わないでください。これはroot(管理者)としてadbを実行します、そしてそれはそのように実行することになっていません! これは悪い回避策です

ファイルを作成または変更すると、rootとして実行されているものすべてがシステム内で何でもできるようになります。その許可がrootのみが使用するように変更される可能性があります。またしないでください。

正しいことは、ユーザに許可を与えるようにシステムを設定することです。このガイドをチェックアウトする私はそれを正しくする方法について書きました。

0
Daniele Segato