5

Sto sviluppando un'applicazione Android che utilizza Google Cloud Endpoint su Google App Engine (in Python) per il suo back-end. L'app Android autorizza l'utente che utilizza Google Play Services sul dispositivo Android e tutto funziona in modo fantastico.Test locale per app Android utilizzando Cloud Endpoint per Google App Engine

Tuttavia, ora che ho utenti effettivi, vorrei poter testare tutto questo localmente prima di distribuire le modifiche all'API del motore delle app in produzione, e non ho capito come far parlare l'app Android il mio server di sviluppo locale ovunque. Il testing recommendations suggerisce che faccio solo un po 'di manual branding con API Explorer, ma visto che sto usando Endpoint Proto Datastore per la mia API, il che rende facile lo sviluppo di Android, rende fondamentalmente inutile l'API Explorer, poiché le chiamate che ho bisogno di rendere è molto più complicato di quello che posso generare a mano.

Una risposta a this question suggerisce che esiste un modo per puntare il client Android sul server locale, ma mentre posso usare l'argomento --host per fare in modo che il server predefinito del server dev_appserver ascolti qualcosa di diverso da localhost, posso farlo t sembra trovare un modo per fare lo stesso per il server API. E anche se potessi farlo, potrebbe essere solo il primo passo verso una completa configurazione di test locale end-to-end per la mia app per Android.

Qualcuno può pubblicare ulteriori dettagli su come potrei fare questo, o in caso contrario, per favore illuminami sulle best practice per testare le app Android che utilizzano Google Cloud Endpoints su App Engine? Grazie in anticipo per le risposte.

risposta

2

Nell'ambiente locale, dev_appserver è il server API. Se lo hai configurato in modo che sia accessibile da macchine diverse da localhost (vale a dire un'altra macchina/dispositivo sulla rete) anche le richieste API dovrebbero essere accessibili.

Tuttavia, attualmente c'è un issue con il server locale e richieste gzip. Fino a quando non sarà risolto, dovrai disabilitare gzipping all'interno della libreria client nell'app per Android (vedi questo post).

8

OK, finalmente ha funzionato, grazie per i suggerimenti, Dan! Ecco i dettagli rimanenti che mi avrebbero risparmiato un paio d'ore - spero che questo sia utile a qualcun altro.

1) Come previsto e menzionato in precedenza, dev_appserver.py deve essere eseguito con --host = 0.0.0.0 in modo che possa essere ascoltato sulla rete locale.

2) Per poter analizzare correttamente il token ID per far funzionare l'autenticazione dell'utente, è necessario avere la libreria PyCrypto installata - non è installata di default, quindi non è sufficiente averla nella propria app.yaml . Ho trovato i binari per Windows here.

3) Quindi, nella mia classe equivalente Tictactoe.java-equivalente, ho dovuto modificare il DEFAULT_ROOT_URL per essere http://<my-local-machine>:8080/_ah/api/ (che è dove è in esecuzione la mia macchina locale), in modo che le richieste siano state inviate alla rete locale. In alternativa (e forse in modo meno invasivo), puoi utilizzare builder.setRootUrl allo stesso indirizzo da qualsiasi punto di inizializzazione del builder. In questo modo non muck con le classi generate.

4) Ho dovuto anche fare il cambio Dan menzionato descritto here.

Dopo aver fatto queste quattro cose, tutto sembra funzionare e ora posso testare la mia app localmente - evviva!

+0

grazie, mi ha salvato la giornata! –

Problemi correlati