Varias veces esta semana hemos visto que esta técnica es común en quienes trabajan con GeneXus Evolution 2 y la plataforma iOS.
Los escenarios eran variados pero la realidad era:
"Compile contra mi MAC1 y ejecuta la aplicación bien, copie el proyecto Xcode a otra MAC2 y me da muchos errores de referencia"
Cuando GeneXus envía a compilar a una MAC no solo transfiere el proyecto Xcode y las imágenes, metadata (y todo los que se puede ver desde el Xcode), sino también, transfiere un Framework a esa MAC. Este Framework o Flexible Client es necesario al momento de ejecutar las aplicaciones iOS.
Entonces, ¿cómo hacemos para poder ejecutar un proyecto XCode en mi MAC2 que GeneXus no tiene acceso?
a. En MAC1 abrir un Finder
b. Ejecutar las siguientes teclas: COMMAND + Shift + G
c. En ese Prompt poner: ~/Library
d. Presionar GO
e. Esto abrirá la carpeta oculta Library. Allí debería haber una carpeta llamada Artech, copiarla.
d. Pegar esa caperta en la carpeta Library de MAC2 siguiendo los mismos pasos (a-d) para encontrarla.
De esa manera se solucionan los problemas de referencia.
NOTA: tener sumo cuidado si se trabaja con dos versiones de GeneXus distintas en simultaneo contra MAC1 ya que este framework cambia con el build de GeneXus.
jueves, 29 de noviembre de 2012
miércoles, 21 de noviembre de 2012
Optimización de llamadas dinámicas
Cuando programamos una aplicación para Smart Devices en GeneXus tenemos la posibilidad de utilizar llamadas dinámicas a objetos, lo que nos brinda una gran flexibilidad a la hora de desarrollar las funcionalidades de la aplicación.
Por ejemplo, podemos tener en un evento algo como lo siguiente :
Event 'MiEvento'
Composite
&objectName = GetObjectToCall.udp(¶m1, ¶m2)
call(&objectName)
EndComposite
EndEvent
donde &objectName es una variable Character y GetObjectToCall es un procedimiento donde resolvemos la lógica sobre que objetos llamar.
Este esquema si bien nos trae muchas ventajas a la hora de desarrollar, tiene una desventaja importante y es que necesita procesamiento "server side" para determinar a que objeto llamar. O sea, si o si se necesita conectarse al servidor para continuar con la ejecución de la aplicación, no teniendo efecto el caché por ejemplo y haciendo que cualquier problema con la conexión haga que la aplicación deje de funcionar.
Por ejemplo, podemos tener en un evento algo como lo siguiente :
Event 'MiEvento'
Composite
&objectName = GetObjectToCall.udp(¶m1, ¶m2)
call(&objectName)
EndComposite
EndEvent
donde &objectName es una variable Character y GetObjectToCall es un procedimiento donde resolvemos la lógica sobre que objetos llamar.
Este esquema si bien nos trae muchas ventajas a la hora de desarrollar, tiene una desventaja importante y es que necesita procesamiento "server side" para determinar a que objeto llamar. O sea, si o si se necesita conectarse al servidor para continuar con la ejecución de la aplicación, no teniendo efecto el caché por ejemplo y haciendo que cualquier problema con la conexión haga que la aplicación deje de funcionar.
miércoles, 24 de octubre de 2012
Captura de pantalla en OS X
Este tip no es de GeneXus ni de las plataformas de smart devices, sino que aplica a Mac OS X. Creo que de todas formas es útil para la comunidad GeneXus, porque en general somos usuarios Windows que nos enfrentamos por primera vez a OS X al querer compilar una aplicación iOS.
Existen varias combinaciones de teclas que permiten capturar imágenes de pantalla, que vienen de forma nativa en OS X.
Existen varias combinaciones de teclas que permiten capturar imágenes de pantalla, que vienen de forma nativa en OS X.
- Para capturar toda la pantalla, presionar ⌘^3 (Command-Shift-3)
=> Saca una foto de la pantalla y guarda la imagen en el escritorio. Si hay más de un monitor, saca una foto de cada uno.
- Para capturar una parte de la pantalla, presionar ⌘^4 (Command-Shift-4)
=> Cambia el cursor, aparece una cruz con las coordenadas de la pantalla, y si seleccionamos una región guarda la foto de esa zona de la pantalla en el escritorio.
- Para capturar una ventana en particular, presionar ⌘^4 (Command-Shift-4) y luego Espacio
=> Cambia el cursor mostrando una cámara de fotos, y pinta de celeste la ventana sobre la cual posiciono el cursor. Al hacer click, guarda una imagen de la ventana seleccionada en el escritorio. Una cosa interesante es que funciona aunque la ventana esté parcialmente oculta y no tenga el foco, es decir, aunque haya otra ventana que la tapa parcialmente, la captura es de toda la ventana que seleccioné.
viernes, 19 de octubre de 2012
Diseño de UX en Smart Devices: un par de charlas que son un "must"
El tema del Diseño de la UI (User Interface) o de la UX (User Experience) es importante. En el caso de los Smart Devices (Tabletas y celulares) es un "must".
Una parte importante del éxito de estos dispositivos son las aplicaciones y su integración con el mismo, no solo a nivel de funcionalidad sino a nivel de UX.
Estas dos charlas del XXII Encuentro Genexus creo que aportan sobre el QUE y el COMO desarrollar aplicaciones con una buena UX.
Lo que me parece especialmente valioso de ambas es que partieron de un marco teórico y luego probaron/ajustaron ese marco al utilizarlo en varias proyectos diferentes. De este modo lograron algo simple y que funciona.
jueves, 11 de octubre de 2012
Carga dinámica de clases para las filas de una grilla
Veamos un ejemplo de carga dinámica de clases en una grilla,
de modo de tener una estética diferente en cada línea de la misma.
El ejemplo es la aplicación para Smart Devices del XXII Encuentro GeneXus (disponible para iOS y Android).
Las distintas charlas
tienen asociados uno o varios tracks,
los cuales además se identifican con un color.
Se quiere que en cada línea, aparezca una barra del color asociado al track a la izquierda y que el texto del track y de los oradores también aparezca
de dicho color.
Beneficios de plataforma Samsung
Los siguientes son beneficios que experimentamos con Pesobook(*) en la plataforma Samsung hasta el momento:
1) Samsung Apps
Todo dispositivo Android de Samsung trae instalada de fábrica una app llamada Samsung Apps. Es la app que permite bajar e instalar aplicaciones desde el market http://www.samsungapps.com; así como existe la de Google Play para bajarse las apps de https://play.google.com/store.Hace unos meses, para probar su efectividad, subimos la versión Android nativa de Pesobook a samsung apps.
El proceso para la aprobación y publicación consta de varias etapas, incluyendo test manual de Samsung que dura unos días, así que es similar al de Apple.
Por lo engorroso que era el proceso de publicación de apps en ese momento, solamente subimos la app para el Samsung Galaxy S3 (Samsung obligaba a subir un apk por cada modelo - eso últimamente cambió).
Aún así, ahora la app tiene 1700 downloads en Samsung Apps, eso es 10% del total sabiendo que en Google play tenemos 15000 downloads.
Para registrarse y subir apps a Samsung Apps: http://seller.samsungapps.com
Pesobook en Samsung Apps: http://www.samsungapps.com/topApps/topAppsDetail.as?productId=G00006528024
2) Remote Test Lab (RTL)
Permite probar via web, en forma remota, aplicaciones Android en los dispositivos de Samsung.Esto, dada la alta fragmentación de Android , es un recurso que nos resultó útil para probar las apps remotamente en dispositivos de distintos tamaños y con distintas compilaciones de Android y así anticiparnos y evitar experiencias y comentarios negativos de nuestros usuarios.
Cómo funciona:
Entrar con chrome a http://rtl.innovator.samsungmobile.com, crearse usuario, etc.
Seleccionar un dispositivo y versión y reservarlo, dar start y entonces baja un applet.
Se ejecuta el applet y se abre una pantalla con el dispositivo
Con botón derecho se tiene un menu para subir una app, y otras cosas.
probar la app...
Requerimientos:
chrome
java 1.6,
salida a puerto 2600 a IPs de 217.67.201.{228,229,230}.
Links: http://developer.samsung.com/remoteTestLab.do
http://rtl.innovator.samsungmobile.com
------------------------------------------------------------------------
(*) Acerca de Pesobook:
Pesobook es un proyecto, una aplicación para iOS, Android y Web que permite llevar el control de su peso en forma fácil y rápida. Ver http://showcase.genexus.com/app.aspx?pesobook
miércoles, 10 de octubre de 2012
Forzar al usuario a actualizar la aplicación
Hace algunos días explicábamos como hacer para actualizar una aplicación sin tener que volver a compilar. En esta oportunidad, queremos el caso inverso: la aplicación cambió demasiado como para seguir ejecutando con la versión anterior, y quiero que el usuario que ya la tiene instalada tenga que actualizarla.
En este caso entonces, tenemos ya una nueva versión en el market. Es importante este punto, porque si la aplicación no está disponible aún, el usuario no podrá ejecutar la versión anterior, pero tampoco podrá obtener la aplicación nueva.
El mecanismo es similar al explicado en la nota anterior, y también está documentado en el Wiki. En este caso, lo que debemos cambiar para que fuerce a actualizar, es simplemente el major version de la aplicación.
En este caso entonces, tenemos ya una nueva versión en el market. Es importante este punto, porque si la aplicación no está disponible aún, el usuario no podrá ejecutar la versión anterior, pero tampoco podrá obtener la aplicación nueva.
El mecanismo es similar al explicado en la nota anterior, y también está documentado en el Wiki. En este caso, lo que debemos cambiar para que fuerce a actualizar, es simplemente el major version de la aplicación.
viernes, 21 de septiembre de 2012
Actualizar la aplicación sin volver a compilar
Algunas veces, ya teniendo la aplicación compilada y subida a los markets, nos vemos en la necesidad de hacerle algún cambio que tal vez no sea demasiado grande.
La primer alternativa que surge es volver a compilar la aplicación y volver a subirla a los markets. El problema que tiene esto, sobre todo con Apple, es que el proceso puede ser complejo y lleva tiempo.
Para las aplicaciones generadas con GeneXus, tenemos una alternativa que puede ser mejor.
En GeneXus X Evolution 2, las aplicaciones de Smart Devices se componen de dos partes: los binarios de la aplicación y la metadata. Los binarios no cambian (a menos que se cambie la versión de GX), lo que cambia entre aplicaciones es la metadata.
La metadata tiene la información de los layouts (es decir que elementos hay en pantalla y como se muestran), acciones (tanto la action bar como el código de los eventos), los datos que tiene cada proveedor de datos de las pantallas, los temas, etc.
Esta metadata es interpretada por el KBN cuando se usa para prototipar, pero también es interpretada por la aplicación compilada. La diferencia entre los dos métodos es que el KBN siempre busca la metadata en el servidor, mientras que la aplicación compilada usa la metadata local.
El procedimiento entonces para actualizar la aplicación sin tener que volver a compilar, es lograr que la aplicación compilada lea la nueva metadata. La forma de hacerlo está explicada en el Wiki, así que no lo voy a repetir acá... pero consiste en cambiar el minor version de la aplicación para que esta se entere que tiene un cambio.
La primer alternativa que surge es volver a compilar la aplicación y volver a subirla a los markets. El problema que tiene esto, sobre todo con Apple, es que el proceso puede ser complejo y lleva tiempo.
Para las aplicaciones generadas con GeneXus, tenemos una alternativa que puede ser mejor.
En GeneXus X Evolution 2, las aplicaciones de Smart Devices se componen de dos partes: los binarios de la aplicación y la metadata. Los binarios no cambian (a menos que se cambie la versión de GX), lo que cambia entre aplicaciones es la metadata.
La metadata tiene la información de los layouts (es decir que elementos hay en pantalla y como se muestran), acciones (tanto la action bar como el código de los eventos), los datos que tiene cada proveedor de datos de las pantallas, los temas, etc.
Esta metadata es interpretada por el KBN cuando se usa para prototipar, pero también es interpretada por la aplicación compilada. La diferencia entre los dos métodos es que el KBN siempre busca la metadata en el servidor, mientras que la aplicación compilada usa la metadata local.
El procedimiento entonces para actualizar la aplicación sin tener que volver a compilar, es lograr que la aplicación compilada lea la nueva metadata. La forma de hacerlo está explicada en el Wiki, así que no lo voy a repetir acá... pero consiste en cambiar el minor version de la aplicación para que esta se entere que tiene un cambio.
miércoles, 29 de agosto de 2012
Deploy to cloud: ¿qué se transfiere?
En Genexus Evolution 2 existe la posibilidad de prototipar en la nube con un solo click con esa caracteristica se puede desarrollar una aplicación Web y/o SD y disponibilizarla inmediatamente a todo el mundo.
miércoles, 22 de agosto de 2012
Descripción de errores en la nube apps3.genexusx.com
En aplicaciones .Net cuando se prototipa en la nube de Artech (apps3.genexusx.com) los errores ocurren y nosotros no sabemos como hacer para solucionarlos.
Esto es porque en el web.config que GeneXus genera para hacer el deploy to cloud no esta configurado para que se muestre los errores en el navegador.
Esto es porque en el web.config que GeneXus genera para hacer el deploy to cloud no esta configurado para que se muestre los errores en el navegador.
Un tip que a mi me sirvio para debuguear estas aplicaciones es poder modificar el web.config local antes de hacer un f5 y que lo envie.
En realidad, es facil saber como configurar un web.config para que los errores sean mostrados, basta entrar a este link: (primer hit de google) http://forums.asp.net/t/1267844.aspx/1
En realidad, es facil saber como configurar un web.config para que los errores sean mostrados, basta entrar a este link: (primer hit de google) http://forums.asp.net/t/1267844.aspx/1
Pero el truco es que GeneXus con cada F5 sobreescribe el web.config excepto esa porcion del archivo. Esto fue una sorpresa y me sirvió bastante.
Entonces lo que se debe hacer es incluir en el web.config dentro del <system.web> el tag <customErrors mode="Off">
Entonces lo que se debe hacer es incluir en el web.config dentro del <system.web> el tag <customErrors mode="Off">
viernes, 17 de agosto de 2012
Editar iconos rápido y simple en Mac
Algo que tuve que hacer hace poco fue editar imágenes usadas en el menu tipo tabs de una aplicación porque no se veían muy bien.
La imagen original es:

En la aplicación se veía:

Unos compañeros de Artech (departamento de desarrollo) me ayudaron a responder las siguientes preguntas...
La imagen original es:

En la aplicación se veía:
Unos compañeros de Artech (departamento de desarrollo) me ayudaron a responder las siguientes preguntas...
martes, 14 de agosto de 2012
Imágenes "retina" en iPhone y iPad
En los últimos modelos de iPhone (4 y 4s) y iPad (tercera generación), la pantalla tiene una característica que Apple llamó "retina display".
Básicamente lo que tienen las pantallas "retina" son muchos más pixeles en la misma superficie. En el caso del iPhone, la pantalla pasa de ser de 320x480 a ser de 640x960 en el mismo espacio. Para el iPad, pasa de ser de 768x1024 a 1536x2048.
Sin embargo a pesar de tener más resolución, no cambia el tamaño de la pantalla en dips, que sigue siendo de 320x480 y 768x1024 para iPhone y iPad respectivamente. Esto explica por que en GeneXus usamos dips (device independent pixels) en lugar de pixeles...
Las imágenes que están pensadas para las pantallas de los dispositivos anteriores, se ven borrosas en pantallas "retina". A su vez, si se usan imágenes más grandes, van a ocupar más espacio que el deseado.
Básicamente lo que tienen las pantallas "retina" son muchos más pixeles en la misma superficie. En el caso del iPhone, la pantalla pasa de ser de 320x480 a ser de 640x960 en el mismo espacio. Para el iPad, pasa de ser de 768x1024 a 1536x2048.
Sin embargo a pesar de tener más resolución, no cambia el tamaño de la pantalla en dips, que sigue siendo de 320x480 y 768x1024 para iPhone y iPad respectivamente. Esto explica por que en GeneXus usamos dips (device independent pixels) en lugar de pixeles...
Las imágenes que están pensadas para las pantallas de los dispositivos anteriores, se ven borrosas en pantallas "retina". A su vez, si se usan imágenes más grandes, van a ocupar más espacio que el deseado.
lunes, 13 de agosto de 2012
Lista con Break By alfabético
Supongamos que tenemos la necesidad de tener una lista agrupada y ordenada por orden Alfabético, como por ejemplo la lista de contactos de nuestro celular.
En Genexus podemos lograr el mismo comportamiento gracias a las diferentes opciones que nos ofrece el tab Conditions

En Genexus podemos lograr el mismo comportamiento gracias a las diferentes opciones que nos ofrece el tab Conditions

sábado, 4 de agosto de 2012
Generar imagenes con el "marco" del Device
Muchas veces se desarrolla un sitio o algun tipo de promoción de las aplicaciones para Smart Devices. En ese sitio se suelen usar imágenes (print screen) de la aplicación en cuestión, las cuales quedan mucho mejor si se usan con el "marco" del dispositivo (iPhone, iPad, Galaxy, etc).
Capturar las pantallas es un trabajo bastante sencillo pero incluirlas dentro del marco implica la edición de la imagen y algo más de trabajo
La gente de MailChimp brinda un servicio al cual uno le envía un mail con las imagenes sin marco, en el subject el device que se quiere ("iphone" por ejemplo) y recibe en unos minutos las imágenes que envió pero dentro de los marcos del device que uno haya elegido
Capturar las pantallas es un trabajo bastante sencillo pero incluirlas dentro del marco implica la edición de la imagen y algo más de trabajo
La gente de MailChimp brinda un servicio al cual uno le envía un mail con las imagenes sin marco, en el subject el device que se quiere ("iphone" por ejemplo) y recibe en unos minutos las imágenes que envió pero dentro de los marcos del device que uno haya elegido
jueves, 26 de julio de 2012
iOS: Ver interacción entre dispositivo y servidor
Cuando estamos intentando rastrear un problema en una aplicación SD, muchas veces es útil contar con un registro de la interacción entre el dispositivo y el servidor.
En iOS, esto se puede hacer de forma bastante simple con la aplicación Knowledge Base Navigator (o KBN).
El log está deshabilitado por defecto. Para habilitarlo, debemos ir a la aplicación de Ajustes del dispositivo...
... buscar las preferencias del KBN, y en Advanced, prender el check "Enable Log" y todos los que están en la sección "Log Customization".
Una vez hecho esto, volvemos a la aplicación del KBN, y en la pantalla inicial vamos a ver un nuevo botón que dice "View Log".
¿Qué cosas se pueden ver en este log? Todos los "requests" que haga el dispositivo al servidor con los datos que le manda, y todas las respuestas del servidor con los datos que le devuelve.
No sirve para solucionar todos los problemas, pero muchas veces sirve para darse cuenta de lo que está pasando. Por ejemplo, si una variable no está inicializada, o si no se están pasando los parámetros correctos a un objeto.
En iOS, esto se puede hacer de forma bastante simple con la aplicación Knowledge Base Navigator (o KBN).
El log está deshabilitado por defecto. Para habilitarlo, debemos ir a la aplicación de Ajustes del dispositivo...
... buscar las preferencias del KBN, y en Advanced, prender el check "Enable Log" y todos los que están en la sección "Log Customization".
Una vez hecho esto, volvemos a la aplicación del KBN, y en la pantalla inicial vamos a ver un nuevo botón que dice "View Log".
¿Qué cosas se pueden ver en este log? Todos los "requests" que haga el dispositivo al servidor con los datos que le manda, y todas las respuestas del servidor con los datos que le devuelve.
No sirve para solucionar todos los problemas, pero muchas veces sirve para darse cuenta de lo que está pasando. Por ejemplo, si una variable no está inicializada, o si no se están pasando los parámetros correctos a un objeto.
miércoles, 25 de julio de 2012
Evitar el giro de la pantalla
Los Smart Devices nos brindan la posibilidad de rotar el contenido de la pantalla al girar el dispositivo para poder tener una vista diferente, ampliada o mejorara del contenido de las aplicaciones.
Cuando desarrollamos aplicaciones para Smart Devices, incluso podemos implementar comportamientos diferentes de la aplicación según la "posición" en que esté el dispositivo. En GeneXus esto se hace a través de los diferentes tipos de Layout que se pueden definir en un panel, pudiendo definir Layouts diferentes según la orientación del dispositivo (Portrait, Landscape), además de para las diferentes plataformas y tamaños.
A veces pasa lo contrario, que no queremos que el contenido de la pantalla rote, porque esto hace que el diseño de la misma no quede muy agradable.
Cuando desarrollamos aplicaciones para Smart Devices, incluso podemos implementar comportamientos diferentes de la aplicación según la "posición" en que esté el dispositivo. En GeneXus esto se hace a través de los diferentes tipos de Layout que se pueden definir en un panel, pudiendo definir Layouts diferentes según la orientación del dispositivo (Portrait, Landscape), además de para las diferentes plataformas y tamaños.
A veces pasa lo contrario, que no queremos que el contenido de la pantalla rote, porque esto hace que el diseño de la misma no quede muy agradable.
viernes, 20 de julio de 2012
Colores transparentes
Cuando queremos que un elemento de nuestra aplicación tenga un determinado color,
establecemos ese color utilizando algún código, un valor hexadecimal, un valor
expresado como RGB() o una palabra que lo identifica, por ejemplo:
- Color: #FF0000;
- Color: rgb(255,0,0);
- Color: rgb(100%,0%,0%);
- Color: red;
Todas esas definiciones harán lo mismo, mostrar algo de color rojo. Es
lo que se llama el modelo RGB (Red Green Blue) donde cada color está compuesto
por una parte de rojo, una parte de verde y una parte de azul y las diferentes
proporciones de estos componentes generan todos los colores posibles.
Pero también se le pude dar cierta transparencia a los
colores, y para ello tenemos los llamados colores RGBA (Red Green Blue Alpha), el alpha cannel indica la opacidad o transparencia del color.
jueves, 19 de julio de 2012
Carga el iPad desde tu PC
Si se quiere cargar el iPad conectándolo a la PC mediante el cable USB, se puede ver que el mismo no carga. Al lado del icono de la batería se muestra el mensaje: “No se está cargando”
Ésto ocurre porque el puerto USB no tiene el suficiente voltaje como para cargar el dispositivo.
Gracias a AiCharger ahora podemos tener mas voltaje en nuestros puertos USB para poder cargar nuestros dispositivos.
Solamente debes seguir los siguiente pasos:
1- Descargar AiCharger desde aquí
2- Descomprimir el .rar
3- Ejecutar el Setup.exe que se encuentra dentro del folder descomprimido.
Listo!!!
Ya se puede conectar el iPad a la PC para ser cargado.
Ésto ocurre porque el puerto USB no tiene el suficiente voltaje como para cargar el dispositivo.
Gracias a AiCharger ahora podemos tener mas voltaje en nuestros puertos USB para poder cargar nuestros dispositivos.
Solamente debes seguir los siguiente pasos:
1- Descargar AiCharger desde aquí
2- Descomprimir el .rar
3- Ejecutar el Setup.exe que se encuentra dentro del folder descomprimido.
Listo!!!
Ya se puede conectar el iPad a la PC para ser cargado.
Nota: También funciona para iPod e iPhone
Navegación personalizada de registros (II): Calendario de partidos con swipe
Lo que se explicará aquí es como hacer algo similar a lo comentado en un post anterior con respecto a un calendario de partidos de un campeonato de fútbol, pero haciendo uso de la funcionalidad del gesto swipe de los Smart Devices. La idea es pasar entre fecha y fecha del calendario con el gesto swipe, hacia la izquierda para ir a la fecha anterior y hacia la derecha para ir a la fecha siguiente.
Navegación personalizada de registros: Calendario de partidos de fútbol
Muchas veces necesitamos crear secuencias de navegación sobre la misma entidad, haciendo un corte por uno de sus elementos. Por ejemplo, tenemos el calendario de un campeonato de fútbol y queremos mostrarlo listando los partidos para cada fecha del campeonato, teniendo la posibilidad de navegar para atrás y para adelante en las fechas, por ejemplo algo como lo siguiente:
Las flechas de la parte superior permiten navegar hacia la fecha anterior y siguiente respectivamente.
Las flechas de la parte superior permiten navegar hacia la fecha anterior y siguiente respectivamente.
miércoles, 18 de julio de 2012
Cómo probar con Android 4.0 si no se tiene un device
Quería probar con Android 4.0 y no tengo un device con esa version asi que decidi probar con un emulador.
Para eso instalé el SDK R18 (el SDK se puede bajar de http://developer.android.com/sdk/index.html aunque creo solo dejan la ultima version disponible) y luego segui las instrucciones de este link
Para eso instalé el SDK R18 (el SDK se puede bajar de http://developer.android.com/sdk/index.html aunque creo solo dejan la ultima version disponible) y luego segui las instrucciones de este link
¿Como ejecutar el emulador con diferentes versiones de Android?
Como se explica acá cuando se ejecuta desde el IDE (F5) se busca un emulador levantado, si existe se usa ese. Por lo cual si se levanta el emulador con un AVD de 4.0 antes de dar F5 se usará ese.
Tres tips sobre: ejecución de aplicaciones en Android
Algunos tips que pueden aportar para el desarrollo de aplicaciones GeneXus para Android
Tip 1: ¿ejecutar vía Knowledge Base Navigator o la aplicación compilada?
Tip 2: ¿qué se ejecuta?
Tip 3: ¿en qué emulador o device se ejecuta?
Logging/troubleshooting en android
La versión Evolution 2 de Genexus incluye generadores para iOS (iPad, iPhone e iPod), Android (Galaxy, etc) y Blackberry (RIM).
En particular ahora estaba desarrollando una aplicación para Android y tuve algun problema dificil de identificar. Usando una herramienta para procesar el "log" de la aplicación pude encontrar y corregir rapidamente el problema.
Independientemente de que se tenga o no problema, el manejar el "logging" puede ayudar en optimizaciones, chequear qué servicios se están consumiendo desde la aplicación, qué datos viajan, etc.
En particular ahora estaba desarrollando una aplicación para Android y tuve algun problema dificil de identificar. Usando una herramienta para procesar el "log" de la aplicación pude encontrar y corregir rapidamente el problema.
Independientemente de que se tenga o no problema, el manejar el "logging" puede ayudar en optimizaciones, chequear qué servicios se están consumiendo desde la aplicación, qué datos viajan, etc.
Manejo de versiones del Knowledge Base Navigator
El KBN es una aplicación nativa para IOS, Android y BB que se distribuye vía los stores correspondientes y permite prototipar las aplicaciones para esos devices sin necesidad de compilar especificamente para cada uno.
Basicamente lo que hace es interpretar una metadata donde están los forms, servicios de datos, etc (la aplicación en si) con lo cual es más ágil pues no requiere compilar la APK, JAD o IPA para ejecutar la aplicación en el device.
Basicamente lo que hace es interpretar una metadata donde están los forms, servicios de datos, etc (la aplicación en si) con lo cual es más ágil pues no requiere compilar la APK, JAD o IPA para ejecutar la aplicación en el device.
lunes, 16 de julio de 2012
Geolocation en el Evento Start?
Muchas veces nos hemos encontrado con situaciones en aplicaciones de Smart Devices que queremos averiguar algo del dispositivo apenas entra a una pantalla. Lo que muchos hacemos es programarlo en el evento Start. Pero, como los eventos Start, Refresh y Load de los objetos SD son ejecutados en el servidor, esto no lo podemos hacer.
Un ejemplo es la ubicación geográfica del dispositivo. Se quiere tener cuando se "abre" una pantalla determinada, la ubicación del dispositivo.
Un tip que, en varios casos, sirvió para poder sortear esta limitación es calcular el la ubicación geográfica en el llamador para luego pasarla por parámetro al objeto llamado.
Un ejemplo es la ubicación geográfica del dispositivo. Se quiere tener cuando se "abre" una pantalla determinada, la ubicación del dispositivo.
Un tip que, en varios casos, sirvió para poder sortear esta limitación es calcular el la ubicación geográfica en el llamador para luego pasarla por parámetro al objeto llamado.
lunes, 9 de julio de 2012
Errores de JavaScript en Navegadores de Smart Devices
Los errores en aplicaciones Web en browsers de Smart Device puede ser incomodos de debuguear y solucionar.
Por ejemplo una aplicación web que corre en los dispositivos de Apple, en su navegador por defecto Safari, pueden tener errores de javascript que solo suceden en un dispositivo en su navegador.
Hay una herramienta que permite hacer debugging en el dispositivo.
Suscribirse a:
Entradas (Atom)