簡體   English   中英

使用適用於Google App Engine的Cloud Endpoints對Android App進行本地測試

[英]Local testing for Android App using Cloud Endpoints for Google App Engine

我正在開發一款Android應用程序,該應用程序使用Google App Engine上的Google Cloud Endpoints(在Python中)作為其后端。 Android應用授權用戶在Android設備上使用Google Play服務,這一切都非常有效。

但是,既然我有實際用戶,我希望能夠在將任何應用引擎API更改部署到生產環境之前在本地進行全部測試,而且我還沒有想出如何讓Android應用與我的本地開發服務器通信任何地方。 測試建議表明我只是對API Explorer進行了一些手動修改,但由於我正在使用Endpoints Proto Datastore for my API,這使得Android開發變得簡單,它也使得API Explorer基本無用,因為我需要調用制作比我手工制作的復雜得多。

這個問題的一個答案表明,有一種方法可以將Android客戶端指向本地服務器,但是雖然我可以使用--host參數讓dev_appserver的默認服務器偵聽除localhost之外的其他東西,但我似乎無法找到一種方法為API服務器做同樣的事情。 即使我能做到這一點,它可能只是我的Android應用程序完整的端到端本地測試設置的第一步。

有人可以發布有關我如何做到這一點的更多細節,或者說沒有,請告訴我在App Engine上測試使用Google Cloud Endpoints的Android應用程序的最佳做法? 提前感謝您的任何答案。

好吧,終於搞定了,感謝提示,丹! 這些剩余的細節可以讓我節省幾個小時 - 希望這對其他人有幫助。

1)正如我之前所預期和前面提到的,dev_appserver.py需要使用--host = 0.0.0.0運行,以便它可以在本地網絡上偵聽。

2)為了正確解析ID令牌以使用戶身份驗證工作,您需要安裝PyCrypto庫 - 默認情況下不安裝它,所以只在app.yaml中使用它是不夠的。 我在這里找到了Windows的二進制文件。

3)然后,在我生成的Tictactoe.java等效類中,我必須將DEFAULT_ROOT_URL更改為http://<my-local-machine>:8080/_ah/api/ (這是我的本地機器運行的地方) ,以便請求進入本地網絡。 或者(也許可以更少侵入性),您可以使用builder.setRootUrl從初始化構建器的任何位置使用相同的地址。 這樣就不會破壞生成的類。

4)我還必須做出丹在這里描述的改變。

完成這四件事之后,現在一切似乎都在運行,我可以在本地測試我的應用程序 - 萬歲!

在本地環境中,dev_appserver是API服務器。 如果您已對其進行配置,以便可以從localhost以外的計算機(即網絡上的其他計算機/設備)訪問它,則也應該可以訪問API請求。

然而,有目前的問題與本地服務器和gzip壓縮的請求。 在修復之前,您需要在Android應用中的客戶端庫中禁用gzipping(請參閱此文章 )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM