最近想用bluestacks代替android SDK里的qemu模擬器做些測試,發現死活連不上網。

癥狀是任何網路應用都無法連接。

開始以為是bluestacks選擇了錯誤的網卡(本機有多網卡),經過一系列漫長而坑爹的排查,終於發現了問題的癥結所在:竟然是DNS設置問題

如果你的BS也無法聯網,不妨按照以下步驟一一排查。問題的成因多種多樣,但因為BS的一些判斷錯誤,而採用了錯誤的DNS設置。

  1. 打開自帶瀏覽器,輸入www.baidu.com或者www.google.com查看是否可以連接 <-肯定是不能吧
  2. 在瀏覽器內輸入123.125.114.144,這是百度的ip,如果可以連接或者跳轉到www.baidu.com並提示無連接則證明是DNS問題
  3. 打開電腦上的命令提示符,輸入(粗斜體為輸入內容):

Z:\TEMP adb shell
adb server is out of date. killing…
* daemon started successfully *
驗證一下是否確實是DNS設置有誤
shell@maguro:/ $ nslookup www.baidu.com
Server:10.10.0.23
會卡在這裡,不管,按Ctrl+C退出,server後面的ip不同機器可能不同

Z:\TEMP adb shell
shell@maguro:/ $ /system/xbin/bstk/su
shell@maguro:/ # ping 10.10.0.23 (這就是上面Server後面的內容)
PING 10.10.0.23 (10.10.0.23): 56 data bytes
顯然ping不通,因此判斷BS自動設置的DNS錯誤

接下來,如果你的BS已經root,則可以輸入
shell@maguro:/ # setprop net.dns1 8.8.8.8
shell@maguro:/ # setprop net.dns2 8.8.8.4

這一操作每次重啟都要重複,你也可以用一個叫Set DNS的應用來方便設置

如果你的BS沒有root,請到這裡http://tieba.baidu.com/p/2187297656 下載符合你版本的root文件;結束所有HD-開頭的進程後覆蓋C:\ProgramData\BlueStacks\Android中的同名文件即可(win vista以下是在C:\Documents and Settings\All Users\Application Data\BlueStacks\Android下)