模擬器網(wǎng)絡(luò)
這里說的模擬器渐苏,是 Google 官方模擬器技健。模擬器的網(wǎng)絡(luò)是獨(dú)立的,隱藏在虛擬路由器后面浪汪,使得模擬器可以通過開發(fā)機(jī)的網(wǎng)絡(luò)接口巴柿,但是看不到開發(fā)機(jī),當(dāng)然也看不到開發(fā)機(jī)網(wǎng)絡(luò)上的其他機(jī)器死遭。
虛擬路由器管理的網(wǎng)絡(luò)是 10.0.2/24广恢,其中,10.0.2.1是網(wǎng)關(guān)呀潭,也就是虛擬路由器自己钉迷;10.0.2.2映射到開發(fā)機(jī)的127.0.0.1,模擬器要訪問開發(fā)機(jī)的資源的話钠署,就需要訪問這個(gè)地址糠聪;10.0.2.15是模擬器自己的 ip,開發(fā)機(jī)訪問模擬器就通過這個(gè) ip谐鼎。
端口轉(zhuǎn)發(fā)
Android 開發(fā)文檔提供了兩種方式:使用模擬器控制臺舰蟆;使用 adb 工具。這兩種方法都是用的端口轉(zhuǎn)發(fā)的方式來通訊狸棍,但是 adb 的方式不能動態(tài)刪除一條轉(zhuǎn)發(fā)規(guī)則夭苗,所以這里不考慮。
模擬器控制臺端口
要使用模擬器控制臺隔缀,首先需要確定模擬器的端口题造。使用 adb 命令adb devices
,輸出:
List of devices attached
emulator-5554 device
端口即為 5554猾瘸。
使用 telnet 工具連接:
telnet localhost 5554
telnet 工具有點(diǎn)老了界赔,Windows 上默認(rèn)是隱藏的,需要通過設(shè)置才可以使用牵触,具體如何設(shè)置 Google 一下即可淮悼。
認(rèn)證
連接上控制臺后,會有提示說需要認(rèn)證揽思,并且認(rèn)證的方法頁在提示中說明了:
~ telnet localhost 5554
Trying ::1...
Connected to localhost.
Escape character is '^]'.
Android Console: Authentication required
Android Console: type 'auth <auth_token>' to authenticate
Android Console: you can find your <auth_token> in
'/Users/username/.emulator_console_auth_token'
OK
我用的是 macos袜腥,其他平臺大同小異。找到.emulator_console_auth_token
文件钉汗,把里面的字符串復(fù)制一下羹令,然后直接輸入:
auth gu9eE2s761qDJG4R
gu9eE2s761qDJG4R
即為.emulator_console_auth_token
文件中的auth_token。
認(rèn)證后损痰,輸入help
命令福侈,會列出所有能在模擬器控制臺中使用的命令。如果沒有認(rèn)證卢未,那么只有幾個(gè)基本命令可以使用肪凛。
端口轉(zhuǎn)發(fā)
接下來使用redir
命令添加端口轉(zhuǎn)發(fā)規(guī)則堰汉。如果在模擬器上的服務(wù)使用的是 8000 端口,在開發(fā)機(jī)上隨便選一個(gè)大于 1024 的端口進(jìn)行轉(zhuǎn)發(fā)(1024以下的端口需要權(quán)限)伟墙。
redir add tcp:3000:8000
redir
的使用語法是:redia (tcp|udp):hostport:guestport
翘鸭,支持 tcp 和 udp 協(xié)議的轉(zhuǎn)發(fā),后面第一個(gè)端口是開發(fā)機(jī)的端口戳葵,最后的是模擬器的端口就乓。
所以,添加上面的轉(zhuǎn)發(fā)規(guī)則后譬淳,要訪問模擬器上8000端口的服務(wù)档址,在開發(fā)機(jī)上訪問localhost:3000
就可以了。
redir 其他子命令
在模擬器控制臺運(yùn)行 redia
命令邻梆,會顯示能使用的子命令:
available sub-commands:
list list current redirections
add add new redirection
del remove existing redirection
- redir list: 查看當(dāng)前設(shè)置的轉(zhuǎn)發(fā)列表
- redia add: 增加一條轉(zhuǎn)發(fā)規(guī)則守伸,用法
redia (tcp|udp):hostport:guestport
- redia del: 刪除一條轉(zhuǎn)發(fā)規(guī)則,用法
redia (tcp|udp):hostport
退出
其實(shí)就是退出telnet
浦妄,直接輸入quit
或者exit
命令就可以退出尼摹。也可以按照 telnet 提示,使用快捷鍵ctrl~]
退到 telnet shell剂娄,再通過ctrl+d
或者quit
命令退出蠢涝。