![]() |
Hola a todos,
Cita:
Pero intentaré esbozar aquí algunas de mis escuálidas ideas en cuanto pueda. :) |
Cita:
Cita:
Seguramente algunas de estas cosas son triviales o incluso en este entorno no tengan sentido, pero mi única referencia es Delphi. * Se que no tienes problemas para conectar vía Rest. * Tengo dudas de hasta dónde llega el acceso al hard (si es necesario). * Acceso a sensores de dispositivos,... * Te iba a preguntar por las notificaciones push, de lo que ya has hablado. * Haciendo paralelismo con Delphi, cuando no existe una clase en Delphi para acceder al control de volumen (por ejemplo), siempre podemos usar un bridge con la clase de Android AudioManager (https://developer.android.com/refere...ioManager.html) y acceder a esas propiedades. ¿Hay algo similar aquí? (desconocimiento) * ¿Cómo se solventa la multiplataforma? Lo que en Delphi haríamos con {$IFDEF}, por ejemplo para Android y iOS. * ¿Hay algun problema para programar Threads? ¿Hay clases para ello? * Por ejemplo, para acciones "habituales" en los dispositivos móviles como "Compartir", "tomar foto", "Enviar a"... ¿Hay algo hecho? ¿Aquí me vuelve a salir la duda de la multiplataforma? ¿Cómo se solventa? * Tema de conexión a Bases de Datos "locales" si fuera necesario... * Guardar y acceder a archivos locales de los dispositivos. ¿Alguna complicación? Fotos almacenadas, configuraciones,... * Tethering o/y accceso por bluetooth a dispositivos externos. ¿Qué soporte hay? ¿Cómo se haría? |
Cita:
|
Volviendo al tema original...
Cita:
Revisa los permisos asignados a la aplicación, no en todas las versiones se gestionan igual. ¿Utilizas ficheros que deban ir en el Deploy? Si es que si revisa los errores que puede provocar que estén o no estén donde deban estar. Volvemos a lo mismo, no todas las versiones tratan los errores de la misma manera. Estoy pensando en cosas que se hagan diferentes en Debug y ejecutando desde el Store, de ahí que me venga a la cabeza el Deploy. Ya se que es un método rudimentario, pero es efectivo. Usa debug del de toda la vida, volcado a fichero para ver por dónde pasa el programa y hasta donde llega. Piensa si hay alguna diferencia más entre los casos que pruebas (diferente tipo de conexión WIFI/4G -este me pasó a mi-). ... |
Hola a todos,
No sé si debería iniciar un nuevo hilo para no estropear este que el compañero ha abierto, pero, en fin, espero no extenderme demasiado. Casimiro y Germán han preguntado sobre el acceso a multitud de dispositivos y otras características del hardware. Yo me pregunto a mi vez si Delphi puede ya atacar tantas características y hardware, a tenor de este mismo hilo, por ejemplo. ¡Pero vamos adelante! HTML, Javascript y CSS son los lenguajes que usamos en el lado del cliente para llevar a cabo no sólo páginas web, pero, también aplicaciones, extensions para navegadores ("addons" para Chrome, Opera, Firefox y otros navegadores -y se espera a Microsoft Edge en esta lista) y aplicaciones híbridas para múltiples plataformas como Android, iOS, Windows, etc. HTML5 es cada día más potente, y, cosas que hace unos años no podían hacerse, ahora no sólo pueden hacerse, pero, con la garantía de funcionar además en cualquier navegador web moderno, sea para móviles o para los escritorios: Windows, Mac OS, Linux, etc. Una aplicación HTML5, con la ayuda de Javascript y el estilo de CSS, puede ya hacer bastantes cosas que van más allá de una sencilla página web. Estamos hablando de aplicaciones cliente, no exactamente iguales que una aplicación nativa, puesto que no puede acceder alegremente al disco duro, por ejemplo. Sin embargo, si nuestra aplicación dispone de un servidor, guardar información mediante llamadas HTTP no resulta un problema. Hablando del servidor, se puede escoger el que cada uno prefiera, pues, una aplicación cliente, no sabe del servidor más que lo que tiene que "pedir" y lo que puede "recibir" Terminando acaso con el servidor, por ejemplo, a la aplicación cliente le da exactamente igual que allí se trate de Apache, PHP y MySQL, o bien de Microsoft IIS, ASP.NET y MSSQL. La aplicación cliente hace llamadas HTTP y recibe, por ejemplo, un JSON listo para ser presentado en la interfaz, por ejemplo. Lo que quiero decir con lo ya dicho es, básicamente, que una aplicación HTML es ya bastante potente de por sí, de hecho lo podemos ver en cantidad de aplicaciones que usamos todos los días en nuestros navegadores. Esto lo podemos lograr con HTML, Javascript Y CSS sin irnos más lejos aún, pero, ahora vamos a pasar a tratar lo que es Apache Cordova y para qué puede resultarnos útiles. En pocas palabras, Apache Cordova toma una aplicación HTML (con su Javascript, su CSS, sus imágenes, etc.) y la transforma en una aplicación "híbrida" para Android, de modo que lo que nosotros obtenemos es directamente un archivo APK listo para usar. Esto mismo que se hace para la plataforma Android, se hace para otras plataformas, como iOS. En este último caso, Apache Cordova, al menos en Windows, nos "compila" la aplicación HTML en un proyecto para XCode, que, es el entorno de desarrollo de Mac OS. En efecto, es preciso contar con un MacOS o similar para "compilar" para iOS, pero, vamos por partes: en primer lugar, si vas a desarrollar para la plataforma iOS, probablemente, será bien que cuentes con un MacOS y con un móvil donde probar... en segundo lugar, también Delphi, si no me equivoco, precisa al final de un MacOS o algo parecido para "compilar" para iOS, y es que, tal vez no quede más remedio en este sentido. Siguiendo con Apache Cordova, la gracia de este proyecto es que permite a nuestras aplicaciones HTML ir más allá de lo que el HTML y Javascript actuales permiten. Apache Cordova ofrece una serie de plugins "de serie" para acceder a archivos, cámaras, sensores de movimiento, sensores de orientación, geolocalización, contactos, información sobre el dispositivo, etc. Además, Apache Cordova tiene una arquitectura en la que caben los "plugins", y, hay cientos de ellos desarrollados por terceros. De hecho, si uno quisiese (o si fuese necesario) es posible, siguiendo la documentación, crear plugins para Apache Cordova, quiero decir, no sólo disponer de los que ya existen, pero, también se cuenta con la posibilidad de desarrollar nuevos plugins si es necesario. En cualquier caso, todos los plugins para Apache Cordova tienen algo en común: proporcionan una interfaz Javascript, que, justamente, será la que usaremos en nuestras aplicaciones. En este punto cabe decir que ya podemos hacer una cantidad de cosas bastante considerable. Tal vez una aplicación no necesite usar plugins de Apache Cordova en absoluto, puesto que, de hacerlo, Apache Cordova se convertirá en un requisito, por decirlo así, o sea, la aplicación, mejor dicho, el plugin o plugins en cuestión, no funcionarán en un navegador, por ejemplo. Apache Cordova proporciona una plataforma que llaman "browser", de modo que, en principio, podríamos "compilar" para la plataforma "browser", pero, lo que yo digo aquí es que nuestra aplicación ya no será nunca una aplicación independiente pues necesitará de Apache Cordova. Esto último puede ser un problema o no, evidentemente. Si lo menciono es porque, confío mucho en las aplicaciones HTML, y, como digo, si no usamos plugins de Apache Cordova, podremos desplegar nuestra aplicación en cualquier navegador y esta funcionará sin problemas. Un ejemplo podría ser la aplicación en que estoy trabajando ahora: excepto las notificaciones "push" (que usan un plugin para Apache Cordova) la aplicación funciona, se puede probar y depurar perfectamente en cualquier navegador. Dicha aplicación lista muchas tablas de una base de datos, hace muchas peticiones HTTP, recibe muchos datos, los muestra al usuario, permite su edición, inserción y actualización, cuenta con un completo "chat" basado en Websockets que incluso te avisa de los mensajes no recibidos... y por supuesto no hablo de esta aplicación en concreto, pero, lo que quiero indicar es la potencia de una aplicación HTML sin más... su aspecto, por ejemplo, utilizando algún framework como Bootstrap CSS, será el mismo exactamente en cualquier plataforma además. Quiero terminar ahora con este mensaje... sé que no he referido apenas frameworks como prometí, pero, quede esto para un posible siguiente mensaje. De momento, quedáos con la idea de que una aplicación HTML corre en cualquier navegador y hoy día puede hacer muchas, muchas cosas interesantes. Pensad en las aplicaciones que vosotros mismos usáis "online" en vuestros navegadores. Y quedáos también que, con la ayuda de Apache Cordova, estas mismas aplicaciones HTML podrán acceder a características de los dispositivos, usando una sola API (Javascript) en todas las plataformas soportadas. Para terminar de verdad, la idea de estos mensajes míos no es tirar por tierra a Dephi (¡diosito me libre!) o poner en las nubes las "tecnologías" web. Es, simplemente, que me causan pavor estos mensajes de que una aplicación sencillísima a más no poder (una prueba, de hecho) funcione en Android 5 pero no en Android 6. Este problema, en mi experiencia, no existe para las aplicaciones HTML e híbridas. Si estas últimas son la mejor opción para nosotros o no... es algo que tenemos que decidir nosotros mismos en función de nuestras necesidades y otras cuestiones. ¡Eso es todo de momento, que, tampoco es mi intención aburrir a nadie! |
¡Hola de nuevo!
Notad cómo en mi anterior mensaje no he mencionado en absoluto a mi programa... y es que no es necesario. Como dije ayer, tiene su público (¡cada vez más espero!) pero, hablamos de HTML, Javascript y CSS. Si se quiere, hasta con el "notepad". Creo que se entiende lo que quiero decir. :) |
Hola, de nuevo, a todos.
Gracias por vuestro desinteresado interés en mi problema. Voy a haceros algunos comentarios sobre vuestras apreciaciones y consejos. A David le funciona porque tiene la versión 6. La pantalla que muestra Agustín, también es correcta, pues he condicionado el programa al uso de una tarjeta SD, donde se guardan todos los datos de la facturación, para no usar el espacio de almacenamiento interno del dispositivo. (Veo que ya pudiste descargarlo, Agustín, gracias) El problema no está en la instalación. Está al ejecutar el programa en versiones inferiores a la 6, cuando está compilado en modo Release, pero no en modo Debug. (Esto ya lo he comentado) (E problema es que no se ejecuta, se aborta antes de mostrar la primera pantalla en estas versiones y en modo Release.) Neftalí, gracias, ya estoy revisando los ficheros que van en Deployment y son los mismos. Como sabes no soy (ni muchísimo menos) tan experto como tu. Cuando te refieres al "modo Debug de toda la vida", no lo he utilizado y no sabría cómo hacerlo, por favor instrúyeme. Probablemente no sea tan complejo como a mí me parece. Actualmente estoy haciendo pruebas, cambiando los permisos y algunas opciones, a ver si acierto... Pero dado que el problema está en el arranque sería muy útil lo que me comentas del modo Debug para saber "hasta dónde llega". Antiguamente (en Windows) era más fácil, pues se ejecutaban los programas en el entorno de Delphi y se podían poner puntos de ruptura, ejecutar paso a paso y demás... Si llego a descubrir el problema, lo haré público para ayuda e alguien que tenga una dificultad similar. Gracias a todos y saludos. |
Gracias por tu lección magistral, David.
Habrá que irse planteando algunas cosas. El problema de esto es que (al menos a mí) me cuesta salir de la "comodidad" de "mi casita" (Entiéndase Delphi), donde se está tan "comodito" para adentrarte en un "bosque" (Entiéndase aprender nuevas tecnologías y lenguajes) que para mí es desconocido. (Ya estoy muy mayor para ésto) pero estoy seguro que tu aportación va a ayudar a mucha gente más joven con la mente más abierta y (sobre todo) más despejada que la mía. Gracias por tu esfuerzo y por compartir con nosotros tus conocimientos. Un Saludo. |
Hola a todos,
Cita:
P.S. Quedo pendiente un nuevo mensaje con algunos frameworks y herramientas. Tal vez lo abra ya en otro hilo diferente para no copar este. :) |
Cita:
Estaba pensando (y yo lo he usado en casi todas mis aplicaciones) en realizar un Log que se graba en disco en un fichero TXT. Puedes utilizar un TStrings, con los métodos SaveToFile y LoadFromFile. Una vez que la aplicación peta, recuperas ese fichero del dispositivo y a ver lo que hay. |
Gracias Neftalí (sé que te gusta que te llamemos así).
Dado que mi programa no arranca en ciertas versiones, ¿qué puedo incluir en el fichero .txt? ¿ y si "casca" el programa sin cerrar el fichero, se podrá leer? Con las pruebas que estoy haciendo, tengo una sospecha... a ver si consigo saber por dónde van los tiros, para poder buscar la solución. Saludos. |
Cita:
Cita:
Puede ser que se ejecute el Create, pero falle antes del show. Puedes capturar excepciones a nivel de aplicación y volcarlas al fichero ... En cuanto al fichero, debes hacer una rutina que grabe el fichero cada vez que llamas al procedimiento de Log. No debe grabar al final, como haríamos habitualmente, porque sino pasa lo que tú comentas. Es más lento, pero en este caso en necesario. Cita:
|
David,
Muchas gracias. Por tomarte el tiempo, por tu claridad y port u disposición. De verdad, muchas gracias. LineComment Saludos |
Cita:
^\||/^\||/^\||/^\||/ |
Hola. Neftalí.
Puedes estar seguro que si lo averiguo, lo compartiré. ¡Para éso está el foro! Si no.... Saludos. |
Cita:
^\||/^\||/^\||/ |
Hola a todos nuevamente.
Encontré el origen del problema. Pero mis conocimientos no alcanzan a explicar el por qué. Intentaré ser telegráfico, más que breve. La aplicación tiene un ayuda en línea basada en un TWebBrowser. Para adaptar el tamaño de la ventana del TWebBrowser al tamaño de la ventana del dispositivo estaba usando una unit llamada FMX.DeviceInfo.pas descargada de aquí. Bastante útil, por cierto, para obtener información del dispositivo. Si no la conocéis os aconsejo que la echéis un vistazo. Esta unit necesita una serie de permisos, (no se me ocurrió sospecharlo) que yo no le estaba dando en mi App. (Mi App como tal no los necesita) EL PROBLEMA FINALMENTE ERA DE PERMISOS. Pero la pregunta, todavía sigue en el aire ¿por qué si la instalas en modo debug, funciona bien y si la instalas en modo release no? Ahora tengo dos nuevos problemas: 1.- ¿cómo adaptar el tamaño del WebBrowser a la pantalla del dispositivo? 2.- ¿cómo evitar que en los dispositivos más antiguos ( versión < 6), el margen derecho de la página mostrada no se agrande? Pondré sendos posts para que alguien me ayude, si es posible. Mientras seguiré buscando soluciones a problemas que no sería necesario, si las herramientas que usamos fueran más perfectas. A propósito. SUGERENCIA PARA LOS ADMINISTRADORES DEL FORO: Se me ocurre que ayudaría muchísimo en las búsquedas que cada post que esté resuelto tuviera una indicación. (Se me ha ocurrido ahora y no sabría dónde comentarlo) Muchas gracias a todos por vuestro interés y vuestro tiempo. Saludos. |
Hola.
¿Soy tan poco observador que no he visto las marcas de [ SOLUCIONADO ]? Perdón, perdón.... mil veces perdón. Perdón. |
Cita:
De momento no tenemos ningún método para hacerlo de otra manera. |
Hola Casi.
Lo importante es informar. No creo que importe el método. Saludos. |
La franja horaria es GMT +2. Ahora son las 07:58:13. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi