Ir al contenido principal

Dos herramientas muy útiles generando para Android

La versión Evolution 2 de Genexus incluye generadores para iOS (iPad, iPhone e iPod), Android (Galaxy, etc) y Blackberry (RIM).

Cuando se trabaja con nuevas tecnologías es importante contar con algunas herramientas que faciliten la tarea.

En este sentido hay dos que para mi han resultado muy útiles:



Capturar pantallas de la aplicación

El desarrollo lo hago con mi Galaxy conectado al USB de mi computadora, con eso el F5 (RUN) de Genexus copia y ejecuta el APK (la aplicación) directamente en el Galaxy.

Esto me ha resultado mucho más práctico que el emulador de Android: más ágil, más real, puedo usar más recursos del device que en el emulador no están disponibles, etc.

La ventaja que tenía el emulador es que al tener en la misma pantalla del PC la información, capturar una pantalla era muy sencillo (simplemente un print screen o el snipping de W7).

Eso hasta que encontré el "ddms" que es una tool que viene con el SDK de Android (bajo el directorio de android\tools).

Levanta una "consola" del device bastante interesante:



Entre las posibilidades está la de capturar la pantalla del Android y salvarla como un archivo.

Nota: Para el iPad uso la combinación de teclas de "print screen" y eso me lo envío por mail.

Debugging

Otra tool que me ha servido es el CatLog que es una aplicación para Android que permite leer el log del mismo, buscar, etc.

En el caso de aplicaciones Genexus, las mismas envian mensajes a ese log, por lo cual si ejecuto una aplicación registrará, entre otras cosas, un "getdata". Por lo cual busco ese "string" con esta herramienta, ahí obtengo el "process id" y luego puedo ver todos los mensajes de ese proceso (los mensajes que envió la aplicación Genexus).

Ese "tramo" de log lo puedo salvar, enviar por mail, etc.

¿Para qué lo he usado?

Por ejemplo: para ver qué servicios REST se están consumiendo, con qué parámetros, etc. Un ejemplo de un tramo de log:

URI='http://labs.genexus.com:8080/Vdir/rest/WorkWithDevicesCompany_Company_Section_General?CompanyId=13820&fmt=json'>
11-09 22:22:22.375 D/EntityService(566): Task DEQUEUE:
11-09 22:22:22.375 I/GeneXusApplication(566): GetData from http://labs.genexus.com:8080/Vdir/rest/WorkWithDevicesCompany_Company_Detail?CompanyId=13820&fmt=json


