1. 程式人生 > >android avd 連線外部伺服器的方法

android avd 連線外部伺服器的方法

開發android程式,通常會有網路連線,當我們使用模擬器(avd)執行需要網路許可權的app時候,需要注意以下兩點。
1、組網
avd連線到外部網路,通常存在兩種情況:avd與服務在同一臺機器上;avd與服務在不同的機器上。
1)avd與服務在同一臺機器上。這時候avd要連線伺服器,該用哪個IP地址呢?可能有人會想到127.0.0.1(localhost)。但是仔細想一想,avd是一個模擬器,相當於一個虛擬機器,localhost就連到了自己,這個是行不通的。avd是一個虛擬機器,相當於一臺獨立的機器,因此有自己獨立的網路IP地址。所以就常用的就是連線伺服器的外網(在這個區域網或internet上的)IP地址。
有人會問,我的伺服器是通過DHCP動態獲取IP地址的,且我得avd與伺服器在同一機器上,每次伺服器啟動得IP地址都不一致,那我每次都得修改app配置檔案中的IP地址?這個確實是一個麻煩事情,不過還好,avd提供了類似127.0.0.1的環回IP地址,其實是一個橋接地址更準確,他讓你能夠連線到執行avd的伺服器,這個IP地址就是10.0.2.2


2)avd與伺服器在不同的機器上。這種組網下只能連線伺服器的外網IP地址。

2、android app配置
網路通了之後,可能會遇到app連線伺服器失敗的問題,其錯誤是 ConnectionRefused,這種錯誤一般是IP能夠連通,但是連線某個特定的埠被拒絕了。仔細檢視其異常資訊,會發現有這麼一個資訊:

socket failed :EACCES (Permission denied)

沒有許可權。
這個是app沒有申請網路許可權,在app的 AndroidManifest.xml 檔案中,需要申請網路訪問許可權:

...
uses-permission android:name="android.permission.INTERNET"


...

加上許可權申請之後,就可以工作了。