AndroidデバイスのADBアクセスを構成する方法は?


39

Ubuntu 12.10を使用しています。AndroidSDKをインストールし、ユーザーにパスを設定する.bashrcと動作します。

問題は、私の電話はadbが権限のためにrootで実行される必要があるが、sudoでadbを実行すると次のエラーが発生することです:

sudo:adb:コマンドが見つかりません

単に使用しようとしましたsudo -E adb start-serverが、機能しません。にエクスポートパス行を追加しよう/root/.bashrcとしました(それが役に立たないことに気付いた後)/etc/bash.bashrc

Arch Linuxで設定できたことを覚えていますが、私の問題は、Ubuntuのルートアカウントに関係していると思います。


私が理解していないことは次のとおりです:

これらは機能しません:

martin@alyx:~$ sudo adb devices
sudo: adb: command not found

これは(フルパスの入力):

martin@alyx:~$ sudo /opt/android-sdk-linux/platform-tools/adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
CM7-Blade   device

これは機能しません(sudoで-Eを使用):

martin@alyx:~$ sudo -E adb devices
sudo: adb: command not found

これは(ルートとして)動作します:

martin@alyx:~$ sudo su
root@alyx:/home/martin# adb devices
List of devices attached 
CM7-Blade   device

私は今完全に混乱しているので、sudoのパスを設定する方法や、他の方法で問題を解決する方法を明確にしたいと思います。

(そして、adbをrootとして実行すべきでないと言ってはいけません。)

前もって感謝します!

編集: ルート権限を要求することにより、私はそれらを必要とすることを意味します。

$ adb devices 
List of devices attached 
????????????    no permissions

スーパーユーザーとしては発生しません。誤解して申し訳ありません。


WindowsとUbuntuの両方で、AndroidデバイスがUSB 3ポートに接続されていると表示されないことが多く、USB3以外のポートに接続すると問題が軽減されることに気付きました。
ポールグレゴワール14

ドキュメントから:source.android.com/source/…–
Paschalis

回答:


48

最初に以下をお読みください:Android ADBを設定するにはどうすればよいですか?


USBアクセスの構成

まず、ADBを適切に設定している場合、ADBを実行するのにルート権限は必要ありません。AOSPサイトでは、Pixel / NexusデバイスのUSBアクセスの構成例が提供されています。Nexus以外のデバイスには次のスキームを使用できます。

SUBSYSTEM=="usb", ATTR{idVendor}=="xxxx", ATTR{idProduct}=="xxxx", MODE="0600", OWNER="<username>"

ベンダーと製品IDはlsusb、デバイスを使用して検索することで取得できます。(注:デバイスは実際にはGalaxy Nexusです。)

$ lsusb | grep -i samsung
Bus 002 Device 103: ID 04e8:6860 Samsung Electronics Co., Ltd GT-I9100 Phone [Galaxy S II]

したがって、私の/etc/udev/rules.d/51-android.rulesudevルールは次のようになります。

# adb protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0600", OWNER="username"

必要に応じて、fastbootのような他の電話の状態に対してこれを繰り返すことができます。変更を有効にするには、udev(sudo udevadm control --reload)をリロードするか、再起動します(推奨)。

プログラムを利用可能にする

パス変数変更する代わりに、シンボリックリンクを実行可能ファイルに~/bin/(ユーザーのみ)または/usr/local/bin/(システム全体)に追加することをお勧めします。

mkdir ~/bin/
ln -s /opt/android-sdk-linux/platform-tools/adb ~/bin/

1
電話にudevルールを追加しようとしましたが、役に立たなかったので、自分の問題についてはっきりしていないのではないかと思いました。時間があれば、私の質問の終わりをご覧ください。
マーティンフェジェ

正しいIDを追加しましたか?modaco.com/topic/329317-guide-ubuntu-and-the-bladeその後マシンを再起動しましたか?adb devicesルート権限なしで私のために働く。
LiveWireBT

4
うん、うまくいく!/etc/udev/rules.d/51-android-rulesにudevルールを追加しましたが、明らかに間違いでした。/lib/udev/rules.d/11-android.rulesを使用した後、すべてがうまくいきました!ルート権限は必要ありません!どうもありがとう!
マーティンフェジェ

同じ????????????を持っていました 許可の状況はなく、あなたの答えはそれを解決しました、ありがとう。
パントロ

何らかの理由でここで機能しなかったため、sudoでadbサーバーを起動する必要がありました。なぜ機能しなかったのか、どこで確認できますか?
アクエリアスパワー

29

同じ問題に中国のタブレット(ある奇妙なメーカー)で遭遇しました。

/etc/udev/rules.d/51-android.rulesファイルに加えて、私~/.android/adb_usb.iniも変更する必要がありました。