Entonces copiando esa misma URL (http://labs.genexus.com:8080/Vdir/rest/WorkWithDevicesCompany_Company_Detail?CompanyId=13820&fmt=json) en un Browser puedo ver qué está devolviendo el server.

Update 20/Abril

El logcat también se puede ejecutar con el emulador de Android.

Para hacerlo:

1. En un command prompt ejecutar:c:\directorio_donde_esta_SDK\platform-tools\adb logcat > log.txt
2. Ejecutar la aplicación (F5 en Genexus)
3. Cuando se quiera para el "log" se da Ctrl+C en el command prompt y "corta" el log

En el archivo log.txt queda toda la información.

Update 19/Junio (Si bien no tiene que ver con las herramientas dejo el Tip acá.)

Quería probar con Android 4.0, para eso instalé el SDK R18 y luego segui las instrucciones de este link:

http://software.intel.com/en-us/articles/intel-atom-x86-image-for-android-ice-cream-sandwich-installation-instructions-recommended/

Tip: Genexus levanta el emulador con MygxAvd pero si ya hay un device conectado usa el device y si antes se levanta una imagen (AVDManager) usa ese. De este modo si se quiere probar con diferentes versiones o AVDs simplemente se crean las mismas y antes de dar F5 en la KB se levanta la que se quiera usar.

Update 10/Abril/2014

El DDMS ha mejorado mucho en las nuevas versiones del SDK (22.3 en mi caso).

Hay otro tip que puede servir: para filtrar los mensajes de una aplicación Genexus lo que me ha dado mejor resultado es primero filtrar por "Genexus" (flecha roja) porque seguro algun mensaje incluye esa palabra, ahí identificar el Process Id (PID) (flecha azul):



Luego filtro por el proceso:



De este modo veo todos los mensajes de la aplicación (incluyan o no la palabra Genexus)

Update 28/Abril/2014

A partir del build 80088 de la Evolution 3 si se tiene un comando "msg("mi mensaje", status)", el mismo es enviado al output con lo cual queda en el logcat/ddms.

Nota: si la app es offline toda la lógica ejecuta en el device, si es online entonces esto funciona para los "user" y "control" events, para los "system" (load, refresh, etc) que se ejecutan en el server no quedan los msg en el log.

Update 08/06/2016 

Mucha agua ha corrido bajo el puente y en las nuevas versiones del SDK de Android (25) no existe más el DDMS así que uso el monitor.bat que ya venía en las anteriores y es bastante similar:

Tip: para ejecutarlo, al menos en W10, solo lo logré ejecutando un command prompt como administrador (run as administrator del cmd) y ahi ejecutarlo: C:\android-sdk-windows\tools>monitor

Comentarios

Entradas más populares de este blog

Liberar una versión: el fin del principio

Quienes desarrollamos software buscamos afectar positivamente la vida de las personas a través de nuestras aplicaciones. Ese es nuestro objetivo final, ese es nuestro éxito. Quienes desarrollamos , que ayuda a nuestros colegas en esa misión, solo tenemos éxito cuando ellos tienen éxito, por eso solemos decir que cuando liberamos una versión es "el fin del principio". Es un escalón fundamental, pero solo el primero. Tuve el privilegio de formar parte del equipo de y de su pero a su vez no he podido dedicarle tanto tiempo   como quisiera, casi no he podido  , ni  he podido leer. El mundo siguió girando, hay  , hay que me perdí y . Casi de casualidad me enteré del encuentro del a partir del 16/marzo en Montevideo. En cualquier caso: ¡el esfuerzo valió la pena!. Ahora que está siendo liberada en el   , hay que celebrar porque aplica aquello de "release is a feature". Podría tirarme en mi casa y estrenar mi  con una buena peli o sino aprovechar ir al un poco má...

El miedo, ese asesino silencioso

Hace unas semanas compré por Mercado Libre un tejido de alambre (de esos electrosoldados que se usan para cercos, pérgolas, etc) para armar una pérgola en casa. Como me suele pasar: compré de más. Así que decidí vender el resto del alambre por el mismo medio (Mercado Libre). Lo publiqué un Miércoles a las 13:00 y 4 horas después recibo un aviso de Mercado Libre que lo había vendido. Perfecto! Incluso lo había puesto al mismo precio x metro que la compra original así que notable! Revisé la compra y me pagó mediante Mercado Pago usando una tarjeta VISA, en fin, todo normal. Un rato después del aviso me llaman de un teléfono fijo al celular un tal Juan Rodriguez que coincidía con el nombre del comprador que me había llegado. Capitulo 1: ¡para qué abrís la boca! No sé cómo decir esto de un modo "políticamente correcto" pero la manera de expresarse parecía de alguien que no tenía un gran nivel de educación. Demasiado "lunfardo" para hablar con alguien que no con...

Sobre plomeros y sanitarios

Hace unos días estaba en casa de mi madre, quien sigue viviendo en la ciudad donde yo nací (Florida-Uruguay), cuando sonó el timbre. Fui a atender y me encontré con Martín, un ex compañero de liceo que hacía años no veía. Luego de preguntarle cómo andaba y el saludo de rigor, le pregunté que estaba haciendo por allí y me dijo "estoy trabajando aquí", ahí noté que venía con baldes y herramientas y recordé que es hijo del plomero que toda la vida trabajó en mi casa. El baño de mi madre estaba con problemas en la presión de agua así que llamó al plomero "tradicional" y este le comentó que estaba retirado pero que enviaría a su hijo. Allí pues estaba Martín. Es interesante encontrarse con compañeros de escuela/liceo que uno no ve hace muchos años, da para otro post seguramente. La cuestión es que seguimos conversando mientras él trabajaba. Le pregunté por el padre y me dijo que estaba bien pero ya medio cansado del trabajo y que nunca se había podido adaptar a los cambi...