2009-08-24 11 views
7

मैं अपनी सभी साइटें ओएस 10.5.8 सर्वर पर PHP और MySQL के साथ विकसित करता हूं, और मैंने अपनी /etc/hosts और httpd.conf फ़ाइलों को उस मशीन पर किसी भी ब्राउज़र में example.dev पर प्रदर्शित करने के लिए कॉन्फ़िगर किया है।मैं एंड्रॉइड एसडीके एम्यूलेटर के साथ स्थानीय रूप से होस्ट की गई परियोजनाओं को कैसे देख सकता हूं?

मैंने हाल ही में एंड्रॉइड की सॉफ्टवेयर डेवलपमेंट किट स्थापित की है जिसे मैं मोबाइल वेबकिट पर लक्षित स्टाइलशीट को विकसित और परीक्षण करने के लिए उपयोग करना चाहता हूं - लेकिन मैं एंड्रॉइड ब्राउज़र में अपनी स्थानीय रूप से होस्ट की गई परियोजनाओं तक नहीं पहुंच सकता।

यह समझ में आता है, क्योंकि यह पूरे Android ओएस नकल है, लेकिन वहाँ एक समाधान है? या क्या मैं केवल उन परियोजनाओं का परीक्षण कर सकता हूं जो वास्तविक कंप्यूटर इंटरनेट पर कहीं भी मौजूद हैं, शायद एक छिपी हुई निर्देशिका में?

किसी ने सुझाव दिया है कि मैं अपने /etc/resolv.conf फ़ाइल को संपादित, लेकिन मैं resolv.conf में एक स्थानीय रूप से की मेजबानी की डोमेन फ़ॉर्मेट करने के लिए सही तरीका पता नहीं है - मैं निम्नलिखित के रूपांतरों की कोशिश की, और कुछ भी नहीं काम करता है:

domain example.dev 
nameserver 127.0.0.1 

या ...

domain example.dev 
nameserver localhost 

मेरी मेजबान फ़ाइल में, यह इस तरह की स्थापना की है:

127.0.0.1 localhost example.dev example2.dev [etc] 

उत्तर

2

मैंने स्थानीय नेटवर्क में कंप्यूटर आईपी पते का उपयोग करके इसी तरह के मुद्दे पर काम किया।

13

आप एंड्रॉयड एमुलेटर से URL में अपने मैक के आईपी पते का उपयोग करें और अपनी साइटों कि जिस तरह से उपयोग करने में सक्षम होने के लिए सक्षम होना चाहिए। बेशक, सुनिश्चित करें कि सिस्टम प्राथमिकताओं में साझाकरण के तहत वेब साझाकरण चालू है, और यह कि आपकी फ़ायरवॉल पते को अवरुद्ध नहीं कर रही है।

वैकल्पिक रूप से, आप वर्चुअल होस्ट आईपी पते, जो 10.0.2.2 है उपयोग कर सकते हैं। एम्यूलेटर चलाने पर यह हमेशा आपके होस्ट मैक पर मैप करेगा।

आप अपने URL में IP पते का उपयोग करना पसंद नहीं किसी कारण से, आप किसी भी नाम को संशोधित/etc/अपने एमुलेटर में मेजबान द्वारा चयन करने के लिए अपने मैक के आईपी पते को मैप कर सकते हैं। ऐसा करने के लिए, आप पहली बार फाइल सिस्टम पढ़ने-लिखने बनाएं, फिर अपने मैक के आईपी जोड़ सकते हैं और जो कुछ भी होस्ट नाम आप के लिए/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

मेरे पास एक ही प्रश्न था, और यह बिल्कुल सही प्रकार का उत्तर है जिसे मैं ढूंढ रहा था। दुर्भाग्य से, मैं इसे काम नहीं कर सकता। आदेश काम कर रहे प्रतीत होते हैं, लेकिन बाद में 'बिल्ली/आदि/मेजबान' दिखाता है कि नई लाइन वास्तव में लिखी नहीं गई है। कोई और विचार? – Spudley

+0

मुझे लगता है कि मैंने काम किया है कि मेरी समस्या क्या थी। मैं इसे एक नए उत्तर के रूप में पोस्ट करूंगा, क्योंकि यह एक टिप्पणी में फिट करने के लिए थोड़ा सा है। – Spudley

+0

मुझे यह प्राप्त करना अच्छा लगेगा कि मेरे सिम्युलेटर पर foo.dev स्थानीयहोस्ट हिट करता है: 3000 मेरे मैक पर। सही बात? – Marc

7

मैं इस एक ही मुद्दा रहा था। @ emmby का समाधान ऐसा लगता है कि मुझे वही करना चाहिए जो मुझे चाहिए, लेकिन आश्चर्यजनक रूप से यह काम नहीं कर रहा था। आदेश चलाए गए, लेकिन मेजबान फ़ाइल को देखते हुए बाद में दिखाया गया कि यह वास्तव में अपडेट नहीं किया जा रहा था।

लेकिन मैं थोड़ा और अधिक शोध किया था, और मैं बाहर काम किया है क्या समस्या थी।

मेरा मुख्य मुद्दा यह था कि नकली डिवाइस का ऑपरेटिंग सिस्टम पहले से ही 100% उपलब्ध स्टोरेज ले रहा था, इसलिए संपादन मेजबान फ़ाइल में नहीं लिखा जा रहा था। हालांकि कोई त्रुटि संदेश नहीं दिया गया था।

मेरा अनुमान है कि @emmby के पास यह समस्या नहीं थी क्योंकि समस्या एंड्रॉइड के संस्करण के आधार पर भिन्न होती है जिसे आपने एमुलेटर पर रखा था; कुछ संस्करण आपको काम करने के लिए कुछ खाली स्थान दे सकते हैं।

यदि आपको यह समस्या है, तो इसका समाधान एमुलेटर को अधिक संग्रहण के साथ शुरू करना है। यह emulator आदेश के लिए -partition-size तर्क के साथ किया जा सकता है, तो जैसे:

emulator -partition-size 128 @MyEmulatedDevice 

फिर आप adb -e shell आदेश का उपयोग करें और @ emmby के जवाब के अनुसार फ़ाइल को संपादित कर सकते हैं।

हालांकि, यदि खोल से फ़ाइल को संपादित करना दर्द होता है, तो 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 दोहराना और हर बार संपादन चरणों को दोहराना नहीं है; आप बस एमुलेटर शुरू कर सकते हैं, remount और push करें, और आप व्यवसाय में हैं।

आशा है कि मदद करता है।

1

android docs के अनुसार आप अपने एमुलेटर पर 10.0.2.2 का उपयोग कर अपने सिस्टम 127.0.0.1 आईपी का उपयोग कर सकते हैं जो आपके होस्ट लूपबैक इंटरफेस के लिए एक विशेष उपनाम है।

+1

यह वास्तव में 10.0.2.2 है, 10.0.0.2 – jeremy

+0

हाँ मेरे बुरे। जवाब संपादित किया। धन्यवाद! –

2

निम्नलिखित दो लिंक पर दिए गए निर्देशों का पालन करें:

http://www.codingonstilts.com/2012/04/android-emulator-hosts-file-entry.html (फ़ाइल के तल पर आईपी पते और होस्ट नाम और न्यू लाइन के बीच टैब पर ध्यान देना सुनिश्चित करें) मैंने किया था एक "[ SDKLOCATION]/प्लेटफार्म-टूल्स/एडीबी पुल/सिस्टम/इत्यादि/मेजबान WHATEVERHOSTFILENAME "मूल होस्टफाइल के प्रारूप को पहले देखने के लिए और उसके बाद इसे वापस धक्का देने के लिए उपयोग करें।

और फिर: मेरे लिए http://www.codingonstilts.com/2012/06/sync-os-x-hosts-file-to-android.html

वर्क्स - सौभाग्य !!

संबंधित मुद्दे