5

के लिए क्लाउड एंडपॉइंट्स का उपयोग करके एंड्रॉइड ऐप के लिए स्थानीय परीक्षण मैं एक एंड्रॉइड ऐप विकसित कर रहा हूं जो Google बैक एंडपॉइंट्स (पायथन में) पर बैकएंड के लिए Google क्लाउड एंडपॉइंट्स का उपयोग करता है। एंड्रॉइड ऐप एंड्रॉइड डिवाइस पर Google Play सेवाओं का उपयोग कर उपयोगकर्ता को अधिकृत करता है, और यह सभी शानदार रूप से काम करता है।Google App Engine

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

this question का एक जवाब यह बताता है कि स्थानीय सर्वर पर एंड्रॉइड क्लाइंट को इंगित करने का एक तरीका है, लेकिन जब मैं dev_appserver का डिफ़ॉल्ट सर्वर स्थानीयहोस्ट के अलावा किसी अन्य चीज़ पर सुनता हूं, तो मैं ' प्रतीत होता है कि एपीआई सर्वर के लिए ऐसा करने का कोई तरीका नहीं है। और यहां तक ​​कि अगर मैं ऐसा कर सकता हूं, तो यह मेरे एंड्रॉइड ऐप के लिए पूर्ण अंत-टू-एंड स्थानीय परीक्षण सेटअप का पहला कदम हो सकता है।

क्या कोई इस बारे में अधिक जानकारी पोस्ट कर सकता है कि मैं इसे कैसे कर सकता हूं, या उससे कम, कृपया ऐप इंजन पर Google क्लाउड एंडपॉइंट्स का उपयोग करने वाले एंड्रॉइड ऐप्स का परीक्षण करने के लिए सर्वोत्तम प्रथाओं पर मुझे प्रबुद्ध करें? किसी भी जवाब के लिए अग्रिम धन्यवाद।

उत्तर

2

स्थानीय वातावरण में, dev_appserver एपीआई सर्वर है। यदि आपने इसे कॉन्फ़िगर किया है ताकि यह स्थानीयहोस्ट (यानी नेटवर्क पर किसी अन्य मशीन/डिवाइस) के अलावा मशीनों से पहुंच योग्य हो। API अनुरोधों को भी सुलभ किया जाना चाहिए।

हालांकि, स्थानीय सर्वर और gzipped अनुरोधों के साथ वर्तमान में issue है। जब तक कि यह तय नहीं हो जाता है, आपको अपने एंड्रॉइड ऐप में क्लाइंट लाइब्रेरी के भीतर gzipping को अक्षम करने की आवश्यकता होगी (यह post देखें)।

8

ठीक है, अंततः यह काम कर रहा है, सुझावों के लिए धन्यवाद, दान! यहां शेष विवरण हैं जो मुझे कुछ घंटों बचाएंगे - उम्मीद है कि यह किसी और के लिए सहायक होगा।

1) जैसा कि मैंने पहले अपेक्षित और उल्लेख किया था, dev_appserver.py को --host = 0.0.0.0 के साथ चलाने की आवश्यकता है ताकि यह स्थानीय नेटवर्क पर सुन सके।

2) उपयोगकर्ता प्रमाणीकरण कार्य करने के लिए आईडी टोकन को सही तरीके से पार्स करने के लिए, आपको PyCrypto लाइब्रेरी स्थापित करने की आवश्यकता है - यह डिफ़ॉल्ट रूप से स्थापित नहीं है, इसलिए इसे अपने ऐप में रखना है। Yaml पर्याप्त नहीं है । मुझे विंडोज here के लिए बाइनरी मिलीं।

3) फिर, मेरे जेनरेट किए गए Tictactoe.java- समकक्ष वर्ग में, मुझे DEFAULT_ROOT_URL को http://<my-local-machine>:8080/_ah/api/ (जहां मेरी स्थानीय मशीन चल रही है) को बदलना पड़ा, ताकि अनुरोध स्थानीय नेटवर्क पर जाएं। वैकल्पिक रूप से (और शायद कम आक्रामक), आप जहां भी आप अपने निर्माता को प्रारंभ करते हैं, उसी स्थान पर builder.setRootUrl का उपयोग कर सकते हैं। इस तरह आप अपने जेनरेट किए गए वर्गों के साथ नहीं मिलते हैं।

4) मुझे परिवर्तन को भी बदलना पड़ा Dan here का वर्णन किया गया।

उन चार चीजों को करने के बाद, सबकुछ अब काम कर रहा है और मैं स्थानीय रूप से अपने ऐप का परीक्षण कर सकता हूं - हुरेय!

+0

धन्यवाद, मेरा दिन बचाया! –