web-dev-qa-db-ja.com

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

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

問題は、私の電話は許可のためにルートでadbを実行する必要があるが、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

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

39
Martin Fejes

最初に以下をお読みください。 Android ADBの設定方法


USBアクセスの構成

まず、ADBを適切に設定している場合、ADBを実行するのにルート権限は必要ありません。 AOSPサイトでは、Pixel/Nexusデバイスの SBアクセスの設定 の例を提供しています。 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.rules udevルールは次のようになります。

# 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/
48
LiveWireBT

中国のタブレット(奇妙なメーカー)でも同じ問題にぶつかりました。

/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

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

29
Uygar Y

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

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

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

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

2

次の手順を実行します:

  1. Android varsを設定

    最初に家に行って押します 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
    
1
Vladimir Tamayo

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

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_pathおよびenv_resetオプションがデフォルトでオンになっていることがわかります。これにより、PATH変数がリセットされ、secure_path。 visudoを使用して、/etc/sudoersファイルで変更できます。

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

Sudo env PATH=$PATH adb devices
0
maxnorbi

SBアクセスの設定

推奨されるアプローチは、/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
Benny