Pregunta

Estoy trabajando en el desarrollo de un sistema de registros médicos utilizando OpenMRS como backend para Android. OpenMRS depende de algunas bibliotecas de peso seriamente pesado, incluidos Hibernate y Spring.

"Dexing" toda la aplicación OpenMRS genera un archivo que es demasiado grande incluso para el formato de archivo Android Classes.dex (este límite de tamaño ya está bien documentado). Para evitar esto, actualmente estoy trabajando en la creación de múltiples archivos DEX de las dependencias y cargándolos durante el tiempo de ejecución utilizando el cargador de clases DEX de Android.

Debido a la forma en que se utilizará la versión móvil del servidor en la práctica, las demandas de procesamiento reales serán muy bajas a pesar de las enormes dependencias. No estoy tratando de ejecutar un servidor empresarial en mi teléfono aquí.

Antes de pasar semanas más de mi tiempo tratando de diseñar esto, solo quería preguntarle a la comunidad de desarrolladores: ¿es esta estrategia solo un sueño imposible? Si cargo todas estas bibliotecas, ¿se cargará todo el binario en RAM y simplemente romperá el sistema? ¿Hay una buena manera de optimizar tal aplicación? ¿Hay algún problema o solución obvia que me falta aquí?

¿Fue útil?

Solución

La respuesta corta es: no.

La respuesta larga es que la mayoría de los dispositivos todavía solo asignan una cantidad relativamente pequeña (entre 40-128 megs de RAM) de memoria a cada montón. Realmente necesita pensar en la arquitectura de la aplicación, por lo que la mayor parte de la lógica y, por lo tanto, las bibliotecas y el código de peso pesado aún residen en un servidor y la aplicación móvil solo está leyendo datos livianos (¿JSON?) Desde el servidor hasta la visualización. Los dispositivos realmente solo deben utilizar elementos nativos como datos de ubicación y proporcionar una interfaz al usuario que sea consistente con el resto del universo Android. Más allá de eso, debe buscar formas de mantener la mayor cantidad de lógica fuera de la aplicación nativa posible. Si no es por otra razón que mantenerlo más seguro. Ingeniería inversa Las aplicaciones de Android son trivial Y cuanto más mantenga en el lado del servidor, más seguro será.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top