web-dev-qa-db-ja.com

Android VirtualBoxでのUSBデバッグ

VirtualboxのWindows 7仮想マシン内でAndroid(別名monodroid)のモノを取得しようとしていますが、電話へのadb接続に問題があります。「adbデバイス」を実行すると存在するデバイスを一覧表示することは問題なく表示されますが、「adb install」、logcat、またはPushを実行しようとするとハングします。現在、virtualboxにこれに該当するバグがありますが、自分よりも知識のある人に期待していました回避策があります。

https://www.virtualbox.org/ticket/662

Xamarinが製品のLinux移植版をリリースした場合、またはJavaに精通している場合、これは大まかな問題ではありませんが、これらは少し異なる問題だと思います。

19
Brian

ブライアンは、VMホストをADBホストにすることも、検討すべき回避策の1つです。その後、VM/IPを介してTCPクライアントに接続できます。そのセットアップの一般的なアイデアは次のとおりです。

  1. ホストマシンにAndroid SDKをインストールします。 adbを含むplatform-toolsパッケージのみが必要です。
  2. VMクライアントがAndroidデバイスの所有権を取得することを許可しないでください。このため、お持ちのVirtualBox USBフィルタールールを無効にしてください。デバイスを取り外して再接続しても問題はありません。 。
  3. VMクライアントからadb kill-serverを実行します。確実にtskill adbにしてください。 Eclipseの実行中のインスタンスがある場合は、実際にadbをバックグラウンドで起動するため、それらを最初にシャットダウンする必要があります。このステップをスキップしないでください。
  4. ホストから、adb devicesを実行します。すべてが順調に進んだ場合は(そうである必要があります)、デバイスが一覧表示されます。これは次のようになります(ポート番号に注意してください。マングリングは申し訳ありません)。

    * daemon not running. starting it now on port 5037 *
    * daemon started successfully *
    List of devices attached
    015d2994ed200409    device
    

この時点で、ホストのADBサーバーはポート5037で実行されているはずです。これは、VMクライアントからtelnet 10.0.2.2 5037を実行して確認できます。ここで、10.0.2.2はVirtualBoxのデフォルトIPですhostsおよび5037は、上記のデフォルトのADBポートです。

  1. 次に、ポートをホストからVMクライアントに転送するか、ADBをホストIP:ポートに直接接続する必要があります。私と同じように、ADBHOST変数とAndroid_ADB_SERVER_PORT変数の文書化が不十分で、簡単に失敗することがわかります。このため、VMクライアントからssh(おそらくCygwin経由)を介して転送する単純なポートを検討してください。

    autossh -nNL5037:localhost:5037 -oExitOnForwardFailure=yes 10.0.2.2
    
  2. 最後に、VMクライアントからadb devicesを実行します。 「デーモンが実行されていません」と表示される場合は、ポート転送がおかしくなっています。それ以外の場合は、デバイスが表示され、終日logcatを実行できるはずです。注目すべき点の1つは、もちろん実際にデバッグブリッジを使用している場合を除いて、VMクライアントでadbデーモンが実行されないことです。

私は、リモートマシンに接続されているネットワーク上のデバイスをデバッグするために同様のメカニズムを使用しましたが、うまく機能しました。

30

質問が投稿されてからVirtualBoxで何が変更されたかはわかりませんが、VirtualBoxメニューDevices-> USB-> DeviceNameからUSBデバイスを選択すると、シームレスに動作しました。 VirtualBox 5.1.2 r108956に取り組んでいます。

11
FUD

VM上で実行されているADBにも問題がありました。私はWindows 10ホストとUbuntu 14.04クライアントを持っていました。 autosshメソッドが機能しませんでした。私は別のより簡単な解決策を見つけました StackOverflowの質問 。 PCとデバイスの両方が同じWiFiネットワーク上にあることが必要です。

  1. VMクライアントで次を実行します:adb tcpip 5555

    ADBがUSBの代わりにVM=モードになっているため、デバイスはTCPから切断されます。

  2. 次の部分では、デバイスのIPアドレスが必要です。それを見つけるには、単にadb Shell ip -f inet addr show wlan0を実行します

  3. これでデバイスに接続できます。 VMクライアントで、次を実行:

    adb connect <Device IP>:5555

ここから、すべてのadb Shell、logcat、およびmonkeyセッションが中断されることなく実行されました!

3
Nebel22

同じ問題があり、約2時間検索しました。上記のすべての解決策を含むいくつかの方法を試しましたが、どれもうまくいきませんでした

私の状況

私のホストはarchlinuxで、ゲストはWindows 8.1でした。Windowsでフラッシュビルダーを実行していましたが、USBデバッグが機能せず、接続デバイスはネクサス5だったので、次の手順に従いました。

  1. VirtualboxメニューのMachine-> settings-> usb enable usb controllerを有効にしてUSB 2.0(EHCI)コントローラーを有効にしてからデバイスを追加し(右側の+ボタンをクリック)、仮想マシンを起動します。
  2. 次に、最新のgoogle usbドライバーを here からダウンロードして抽出します
  3. コントロールパネルの[デバイスマネージャー]に移動し、デバイスを右クリックして[ドライバー]タブに移動し、[ドライバーの更新]をクリックします。2つのオプションが自動的に検索されます。もう1つはコンピューターを参照し、2番目のオプションを選択して、抽出されたファイルパスを指定します(付属のチェックサブフォルダオプション)この後、デバイスはWindowsによって認識され、Androidデバイスにデバイスへのアクセスを許可するためのメッセージが表示されます。

私の場合、私はドライバをflashbuilderにコピーする必要がありますAndroidドライバパスもですが、おそらくこれは必要ありません。

2
zoli

VirtualBox 5.0.14で同じ問題が発生し、Stephen Niedzielskiが提供するソリューションが機能しませんでした。誰かがまだ興味がある場合は、このソリューションを試すことができます。

私の環境は:

  • ホストOS:Mac OS 10.11
  • VirtualBoxのゲストOS:Ubuntu 14.04
  • デバイス:Cyanomodgen 12.1を実行するGalaxy S5

ホストOSでwifiホットスポットを開始し、そこにAndroidデバイス、またはルーターで両方を接続します。virtualboxでゲストOSのネットワークモードを「ブリッジアダプター」に設定し、Wifiアダプターの名前を選択しますそのようにして、ホストOSとAndroidデバイスは同じネットワークにあります。

次に、Androidデバイスが「開発者モード」をアクティブにし、Cyanomodgenから提供される「ネットワーク経由のADB」を有効にします(Androidの元のバージョンのデバイスの場合、可能であればネットワーク経由でADVを使用する方法をググる)。ホストOSで「adb kill-server」を実行し、ADBのインスタンスが実行されていないことを確認してから、コマンド「adb connect 192.168.2.12」、ip of Android device。

おめでとう:)これで、ADBをAndroidデバイスで使用して、logcatを取得するか、ファイルをプルしてプッシュすることができます。

1
Enis