You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅为Dev与Debug构建变体集成Flutter模块?

仅为Dev和Debug变体集成Flutter模块的解决方案

一、修改settings.gradle:按需引入Flutter模块

settings.gradle处于Gradle的配置阶段,此时还未解析构建变体,无法直接获取当前变体类型。我们可以通过检查启动的Gradle任务名称来判断是否为Dev/Debug构建,仅在符合条件时引入Flutter模块:

plugins {
 id "com.gradle.enterprise" version "3.8.1"
}

gradleEnterprise {
 buildScan {
    termsOfServiceUrl = "https://gradle.com/terms-of-service"
    termsOfServiceAgree = "yes"
 }
}

include ':debug'
include ':common-views'
include ':loggedout'
include ':network'
include ':view'
include ':security'
include ':data'
include ':archandroid'
include ':app'

// 仅在Dev或Debug构建时引入Flutter模块
def isDevOrDebugBuild = gradle.startParameter.taskNames.any { taskName ->
    taskName.toLowerCase().contains("dev") || taskName.toLowerCase().contains("debug")
}

if (isDevOrDebugBuild) {
    setBinding(new Binding([gradle: this]))
    evaluate(new File(
        settingsDir.parentFile,
        'Android/flutter_app_module/.android/include_flutter.groovy'
    ))
    include ':flutter_app_module'
    // 修正路径:父目录下的Android文件夹需添加斜杠
    project(':flutter_app_module').projectDir = new File('../Android/flutter_app_module')
}

二、修改app的build.gradle:仅为指定变体添加依赖

将原来全局的Flutter依赖改为仅针对Dev和Debug变体:

// 替换原来的implementation project(':flutter')
devImplementation project(':flutter')
debugImplementation project(':flutter')

如果你的变体是Product Flavor + Build Type组合(比如DevDebug、UatRelease这类),可根据实际情况调整:

// 示例:针对Dev flavor的Debug构建,或所有Debug类型的变体
devDebugImplementation project(':flutter')
debugImplementation project(':flutter')

三、代码层面避免编译错误

当构建非Dev/Debug变体时,项目中不能存在Flutter相关的代码调用,否则会触发编译错误。可通过以下方式处理:

  1. 在build.gradle中为指定变体添加编译标志:
android {
    buildTypes {
        debug {
            buildConfigField "boolean", "USE_FLUTTER", "true"
        }
        release {
            buildConfigField "boolean", "USE_FLUTTER", "false"
        }
    }
    productFlavors {
        dev {
            buildConfigField "boolean", "USE_FLUTTER", "true"
        }
        uat {
            buildConfigField "boolean", "USE_FLUTTER", "false"
        }
    }
}
  1. 在代码中通过BuildConfig.USE_FLUTTER做条件判断:
if (BuildConfig.USE_FLUTTER) {
    // 仅在Dev/Debug变体执行Flutter相关逻辑
    Intent intent = FlutterActivity.createDefaultIntent(this);
    startActivity(intent);
}

内容的提问来源于stack exchange,提问作者Sakhawat Hossain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 22:27:30