¿Por qué revolotear?
Flutter framework y aplicación
Marco y código fuente
Marco general
Código fuente
Entonces, a partir del análisis anterior, podemos ver que para no lograr diferencias en la plataforma de Flutter, Google ha realizado principalmente un trabajo de adaptación en la parte de Integración de Plataforma y Dart: UI.
Estructura de APK (aplicación de Android)
Descomprimimos una versión del paquete APK de desarrollo mixto para explorar qué cambios se han producido en el paquete después de agregar Flutter y cuáles son los efectos correspondientes de estos cambios.
El punto de cambio se puede ver claramente desde la marca en la imagen de arriba
-
Cambio 1
No está marcado en la figura, pero creo que la mayoría de los desarrolladores deberían poder adivinar que el código de Integración de PlatForm (FutterActivity, FlutterApplication, FlutterView, etc.) se ingresa en dex
-
Cambio 2
Los 4 archivos bajo activos, todos los cuales son instrucciones de armado
-
isolate_snapshot_data / isolate_snapshot_instr
Compilación AOT correspondiente a nuestro código Flutter, utilizada para crear un nuevo aislamiento
-
vm_snapshot_data / vm_snapshot_instr
Se usa para inicializar Dart VM, proporcionar servicios como runTime, gc, etc.
Debido a que esta parte del contenido es compilada y generada por gen_snapshot y almacenada en el directorio de datos de la aplicación, entonces
Proporciona la posibilidad de futuras actualizaciones dinámicas.
-
-
Cambio 3
El paquete ICU Dart Language proporciona información de datos relacionados con el idioma.
-
Cambio 4
capa de aleteo Código de motor
Modo mixto Flutter
Creo que para la mayoría de las aplicaciones, el costo de reconstruir una aplicación desde cero es bastante alto, por lo que el desarrollo híbrido se ha convertido en su primera opción para probar Flutter.
Modo de inactividad
Coexistencia de doble rama (modo Flutter y modo autónomo)
Modo independiente: desarrollo nativo puro o modo de empaquetado de plataforma
Modo Flutter: el desarrollo de funciones relacionadas con el flutter, la generación de la biblioteca, la compilación y la depuración son todos los procesos definidos por Flutter.
- Ventaja
En el modo independiente, los desarrolladores nativos puros y las plataformas de empaque no son conscientes de Flutter. En este caso, el código relacionado con Flutter se puede considerar como un archivo de biblioteca de terceros normal.
-
Preparación
Aclare la dependencia de Flutter en modo independiente y extráigalos en una biblioteca aar.
-
Pasos de desarrollo
- Desarrollar funciones relacionadas con flutter en modo Flutter.
- Empaquete el código en una biblioteca aar y cárguelo en el repositorio para el control de versiones.
- Cambie la rama al modo independiente y modifique los números de versión de los paquetes dependientes relacionados.
Por supuesto, este método encontrará muchos otros problemas en el proceso de desarrollo real, como escribir scripts de biblioteca aar bajo procesos complejos, como la sincronización de código en dos modos.
Modo Google
Cuán ruidoso es el desarrollo del modo híbrido con Flutter, Google ha creado un Wiki específicamente para este problema y ha actualizado 42 versiones durante 4 meses.
Crear modo de módulo de aleteo
1.1.1 Cambiar rama de aleteo
Si se usa directamente
$ cd some / path / $ flutter create -t module my_flutter
Habrá un error de que el módulo de comando no se puede identificar. Encuentre el motivo y descubra que nuestra rama de clonación predeterminada es la versión beta de flutter y no es compatible con el comando del módulo, por lo que primero es necesario
flutter channel flutter channel master actualización de flutter
Cambie la rama a maestro y realice la operación de actualización.
1.1.2 Crear una plantilla de módulo Flutter
flutter create -t module flutter_module
En este momento, verá un nuevo flutter_module agregado al proyecto, que contiene archivos .android, .ios y la clave include_flutter.groovy
1.1.3 Agregar Flutter a un proyecto existente
-
Agregue settings.gradle en el directorio raíz del proyecto de Android
-
include ': app' // asumió el contenido existente setBinding (new Binding ([gradle: this])) // new eval (new File (// new settingsDir.parentFile, // new 'flutter_module / .android / include_flutter.groovy' // nuevo ))
-
Agregue dependencias en la aplicación build.gradle
-
dependencias { proyecto de implementación (': flutter')
1.1.4 En resumen
En pocas palabras, Google ha establecido una cadena de dependencia lógica para el módulo Insert flutter bajo la premisa de mantener los costos de mantenimiento y los costos de desarrollo.
flutter_module / .android / include_flutter.groovy -> flutter_module / .android / Flutter / build.gradle -> $ flutterRoot / packages / flutter_tools / gradle / flutter.gradle
Use el comando flutter && en $ flutterRoot / packages / flutter_tools / lib /
$ AndroidRoot / build-tools / buildToolsVersion / 中 的 comando de Android
Complete la operación de empaquetado en el modo de desarrollo mixto.
Autor: Guía de Programación aleteo
enlace: https: //www.jianshu.com/p/48daeb72c44c