Android工程内嵌Flutter篇

770 阅读1分钟

Android工程调用Flutter篇(FlutterBoost框架) - 掘金 (juejin.cn)

Android原生集成flutter分为两种方式:源码集成和aar集成
两种方式研究对比下来,采用源码集成的方式对以后的开发相对快速方便,这边就介绍源码集成的方式。

笔者使用开发环境:
android gradle版本7.5,插件版本7.4.2,JDK版本11(必须11以上)
flutter 版本3.3.7 dart版本2.18.4

一、创建Flutter模块
image.png image.png
二、将Flutter模块作为子项目引入Android项目
最新版本的Android studio创建的项目结构跟老版本不一样,两者特意都对接过,分别讲解下。

新版本:(JDK版本必须是11以上)
1.在product的 settings.gradle 改成如下

pluginManagement {
    repositories {
        google()
        mavenCentral()
        maven { url 'https://maven.aliyun.com/repository/public'}
        maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
        maven { url "https://jitpack.io" }
    }
}

dependencyResolutionManagement {
//    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)   必须改成下面这行
    repositoriesMode.set(RepositoriesMode.PREFER_PROJECT)
    repositories {
        google()
        mavenCentral()
        maven { url 'https://maven.aliyun.com/repository/public'}
        maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
        maven { url 'https://dl.bintray.com/jetbrains/anko'}
        maven { url "https://jitpack.io" }
    }
}

setBinding(new Binding([gradle: this]))
evaluate(new File(
    settingsDir.parentFile,
    'gtech-flutter-sdk/.android/include_flutter.groovy'
))
include ':fluttermodule'

要点:

  • jcenter() 换成 mavenCenter()
  • repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) 换成 repositoriesMode.set(RepositoriesMode.PREFER_PROJECT)
  • 官方'fluttermodule/.android/include_flutter.groovy' 换成 'flutter目录名/.android/include_flutter.groovy'(App工程跟Flutter模块在同一目录下)

2.在app的 build.gradle 中添加

dependencies {
    ...
    implementation project(':flutter')
}

3.在product的build.gradle下添加

allprojects {
    repositories {
        google()
        mavenCentral()
        maven { url 'https://jitpack.io' }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

然后编译项目,编译成功Android工程会增加对应Flutter模块

旧版本:(JDK版本必须是11以上)
1.在product的build.gradle下改成如下

buildscript {
    repositories {
        google()
        mavenCentral()
        maven { url 'https://maven.aliyun.com/repository/public'}
        maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
        maven { url 'https://jitpack.io' }
    }
    dependencies {
        classpath "com.android.tools.build:gradle:7.4.2"
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
        maven { url 'https://maven.aliyun.com/repository/public'}
        maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
        maven { url 'https://jitpack.io' }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

2.在product的 settings.gradle添加

setBinding(new Binding([gradle: this]))
evaluate(new File(
        settingsDir.parentFile,
        'gtech-flutter-sdk/.android/include_flutter.groovy'
))
include ':fluttermodule'

3.在app的 build.gradle 中添加

dependencies {
    ...
    implementation project(':flutter')
}

然后编译项目等待成功即可。