デバイスで USB デバッグを有効にする
これは、設定 › 開発で行います .設定メニューにそのエントリがない場合は、設定 › 概要 に移動します 、「ビルド番号」までスクロールし、デバイスが開発者になったことを祝福するまで、サルのように叩きます。 設定のメイン ページに戻ります メニューの下の方に「開発」(または「開発者」)の設定が表示されます。それを入力して、USBデバッグを有効にします
デバイスを特定する
まず、デバイスが USB バス上でどのように識別されるかを知る必要があります。そのため、Android デバイスではできません 接続したら、シェルを取得してコマンド lsusb
を実行します .次に、デバイスを接続して、コマンドを再度実行します。新しい行を見つけます。 Wileyfox Swift の場合 これは「名前のないデバイス」です:
Bus 004 Device 003: ID 2970:2282
ADB のルールの設定
上記の行の末尾に数字が必要です:2970:2282
.これらは、ベンダー (2970) とデバイス自体 (2282) を指定します。これらの詳細があるので、root が必要です /etc/udev/rules.d/51-android.rules
を編集 (まだ存在しない場合は作成) するために、Linux マシンのシェル ファイル。そこに、デバイスの行を追加します。次の例の行は、Wileyfox Swift の検索方法を示しています:¹
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2970", ATTRS{idProduct}=="2282", MODE="0666" GROUP="androiddev", SYMLINK+="android%n"
別のデバイスを使用している場合は、lsusb
を実行したときにベンダー ID と製品 ID を上記で見つけたものに置き換えます。 .行の簡単な説明:
SUBSYSTEMS=="usb"
:明らかに、このルールは USB 専用です;)ATTRS{idVendor}=="2970"
:このルールが対象とするデバイスのベンダー IDATTRS{idProduct}=="2282"
:デバイス IDMODE="0666"
:デバイス ノードが取得するパーミッション。0666
システム上のすべてのユーザーに読み取りと書き込みの許可を与えるため、非常に緩いため、心配な場合は、それを0660
に置き換えてみてください。 (所有者とグループにのみ読み書きを許可し、他のユーザーにはすべてを拒否します)。GROUP="androiddev"
:デバイス ノードが属するグループ。これは、デバイスで作業する予定のユーザーが属するグループである必要があります。SYMLINK+="android%n"
:/dev
で簡単に見つけられるように、ノードに適切な名前を付けるだけです。 (私の場合、後で/dev/android5
として表示されました) )
そのルールは /etc/udev/rules.d/51-android.rules
に入力されました 、 udev
を伝えなければなりません それを利用するために。最も安全な方法 (再起動の隣;) は udev
を再起動することです サービス。 Linux ディストリビューションに応じて、これは service udev restart
経由で行うことができます。 または /etc/init.d/udev restart
.
完了したら、ルート シェルを残します。 Android デバイスを切断して再接続し、adb devices
を試してください また。ほとんどのデバイスが表示されましたが、Wileyfox Swift は表示されませんでした –明らかに、いくつかの余分な抱擁が必要です.そのような状況にある場合は、ファイル ~/.android/adb_usb.ini
を開きます (存在しない場合は作成します)。 lsusb
で見つけたベンダーの名前を付けて、1 行追加します。 その上; Swift の場合 それは 0x2970
になります (うん、ここでプレフィックス 0x
を付ける必要があります 指摘するために、それは16進数です)。次に、ADB サーバーを再起動します:adb kill-server && adb start-server
.デバイスを切断して再接続します。現在 adb devices
デバイスの接続
adb devices
に気づいたかもしれません 0123456789ABCDEF unauthorized
のようなことを言いました .これで問題ありません。(デバイスの) 安全のために、デバイスにアクセスできるようにするには、まずコンピュータを認証する必要があります。 adb shell
を発行するだけです 今 - error: device unauthorized. Please check the confirmation dialog on your device.
で終了します そのアドバイスに従ってください (オプションでチェックボックスをマークしてコンピューターを永続的に認証します)、これで完了です:これで、adb を使用してデバイスにアクセスできます。
更新:
¹ 以降の Linux バージョンでは、UDEV ルールの構文がわずかに変更されていることに注意してください。 jcomeau_ictx は彼のコメントで指摘しました。上記で見つかった値については、次のようになります:
SUBSYSTEM=="usb", ATTR{idVendor}=="2970", ATTR{idProduct}=="2282", MODE="0666", GROUP="plugdev", SYMLINK+="android%n"
2 つの違い:SUBSYSTEM
になりました (複数形不可)、グループは androiddev
から変更されました plugdev
へ (前者は最近のシステムには存在しませんが、後者は存在し、通常は少なくとも最初のユーザーに割り当てられます)。
さらに、vendorID を ~/.android/adb_usb.ini
に追加する必要がある場合があります。 (1 行に 1 つの ID、16 進数表記):
# ANDROID 3RD PARTY USB VENDOR ID LIST
# 1 USB VENDOR ID PER LINE.
0x2970
新しい Linux ディストリビューションからのいくつかのコメント。 Nexus 5X または Nokia 7.1 (Android One) 携帯電話を搭載した Fedora 29。
すでに接続されている場合は、最初に電話を切断してください。
<オール>sudo dnf install android-tools
)sudo cp /usr/share/doc/android-tools/51-android.rules /etc/udev/rules.d
)sudo udevadm control --reload-rules
)sudo systemctl restart adb
)
電話を接続して adb devices
を実行します コマンドラインから。おそらく、「アクセス許可なし」のデバイスが表示されます。これで問題ありません。
IF リストされていないため、デバイスを udev ルール ファイルに追加する必要がありますが、私にとっては、テスト済みのデバイスは事前定義されたルールで動作しました。
adb shell
を実行 うまくいけば、コンピュータを信頼するかどうかを尋ねるセキュリティ通知が電話に表示されるので、[はい] を選択します。
IF 代わりに、コンピューターで「エラー:デバイスの権限が不十分です」と表示される場合は、電話で USB ポートを「このデバイスを充電する」ではなく「ファイルを転送する」モードに設定していることを確認する必要があります。 Android 8.1 では、これは [接続されたデバイス]> [USB] の下の設定にあります。
今日はすべてが機能していても、明日には明らかな理由もなく突然壊れる可能性があることに気付きました。その場合は、最初にデバイスの USB ポート設定を確認します。これは充電モードに戻った可能性があります。それが失敗した場合は、デバイスの USB デバッグ認証を取り消します ([開発者向けオプション] の設定で)。うまくいけば、ポップが表示されるはずです。 -up adb shell
を実行すると再び .
これで、Android Studio を実行し、接続されたデバイスで実行できるようになりました。