VirtualboxのWindows 7仮想マシン内でAndroid(別名monodroid)のモノを取得しようとしていますが、電話へのadb接続に問題があります。「adbデバイス」を実行すると存在するデバイスを一覧表示することは問題なく表示されますが、「adb install」、logcat、またはPushを実行しようとするとハングします。現在、virtualboxにこれに該当するバグがありますが、自分よりも知識のある人に期待していました回避策があります。
https://www.virtualbox.org/ticket/662
Xamarinが製品のLinux移植版をリリースした場合、またはJavaに精通している場合、これは大まかな問題ではありませんが、これらは少し異なる問題だと思います。
ブライアンは、VMホストをADBホストにすることも、検討すべき回避策の1つです。その後、VM/IPを介してTCPクライアントに接続できます。そのセットアップの一般的なアイデアは次のとおりです。
adb
を含むplatform-toolsパッケージのみが必要です。adb kill-server
を実行します。確実にtskill adb
にしてください。 Eclipseの実行中のインスタンスがある場合は、実際にadb
をバックグラウンドで起動するため、それらを最初にシャットダウンする必要があります。このステップをスキップしないでください。ホストから、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ポートです。
次に、ポートをホストからVMクライアントに転送するか、ADBをホストIP:ポートに直接接続する必要があります。私と同じように、ADBHOST変数とAndroid_ADB_SERVER_PORT変数の文書化が不十分で、簡単に失敗することがわかります。このため、VMクライアントからssh
(おそらくCygwin経由)を介して転送する単純なポートを検討してください。
autossh -nNL5037:localhost:5037 -oExitOnForwardFailure=yes 10.0.2.2
最後に、VMクライアントからadb devices
を実行します。 「デーモンが実行されていません」と表示される場合は、ポート転送がおかしくなっています。それ以外の場合は、デバイスが表示され、終日logcatを実行できるはずです。注目すべき点の1つは、もちろん実際にデバッグブリッジを使用している場合を除いて、VMクライアントでadb
デーモンが実行されないことです。
私は、リモートマシンに接続されているネットワーク上のデバイスをデバッグするために同様のメカニズムを使用しましたが、うまく機能しました。
質問が投稿されてからVirtualBoxで何が変更されたかはわかりませんが、VirtualBoxメニューDevices-> USB-> DeviceNameからUSBデバイスを選択すると、シームレスに動作しました。 VirtualBox 5.1.2 r108956に取り組んでいます。
VM上で実行されているADBにも問題がありました。私はWindows 10ホストとUbuntu 14.04クライアントを持っていました。 autossh
メソッドが機能しませんでした。私は別のより簡単な解決策を見つけました StackOverflowの質問 。 PCとデバイスの両方が同じWiFiネットワーク上にあることが必要です。
VMクライアントで次を実行します:adb tcpip 5555
ADBがUSBの代わりにVM=モードになっているため、デバイスはTCPから切断されます。
次の部分では、デバイスのIPアドレスが必要です。それを見つけるには、単にadb Shell ip -f inet addr show wlan0
を実行します
これでデバイスに接続できます。 VMクライアントで、次を実行:
adb connect <Device IP>:5555
ここから、すべてのadb Shell、logcat、およびmonkeyセッションが中断されることなく実行されました!
同じ問題があり、約2時間検索しました。上記のすべての解決策を含むいくつかの方法を試しましたが、どれもうまくいきませんでした
私の状況
私のホストはarchlinuxで、ゲストはWindows 8.1でした。Windowsでフラッシュビルダーを実行していましたが、USBデバッグが機能せず、接続デバイスはネクサス5だったので、次の手順に従いました。
私の場合、私はドライバをflashbuilderにコピーする必要がありますAndroidドライバパスもですが、おそらくこれは必要ありません。
VirtualBox 5.0.14で同じ問題が発生し、Stephen Niedzielskiが提供するソリューションが機能しませんでした。誰かがまだ興味がある場合は、このソリューションを試すことができます。
私の環境は:
ホスト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を取得するか、ファイルをプルしてプッシュすることができます。