Flutter混合工程管理

2020-08-05  本文已影响0人  刺客的幻影

Flutter混合工程管理的两种模式

将Flutter部分代码作为一个module引入,该方案开发体验好,但是耦合性高,所有团队成员都要配置Flutter环境

混合模式 产物模式
优点 便于开发和调试 耦合度低,不需要开发Flutter需求则无需配置Flutter环境
缺点 耦合度高,所有项目成员都要配置Flutter环境 不利于开发调试

方案优化

解决步骤

1. 在Android项目的主工程MyApp/下,新建一个config.gradle文件
       ext {
                compile = ['isBuildFlutter': true,]
            }
2. 在MyApp/app/build.gradle文件中,区分产物和混合模式
    
      repositories {
       flatDir {
        dirs 'libs'
      }

       //以aar方式集成
       if (!rootProject.ext.compile['isBuildFlutter']) {
           maven {
            url '../../flutter_module/build/host/outputs/repo'
           }
        maven {
            url 'http://download.flutter.io'
          }
       }
   }

buildTypes {
 if (!rootProject.ext.compile['isBuildFlutter']) {
            profile {
                matchingFallbacks = ['debug', 'release']
            }
        }
}
dependencies{

     if (rootProject.ext.compile['isBuildFlutter']) {
        implementation project(':flutter')
        compile project(path: ':flutter_boost')
       } else {
          debugImplementation 'com.example.flutter_module:flutter_debug:1.0'
          profileImplementation 'com.example.flutter_module:flutter_profile:1.0'
          releaseImplementation 'com.example.flutter_module:flutter_release:1.0'
      }
}

3. 在setting.gradle文件中,区分产物和混合模式
        
 buildscript {
    apply from: 'config.gradle'
    if (ext.compile['isBuildFlutter']) {
        setBinding(new Binding([gradle: this]))                                 // new
        evaluate(new File(                                                      // new
                settingsDir.parentFile,                                               // new
                'honey_flutter/.android/include_flutter.groovy'                          // new
        ))
        include ':flutter_module'
        project(':flutter_module').projectDir = new File('../flutter_module')
    }

}
        

以上思路比较清晰,步骤看起来不多,但是在尝试的时候还是有很多坑的

使用方式

1. 将Android主工程和Flutter模块放在同一级目录下,如下:
image.png
2. 产物模式(aar)接入
3. 混合模式接入
上一篇下一篇

猜你喜欢

热点阅读