Flutter desarrollo mixto-Android

¿Por qué revolotear?

 
older_crossed_platform.png

Flutter framework y aplicación

Marco y código fuente

Marco general
 
flutter_struct_base.jpg
Código fuente
 
flutter_struct_function.png

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.

 
flutter._apk_change_graffle.png

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

    1. Desarrollar funciones relacionadas con flutter en modo Flutter.
    2. Empaquete el código en una biblioteca aar y cárguelo en el repositorio para el control de versiones.
    3. 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

Supongo que te gusta

Origin www.cnblogs.com/wjw334/p/12693178.html
Recomendado
Clasificación