Zero To Hero en KMM con Compose y SwiftUi | de Ali Baha Abadi | septiembre 2022
por Ali Baha
Estoy escribiendo este artículo mientras el gobierno de mi país ha prohibido Internet en Irán. La gente salió a las calles para protestar por el hiyab obligatorio y el asesinato policial de Mahsa Amini. Comunidad de Android, use el hashtag #mahsaamini en las redes sociales para mostrar su apoyo a Mahsa y al pueblo iraní.
Pensé que Kotlin Multiplatform Mobile era complicado de usar antes de decidir probarlo, pero lo encontré súper fácil de usar, entonces, ¿por qué no usar KMM, que ofrece las siguientes ventajas? (Lea más aquí)
- Con KMM, los desarrolladores pueden usar una única base de código para la lógica comercial de las aplicaciones de iOS y Android y solo escribir código específico de la plataforma cuando sea necesario, p. B. al implementar una interfaz de usuario nativa o trabajar con API específicas de la plataforma.
- Debido a que KMM es fácil y rápido de modificar, requiere menos mantenimiento.
- KMM utiliza un lenguaje de programación nativo basado en Kotlin.
- Con una planificación adecuada, KMM puede reducir el tiempo de desarrollo de iOS entre un 30 y un 40 % porque solo es necesario escribir la capa de la interfaz de usuario.
Así que hagamos magia. 🤩
- como primer paso, necesitamos crear un proyecto KMM para el cual debemos agregar el complemento Kotlin Multiplatform Mobile. (Asegúrese de leer más información aquí)
Cada proyecto Kotlin Multiplatform Mobile consta de tres módulos:
- shared es un módulo de Kotlin que contiene la lógica común para las aplicaciones de Android e iOS: el código que compartes entre plataformas. Utiliza Gradle como un sistema de compilación que le permite automatizar su proceso de compilación. El módulo compartido está integrado con una biblioteca de Android y un marco de iOS.
- androidApp es un módulo de Kotlin que se integra con una aplicación de Android. Utiliza Gradle como sistema de construcción. El módulo androidApp depende del módulo compartido y lo usa como una biblioteca normal de Android.
- iOSApp es un proyecto de Xcode que se integra con una aplicación de iOS. Depende del módulo compartido y lo usa como el marco de trabajo de iOS. El módulo compartido se puede usar como un marco normal o como una dependencia de CocoaPods, según lo que haya elegido en el paso anterior. Distribución del framework iOS. Este tutorial trata sobre una dependencia de marco regular.
https://kotlinlang.org/docs/multiplatform-mobile-create-first-app.html#examine-the-project-structure El módulo compartido consta de tres grupos de fuentes: androidMain, commonMain e iosMain.
- el segundo paso consiste en usar Koin para la inyección de dependencias y Ktor para el servicio remoto después de crear nuestro proyecto. Agrega los enlaces de tu biblioteca en la sección de dependencias en build.gradle.kts en el módulo compartido.
Y agregue un complemento de serialización en la sección de complementos.
- terceravamos a divertirnos programando.
Cree nuevos directorios en su módulo compartido. Quiero usar una arquitectura limpia al escribir mi código, por lo que necesitamos datos y un directorio de dominio. En el dominio definimos la entidad, la interfaz del repositorio y el caso de uso. Entidad: Interfaz del repositorio: Caso de uso: Conjunto en Servicio remoto de datos, Fuente de datos e Implementación del repositorio. Servicio Remoto: Fuente de Datos: Repositorio Implementación: Para implementar DI necesitamos tener definidos nuestros módulos, ¿cómo? Simplemente de esa manera. Creamos nuestro cliente HTTP para conectarnos a nuestro servicio remoto, luego lo pasamos a la fuente de datos e inyectamos la fuente de datos en el repositorio y el repositorio para el caso de uso.
- Ahora hemos terminado con el módulo compartido, en el cuarto pasonecesitamos escribir un código específico para la presentación en aplicaciones de Android e iOS.
Necesitamos agregar las bibliotecas Compose, Coroutines, Koin, Navigation y Coil. Ahora vamos a crear nuestra clase de aplicación: no olvide agregar esta clase a su archivo de manifiesto y, como siempre lo olvido, asegúrese de agregar también el permiso de Internet. Koin se ha inicializado y tiene el módulo de la aplicación mediante la inserción del modelo de vista en la actividad. Módulo App: Es hora de actividad, pero una sencilla que maneja nuestro sistema de navegación. Aquí está el código para la navegación compuesta. Si ya está familiarizado con esto, genial, si no, lea más sobre esto aquí. Tengo una intención que obtiene datos y cuatro estados para mostrar la vista.Felicitaciones, nuestro viaje está completo en casi un 70 por ciento ahora que hemos terminado con Android. Tiempo para ios, mi parte favorita: Koin debe inicializarse en la aplicación, crear un modelo de vista y manejar el estado en la vista, al igual que Android. Comencemos con la clase de aplicación: Ios Koin Injector: debe importar un módulo compartido para para usarlo como lo hice yo. Además, simplemente creamos una extensión para usar el caso de uso en nuestro proyecto Swift. Y no olvide que para usarlo en Swift necesita agregar este método en su clase de plataforma en iosMain en el módulo compartido. Luego cree una enumeración con tres valores para manejar el estado: Y cree un modelo de vista para obtener datos de nuestra clase de caso de uso de Kotlin: Usar sus clases de Kotlin en un proyecto de Swift es tan fácil como usar koin .get() si tiene los definió en su clase rápida de inyector. Finalmente, use el modelo de vista en la vista de inicio y muestre la vista en su estado de esta manera:Nuestras aplicaciones simples de Android e iOS se han creado, pero ¿KMM está listo para la producción? ¿KMM es confiable para grandes proyectos? No, no lo creo. ¿Y usted? ¿Es más probable que use KMM por sus beneficios o dos aplicaciones nativas separadas?¡NECESITAMOS TU AYUDA! Las fuerzas de seguridad de Irán siguen disparando y matar manifestantes – incluido Mujeres y niños – al apagar Internet Acceso para que no puedan organizarse o comunicarse con el mundo.Por favor solicite que su Oficial, compañíasy amigos Mostrar apoyo y condenar al pueblo iraní. opresor. Comunidad de Android, usa el hashtag #mahsaamini en las redes sociales para mostrar su apoyo a Mahsa y al pueblo iraní.