開発用にデバイスをセットアップする(????????????権限なし)


282

Samsungギャラクシーネクサス電話(Android 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

どうして?何が欠けていますか?


adb kill-serverを実行した後、デーモンが実行されていないというメッセージが表示されました。今すぐポート5037で開始* *デーモンは正​​常に開始しました* ---このメッセージが表示されるまで試さない場合
Andro Selva

2
ユーザーがplugdevグループに属していることを確認してください。
Sergey Glotov

2
実行=> sudo adb start-server(ルートアクセスを使用してadbを実行)
混乱

ついに私はこのリンクgithub.com/snowdream/51-android
Abdulrahman Gamal

回答:


451

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


1
rootを使用して<android-SDK> / platform-tool /の下のコマンド「adb devices」を実行しましたが、「コマンド 'adb'が見つかりません」と表示されました。なぜですか?
Leem.fin

8
adbが+ xであることを確認してください-rwxrwxr-x 1 martin martin 156K 2011-11-09 15:40 adb。ディレクトリに直接移動して、「sudo ./adb devices」から開始してみてください。sudoなしで実行できる場合は、sudoで実行できるはずです...問題が何であるかは
わかり

8
udev権限が正しく設定されている場合は、ルートとしてadbを実行する必要はありません。以下のgrebulonsの回答を参照するか、Androidのドキュメントを参照してください:developer.android.com/tools/device.html
gnac

4
重要な提案の1つは、USBケーブルを切断することです。そのため、adbをリセットし、ケーブルを接続すると、ケーブルが機能します。私の状況では、ケーブルを接続して手順を実行しましたが、うまくいきません。
androidevil 2013年

6
そして、コマンドは次のとおりです。adb kill-server sudo adb start-serverチェックする:adb devices
Asim

350

私がここで最終的に答えを見つけるまで、何もうまくいきませんでした: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ルールファイルにのように末尾に近い名前を付ける必要がありますz51-android.rules


7
注:Ubuntu Preciseの場合、ファイル名は70-android.rulesこの投稿のとおりですesausilva.com/2010/05/13/…。またudev、すべてのadbプロセスを再起動して強制終了する必要があることをお知らせください。魅力のように働いた!
Eduard Luca


4
これはうまくいきましたが、別の回答で@lucianaが指摘しているようsudo udevadm control --reload-rulesに、サーバーを再起動するだけでは不十分な場合は、呼び出してudevルールを更新する必要がある場合があります。
serjlee 2014年

4
Linuxではsudo-ing adbは必須ではないので、これは正解としてマークする必要があります
Zac

1
これがここでの唯一の正解です。それをありがとう!また、lsusbの出力を見て、必要なベンダーが含まれていることを確認できます。最も奇妙なのは、Android 7.1.2にアップグレードした後(adbをrootとして実行した場合でも)、デバイスの1つ(OnePlus One)のみが突然動作を停止し、上記のようにudevルールを追加した後、再び動作することです。
user1209216 2017

77

次のコマンドを入力します。

adb kill-server sudo ./adb start-server adb devices

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


4
考えは受け入れられた答えと同じですが、提供された例のため、これは私だけを助けました。ありがとう
user907860 14年

1
@ user907860 sudoを書く必要がある理由を説明しているため、実際には承認された回答よりも優れています:)(承認された回答を見たときに私はしなかった)
stan0

ところで、なぜadbをrootとして実行する必要があるのでしょうか?
stan0

申し訳ありません、覚えていません
iancrowther 2015

2
adbはrootとして実行しないでください。これが必要な場合は、システムが正しく構成されていません。すべての前で「sudo」を投げるのをやめると、セキュリティに大きな影響があります。
hackel、2015

55

上記のすべてを試したところ、どれも動作しませんでした.. MTPからCamera(PTP)に接続を切り替えると、ようやく動作しました。


3
システム設定>ストレージ>右上のボタン:USBコンピューター接続>メディアデバイス(MTP)ではなく選択カメラ(PTP)として接続
Thaddeus Albers

3
男、私は2時間のような解決策を探していました、これはubuntu 16.04で私に働きます、ありがとう
ジョリウス

これは最初に確認する必要があります。私のために働く
m50

32

この質問に投稿された悪い答えはたくさんあります。(唯一の、または推奨される解決策として宣伝するべきではない)adbas as runningの実行rootから、完全に無関係な問題の解決までさまざまです。

すべてのデバイス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が彼の質問で間違っていた特定のことに関しては-それはファイルをudev編集した後にルールをリロードしていませんでした.rules

また、OPは彼が自分の電話に持っているAndroidビルド(別名ROM)を知らなかった。idVendor値は、ソフトウェアで設定し、したがって、それはROMに依存しています。したがって、04E8彼の元のルールで使用した値は、SamsungのストックROMを備えたデバイスでのみ機能しました。ただし、これはこのudevルールの問題ではありません。VendorIDに関係なく、adbまたはのすべてのデバイスと一致します。fastboot