ターミナルで以下を実行します。

sudo gedit ~/.android/adb_usb.ini

adb_usb.iniファイルは次のようになります。

# ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT.
# USE 'android update adb' TO GENERATE.
# 1 USB VENDOR ID PER LINE.
# ie 0x2207
0x<!!!Your Vendor ID here!!!>

デバイスを切断および再接続し、端末で以下のコマンドを実行する必要もありました。

adb kill-server

そしてその後

adb start-server

そして、デバイスが検出されました。


私もあなたのヒントで試しましたが、何も変わりませんでした、なぜここでうまくいかなかったのかを見ることができますか?
アクエリアスパワー

良いですね。それは私のために働いた。それに伴い、adbを更新する必要がありました
ワッフルのクレイジーピーナッツ

このソリューションはUbuntu 14.04では機能しません。デバイスのリストはまだ空のままです。
ルイス・デ・スーザ

1
Uygar、どうもありがとう、ついに私は自分に合った解決策を見つけました。
ドミトリーポポフ

それが欠けていたものです。実際、この0x2207例では、デバイスが使用するベンダーIDと同じです。
ssokolow

2

私の場合、MTPモードをAndroid Studio(v1.5.1)で検出する必要があるほとんどのデバイスとは異なり、MTPモードの代わりに一部のスマートフォンをPTPモードに設定する必要がありました。

したがって、最初にMTPモードとPTPモードの両方を試してから、より複雑なUnixのADP構成に時間を費やし、それらに害を及ぼす必要がないようにしてください。

新しいデバイスでは、Devオプションで直接選択できますが、古いデバイスでは、ステータスバーのUSB接続オプションにあります。

しかし私にとっても、Z5以降の最新のSony Xperiaデバイスは、USBモードに関係なく動作しません。たぶん私のAndroid Studioは古いか、Unix ADP Configurationsを掘る必要があります。


1

次の手順を実行します:

  1. アンドロイド変数を設定する

    最初にあなたの家に行き、Ctrl+ を押すと、H隠しファイルがファイルを探して.bashrc表示され、テキストエディタで開いて、ファイルの最後に以下の行を配置します:

    export ANDROID_HOME=/myPathSdk/android-sdk-linux
    export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
    
  2. リブート

  3. デバイスを使用してデバッグする

    接続を聞きます:

    adb -a
    

    Androidデバイスを接続して認証します。

    cordova run android --device
    

0

USBアクセスの構成

推奨されるアプローチは、でファイルを作成することです/etc/udev/rules.d/51-android.rules

ターミナルに入力してください:

wget -S -O - http://source.android.com/source/51-android.txt | sed "s/<username>/$USER/" | sudo tee >/dev/null /etc/udev/rules.d/51-android.rules; sudo udevadm control --reload-rules

これらの新しいルールは、次にデバイスを接続したときに有効になります。そのため、デバイスを取り外してコンピューターに接続し直す必要がある場合があります。


0

受け入れられた答えは物事を成し遂げるのに役立ちましたが、私はまだ混乱していました:

martin@alyx:~$ sudo adb devices
sudo: adb: command not found

そして特に

martin@alyx:~$ sudo -E adb devices
sudo: adb: command not found

以来sudo --help

-E, --preserve-env          preserve user environment when running command

多くのLinuxディストリビューション(DebianとUbuntuを含む)secure_pathenv_resetオプションがデフォルトでオンになっていることが判明しました。これにより、PATH変数がリセットされ、に設定されますsecure_path/etc/sudoersvisudoを使用して、ファイル内で変更できます。

または、次を実行できます。

sudo env PATH=$PATH adb devices

-1

このコマンドを試してください: sudo tools/android update sdk --no-ui

SDKのREADME:

Android SDKへようこそ!Android SDKアーカイブには、最初は基本的なSDKツールのみが含まれています。Androidプラットフォームやサードパーティのライブラリは含まれていません。実際、アプリケーションを開発するために必要なすべてのツールすらありません。アプリケーションの開発を開始するには、SDKマネージャーを使用して、プラットフォームツールとAndroidプラットフォームの少なくとも1つのバージョンをインストールする必要があります。Platform-toolsには、adb、dexdumpなどを含むAndroidプラットフォームの新機能をサポートするために定期的に更新されるビルドツールが含まれています(基本的なSDKツールとは別の理由です)。Platform-tools、Androidプラットフォーム、およびその他のアドオンをインストールするには、インターネット接続が必要です。オフラインでSDKを使用する予定がある場合は、オンラインで必要なコンポーネントをダウンロードしてください。SDKマネージャーを起動するには、プログラム「android」を実行してください。コマンドラインから、次を実行して直接更新をトリガーすることもできます。tools/android update sdk --no-ui


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