2009-08-24 22 views
7

我使用PHP和MySQL在OS 10.5.8服務器上開發了我的所有站點,並且我配置了我的/etc/hostshttpd.conf文件,以在該計算機的任何瀏覽器中顯示我的站點​​。如何使用Android SDK模擬器查看本地託管的項目?

我最近安裝了Android的軟件開發工具包,我想用它來開發和測試針對移動Webkit的樣式表 - 但我無法在Android瀏覽器中訪問我的本地託管項目。

這是有道理的,因爲它模擬整個Android操作系統,但有沒有解決方法?或者我可以只測試實際計算機互聯網上某處存在的項目,可能是隱藏的目錄?

有人建議我修改我的/etc/resolv.conf文件,但我不知道正確的方式在resolv.conf格式化本地託管域 - 我嘗試以下的變化,並沒有什麼作品:

domain example.dev 
nameserver 127.0.0.1 

還是......

domain example.dev 
nameserver localhost 

在我的hosts文件,它被設置這樣的:

127.0.0.1 localhost example.dev example2.dev [etc] 

回答

2

我在本地網絡中使用計算機IP地址解決了類似的問題。

13

你應該能夠在android模擬器的URL中使用你的mac的IP地址,並且能夠以這種方式訪問​​你的網站。當然,請確保Web共享在「系統偏好設置中的共享」下打開,並且防火牆不阻止該地址。

或者,您可以使用虛擬主機IP地址10.0.2.2。在運行模擬器時,這將始終映射到您的主機mac。

如果出於某種原因,您不希望在您的URL中使用IP地址,則可以通過修改模擬器中的/ etc/hosts來將Mac的IP地址映射到您選擇的任何名稱。要做到這一點,你需要先進行文件系統讀寫,再加入Mac的IP和任何主機名要在/ etc/hosts文件:

adb -e shell 
# mount -o remount,rw -t yaffs2 /dev/block/mtdblock0 /system 
# echo '10.0.2.2  cat-yodeling.local' >> /etc/hosts 

然後訪問「http://cat-yodeling.local」從你的瀏覽器。你應該很好走。

+0

我有同樣的問題,這正是我正在尋找的答案。不幸的是,我無法讓它工作。這些命令似乎正在工作,但之後的「cat/etc/hosts」顯示新行尚未寫入。還有什麼想法? – Spudley 2011-07-15 10:42:15

+0

我想我已經弄清楚我的問題是什麼。我會把它作爲一個新的答案發布,因爲它太適合評論。 – Spudley 2011-07-15 11:23:57

+0

我很想得到它,以便我的模擬器上的foo.dev在我的mac上點擊localhost:3000。合理? – Marc 2014-05-30 18:08:34

7

我有這個問題。 @ emmby的解決方案聽起來應該像我所需要的那樣完成,但奇怪的是它似乎並不奏效。這些命令運行了,但之後查看主機文件顯示它並未實際更新。

但是我做了一些更多的研究,並找出問題所在。

我遇到的核心問題是模擬設備的操作系統已佔用100%的可用存儲空間,因此編輯沒有寫入主機文件。但是,也沒有給出任何錯誤消息。

我的猜測是,@emmby沒有這個問題的原因是因爲這個問題取決於你放在模擬器上的Android版本,有些版本可能會爲您提供一些可用空間。

如果你確實有這個問題,解決方法是用更多的存儲啓動模擬器。這可以通過-partition-size參數進行了emulator命令,就像這樣:

emulator -partition-size 128 @MyEmulatedDevice 

然後,您可以使用adb -e shell命令和編輯文件,按@ emmby的答案。

但是,如果從shell編輯文件是件痛苦的事情,adb也會爲您提供將其從仿真器複製到主機操作系統的功能,在本地進行編輯並將其複製回來。它還處理重新安裝。你會這樣做:

adb pull /system/etc/hosts C:\wherever\you\want\to\save\it 

然後編輯它在你最喜歡的編輯器。

然後重新安裝模擬器讀/寫模式,並將該文件複製回:

adb remount 
adb push C:\wherever\you\saved\hosts /system/etc/hosts 

注意,由於仿真器重置爲默認狀態,當你重新啓動,這可能是一個更好的解決方案,因爲你可以在本地保存編輯好的文件,所以你不必每次重複adb pull和編輯步驟;您可以簡單地啓動模擬器,執行remountpush,然後開始工作。

希望有所幫助。

1

根據android docs,您可以使用模擬器上的10.0.2.2訪問您的系統127.0.0.1 IP,該模擬器是主機回送接口的特殊別名。

+1

它實際上是10.0.2.2,而不是10.0.0.2 – jeremy 2013-09-13 13:54:47

+0

是的,我的壞。編輯答案。謝謝! – 2013-09-17 06:03:19

2

按照以下兩個鏈接的說明:

http://www.codingonstilts.com/2012/04/android-emulator-hosts-file-entry.html(確保在文件的底部,注意IP地址和主機名和新行之間的標籤) 我做了「[ SDKLOCATION]/platform-tools/adb pull/system/etc/hosts WHATEVERHOSTFILENAME「首先查看原始主機文件的格式,然後使用它將其推回。

然後: http://www.codingonstilts.com/2012/06/sync-os-x-hosts-file-to-android.html

對我的作品 - 祝你好運!

相關問題