それが機能していることを確認する唯一の欠けているステップは、adbデバイスの前のadb kill-serverです。
mstrange 2017年

1
これはAndroid 8.1では動作しないようです。どのようにしてadbがデバイスIDとしてレポートするかを見つけましたか
カチャパ2018年

Android 7.1.2で私のために働いた
Amerzilla 2018年

@Cachapa、それはすべてのAndroidバージョンで動作します。でも、AndroidのPプレビュー4使用するのと同じADBインタフェースIDを(私はこれを書いている時点で)最新の- android.googlesource.com/platform/system/core/+/...
アレックスP.


16

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

$ sudo -s
# adb kill-server
# adb start-server

それがそれを機能させる唯一のものかどうかはわかりません...私は上記のものを試しました。しかし、VBoxのこの投稿ubuntuがないと、LG G3は承認されませんでした。キーナンに感謝
lastboy '17 / 11/15

理由はわかりませんが動作sudo adb kill-server; sudo adb start-serverしませんでしたが、これは動作しました。
Hritik 2017年

9

debianを使用している場合、Ubuntuでデバイスをセットアップしてファイル「/etc/udev/rules.d/51-android.rules」を作成するためのガイドは機能しません。ここからの指示に従いました。参考のためにここに同じことを書き留めます。

このファイルをスーパーユーザーとして編集します

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


5

私も同じ問題を抱えていましたが、解決策は仲間と同じです(ちなみに、デバイスをルート化する必要はありません)。

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

楽しい。


1
を使用してログインできない場合はsu、を使用してくださいsudo su。やった。また、ユーザーを終了する方法がわからない場合は、を使用してくださいexit
Pijusn 2013

4

これは少し遅いかもしれませんが、Android ADB USBドライバーを手動で追加する方法に関する非常に良い記事をここに示します。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″

なお、編集idVendoridProductお使いのデバイス値と値を。保存して閉じます。

次に、次のコマンドを入力します
sudo chmod a+rx /etc/udev/rules.d/51-android.rules。-読み取り/実行権限を付与します
sudo service udev restart- udevサービスを再起動します

次にtoを追加するidVendor必要がありadb_usb.iniます。次のコマンドを入力します。
cd ~/.android
gedit adb_usb.ini

次の値を追加します 0x283b

これは0x(idVendorvalue)にすぎません。したがって、値を次のものに置き換えます。デバイスの値を考慮してファイルを保存して閉じます。

次のコマンドを入力します。
sudo service udev restart

Androidデバイスを取り外し、再度接続します。
次のコマンドを入力します。
adb kill-server
adb devices

よし!デバイスがリストされている必要があります。

Ubuntu 14.04 LTSでのAndroid ADB USBドライバーの手動追加からコピー

私のために働いた。


4

Galaxy S3でも同じ問題が発生しました。私の問題は、idVendor04E8が適切ではないということでした。正しいものを見つけるには、スマートフォンをコンピューターに接続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、すべてが働いた!


1
あなたは多分もしかして:ATTR{idVendor}=="18d1"
Tanasis

3

M0Rf30/android-udev-rulesGitHubコミュニティが管理するudev-rulesを使用する

https://github.com/M0Rf30/android-udev-rules/blob/master/51-android.rules

これは、これまでに見た中で最も完全なudev-rulesリストであり、現在推奨されているものよりもさらに多くの sudo apt-get install android-tools-adb であり、公式ドキュメントでれてで、私にとってその問題を解決しました。


1
単一のルールがすべての場合に機能するのに、なぜ「リストの維持」に煩わされるのでしょうか。stackoverflow.com/a/45006231/1778421
AlexP。

@AlexP。その方法について知りませんでした。公式ガイドが代わりにそれを推奨しない理由はありますか?
Ciro Santilli郝海东冠状病六四事件法轮功

怠惰と知識慣性のために。元のAndroid開発者は同じベンダーIDのデバイスを使用していたため、考えられる最も簡単なアプローチを採用していました。より多くのベンダーがより多くのデバイスを作成したとき-開発者はルールファイルにIDを追加し続けました。
Alex P.


1

udevを再起動したら、adbサーバーを強制終了してadbサーバーを起動し、Android SDKのインストールパスに移動して、すべてsudoで実行します。次に、権限の問題を解決するadbデバイスを実行します。


1

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

抜かないで

提供されるすべての回答は、USBケーブルを取り外して再接続できることを前提としています。これが不可能な状況(たとえば、リモートの場合)では、次のことを実行して、推奨されるudevルールが再接続時に実行することを本質的に実行できます。

lsusb

気になるデバイスを見つけます。例:

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

それがオンになっているバス番号をメモしてから実行します。例003:busの場合:

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

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


udevデバイスを再接続せずに新しいルールを適用するには、udevadm trigger --verbose --action=add --subsystem-match=usbコマンドを使用します。
Alex P.

1

