[英]How to debug an app upgrade in Android Studio on a USB connected device
[英]Debug device connected by USB to VirtualBox's host, from Android-Studio inside VM
我正在嘗試讓 mono for android(aka monodroid)在 virtualbox 上的 windows 7 虛擬機中工作,但我的手機的 adb 連接有問題。 當我運行“adb devices”以列出存在的設備時,它顯示沒有問題,但是當我嘗試運行“adb install”、logcat 或 push 時它掛起。 目前 virtualbox 中存在一個適用於此的錯誤,但我希望比我更有知識的人能有一個解決方法。
https://www.virtualbox.org/ticket/6620
如果 Xamarin 發布了他們產品的 linux 端口,或者如果我熟悉 Java,那么這些都不是問題,但我想這些是稍微不同的問題。
Brian,您可能考慮的一種解決方法是讓您的 VM 主機也成為 ADB 主機。 然后您可以通過 TCP/IP 將您的 VM 客戶端連接到它。 這是該設置的總體思路:
adb
的平台工具包。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
此時,您的主機應該有一個運行在 5037 端口的 ADB 服務器。您可以通過運行telnet 10.0.2.2 5037
從 VM 客戶端檢查這一點,其中10.0.2.2
是 VirtualBox 主機的默認 IP, 5037
是默認的 ADB 端口上面提到。
現在您必須將端口從您的主機轉發到您的 VM 客戶端,或者以其他方式將 ADB 直接連接到您的主機 IP:port。 如果你像我一樣,你會發現 ADBHOST 和 ANDROID_ADB_SERVER_PORT 變量的文檔很差並且很容易搞砸。 出於這個原因,請考慮從 VM 客戶端通過ssh
(可能通過 Cygwin)進行簡單的端口轉發:
autossh -nNL5037:localhost:5037 -oExitOnForwardFailure=yes 10.0.2.2
最后,從您的 VM 客戶端運行adb devices
。 如果您看到“守護進程未運行”,則表示您的端口轉發被搞砸了。 否則,您應該會看到您的設備並能夠整天登錄。 值得注意的一點是,您的 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
設備將與 VM 斷開連接,因為 ADB 現在處於 TCP 模式而不是 USB。
對於下一部分,您需要設備的 IP 地址。 要找到它,只需運行adb shell ip -f inet addr show wlan0
現在您可以連接到您的設備。 在您的 VM 客戶端上,運行:
adb connect <Device IP>:5555
從這里開始,我所有的 adb shell、logcat 和monkey 會話都不間斷地運行!
我在此處為設置與我類似的人發布此信息:
允許客戶端操作系統 (Windows) 中的 Android Studio 通過 USB 連接到 Android 手機(使用 adb):
adb
並通過運行adb devices
確認手機已連接adb devices
以確認 adb 服務器正在運行並且可以找到您的手機。 您可能需要將 Android 平台工具添加到您的 PATH(我的位於 C:\\Users\\Username\\AppData\\Local\\Android\\Sdk\\platform-tools)。 這一步可能是可選的——我懷疑 Android Studio 可能會自己啟動adb
。完成這些操作后,Android Studio 能夠檢測到我的手機並使用該設備運行/調試應用程序。
希望這可以幫助!
我遇到了同樣的問題,這讓我搜索了大約 2 個小時。我嘗試了幾種方法,包括上述所有解決方案,但都沒有奏效
我的情況
我的主機是 archlinux,來賓是 windows 8.1 我在 windows 中運行 flash builder 但 USB 調試不起作用,我連接的設備是 nexus 5 所以我按照這些步驟
在我的情況下,我也應該將驅動程序復制到 flashbuilder android 驅動程序路徑,但也許對於您的情況,這不是必需的
我在 VirtualBox 5.0.14 上遇到了同樣的問題,Stephen Niedzielski 提供的解決方案對我不起作用。 如果有人仍然感興趣可以嘗試這個解決方案。
我的環境是:
在主機操作系統中啟動 wifi 熱點並在那里連接 android 設備,或在路由器中連接兩者。 在 virtualbox 中,將來賓操作系統的網絡模式設置為“橋接適配器”,然后選擇 Wifi 適配器的名稱。 這樣主機操作系統和安卓設備就在同一個網絡中。
然后,在 android 設備中激活“開發者模式”並啟用 Cyanomodgen 提供的“ADB over network”。 (對於具有原始版本 android 的設備,如果可能的話,谷歌如何通過網絡使用 ADV)在主機操作系統中運行“adb kill-server”並確保沒有 ADB 實例正在運行。 然后運行命令'adb connect 192.168.2.12',android設備的ip。
恭喜 :) 現在您可以在 Android 設備上使用 ADB 來獲取 logcat 或拉取和推送文件。
在主機上安裝 Android SDK。 您應該只需要包含
adb
的平台工具 package。不要讓您的 VM 客戶端獲得 Android 設備的所有權,因此禁用您擁有的任何 VirtualBox USB 過濾規則,然后分離並重新連接設備也不會造成傷害。
從您的 VM 客戶端運行
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
此時,您的主機應該有一個運行在端口 5037 的 ADB 服務器。您可以通過運行
te.net 10.0.2.2 5037
從 VM 客戶端檢查這一點,其中10.0.2.2
是 VirtualBox 主機的默認值5037
是默認值上面提到的 ADB 端口。
( https://stackoverflow.com/a/12557836/16902966 )
在虛擬機 (Windows) 中:
set ADB_SERVER_SOCKET=tcp:10.0.2.2:5037
連接的設備: ...\platform-tools>adb.exe devices
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.