adb他の回答が示唆しているように、サーバーをrootとして実行しないでください。代わりに、Arch Linuxを使用している場合は、次のようにします。

  1. android-udevPacmanでパッケージをインストールする
  2. udevルールをリロードします。

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

    # usermod -aG adbusers $LOGNAME

ソース:https : //wiki.archlinux.org/index.php/android#Configuring_adb


0

GROUP="plugdev"ユーザーのメイングループを使用する代わりに試してください。


私は自分のユーザー名を使用していますが、役に立ちません
Leem.fin

0

私のubuntu 12.04 LTSの場合、HTC Incredible usbモードを充電からメディアに変更する必要があり、その後、デバイスがadbの下に表示されました。もちろん、両方のケースですでにデバッグがオンになっています。


0

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

rootとして実行されているものはすべて、システム内で何かを実行できます。ファイルを作成または変更すると、そのアクセス権がrootのみが使用するように変更される可能性があります。繰り返しますが、禁止です!

行うには正しいことは、ユーザーが権限を持って作るチェックアウトするようにシステムを設定されているこのガイド私はそれを正しく行うにはどのように書きましたが。


0

私は同じ問題を抱えており、次の手順に従いました:

# Clone this repository
git clone https://github.com/M0Rf30/android-udev-rules.git
cd android-udev-rules
# Copy rules file
sudo cp -v 51-android.rules /etc/udev/rules.d/51-android.rules
# OR create a sym-link to the rules file - choose this option if you'd like to update your udev rules using git.
sudo ln -sf "$PWD"/51-android.rules /etc/udev/rules.d/51-android.rules
# Change file permissions
sudo chmod a+r /etc/udev/rules.d/51-android.rules
# If adbusers group already exists remove old adbusers group
groupdel adbusers
# add the adbusers group if it's doesn't already exist
sudo mkdir -p /usr/lib/sysusers.d/ && sudo cp android-udev.conf /usr/lib/sysusers.d/
sudo systemd-sysusers # (1)
# OR on Fedora:
groupadd adbusers
# Add your user to the adbusers group
sudo usermod -a -G adbusers $(whoami)
# Restart UDEV
sudo udevadm control --reload-rules
sudo service udev restart
# OR on Fedora:
sudo systemctl restart systemd-udevd.service
# Restart the ADB server
adb kill-server
# Replug your Android device and verify that USB debugging is enabled in developer options
adb devices
# You should now see your device

上記の手順はandroid-udev-rulesで説明されています。それは私のために働いた。

再接続した後に電話スクリーンに表示されるダイアログを確認してください。


0
sudo usermod -aG plugdev $LOGNAME

このコマンドは私のために働きました


-1

私はsuを使用し、それが機能し始めました。Jetbrainsを通常のユーザーで使用するとこの問題が発生しますが、Jetbrainsをsuモードで再起動すると、何もせずにデバイスを表示できます。

Ubuntu 13.04とJetbrains 12.1.4を使用しています


-1

/home/username/.android/にあるadb_usb.iniファイルを編集してみることもできます。。このファイルには、接続するデバイスのIDベンダーリストが含まれています。新しい行にデバイスのIDベンダーを追加するだけです(行ごとに1つのIDです)。次にadbサーバーを再起動し、デバイスを再接続します。

Ubuntu 12.10で動作しました。


-1

とにかく、この問題を解決するために私がしたこと(Ubuntuで)。

  1. これらのコマンドを実行する必要がある場合に定義します。ほとんどのubuntuユーザーには、ホームフォルダー(隠しファイル.bashrc)があります。

    これらのコマンドの起動を記録できます。ただし、これらのコマンドはbash、コンソールにコマンドを入力するとトリガーされます。

  2. 私はシェル.zshrcを持っているので、私は次のことをしました:

    コンソールを開く: gedit .zshrc

ファイルが開いたら、次の行を追加します。

./.add_device_permissions.sh

後または前に、このファイルを作成する必要があり.add_device_permissions.shます。

#!/bin/bash
# Add permissions
ADB="/home/vadimm/Android/Sdk/platform-tools/adb"
$ADB devices
$ADB kill-server
cat .permissions_redmi_note | sudo -S $ADB devices
$ADB kill-server
cat .permissions_redmi_note | sudo -S $ADB devices

また、パスワードをハードコードする必要がある場所に.permissions_redmi_noteを作成する必要があります。

  1. ファイルに追加する.zshrc必要がないため、システム自体を起動するときにパスを指定できます。Startup Applications Preferences

「追加」を押してコマンドを書き込むところ: /home/vadimm/.add_device_permissions.sh

  1. また、コマンドラインの次のコマンドで使用することもできます: ./adb devices ./adb kill-server sudo ./adb devices ./adb kill-server ./adb devices

-2

誰かが使用したときに次のエラーメッセージが表示された場合 adb devices

no permissions (verify udev rules); see [http://developer.android.com/tools/device.html]

以下を実行します

sudo -s 
adb kill-server
adb start-server

カスタムビルドのAndroidデバイスで問題が解決しました

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