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

Android Studio构建Flutter应用失败,请求入口配置指导

问题解决:Flutter构建找不到main.dart的配置修复

错误原因

你构建的是DevelopmentRelease变体,Flutter默认会尝试编译lib/main.dart,但你的项目按环境拆分了入口文件(main_production.dart/main_staging.dart/main_development.dart),且现有配置仅在manifestPlaceholders中设置了flutterMainDartEntry——这只影响AndroidManifest的启动逻辑,Flutter编译阶段仍需要明确指定入口文件,所以才会出现找不到文件、无main方法的错误。

修改后的完整build.gradle配置

在你的productFlavors每个环境节点中,添加flutter配置块指定对应入口文件,保留原有配置:

android {
    namespace "com.my.app"
    compileSdkVersion flutter.compileSdkVersion
    ndkVersion flutter.ndkVersion

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = '1.8'
    }

    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }

    defaultConfig {
        applicationId "com.my.app"
        minSdkVersion flutter.minSdkVersion
        targetSdkVersion flutter.targetSdkVersion
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
    }

    signingConfigs {
        if (System.getenv("ANDROID_KEYSTORE_PATH")) {
            release {
                storeFile file(System.getenv("ANDROID_KEYSTORE_PATH"))
                keyAlias System.getenv("ANDROID_KEYSTORE_ALIAS")
                keyPassword System.getenv("ANDROID_KEYSTORE_PRIVATE_KEY_PASSWORD")
                storePassword System.getenv("ANDROID_KEYSTORE_PASSWORD")
            }
        } else {
            release {
                keyAlias keystoreProperties['keyAlias']
                keyPassword keystoreProperties['keyPassword']
                storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
                storePassword keystoreProperties['storePassword']
            }
        }
    }

    flavorDimensions "default"
    productFlavors {
        production {
            dimension "default"
            applicationIdSuffix ""
            manifestPlaceholders = [
                    appName               : "App Name",
                    'flutterMainDartEntry': 'lib/main_production.dart'
            ]
            // 添加Flutter编译入口配置
            flutter {
                dartEntrypoint = 'lib/main_production.dart'
            }
        }
        staging {
            dimension "default"
            applicationIdSuffix ".stg"
            manifestPlaceholders = [
                    appName               : "[STG] App Name",
                    'flutterMainDartEntry': 'lib/main_staging.dart',
            ]
            // 添加Flutter编译入口配置
            flutter {
                dartEntrypoint = 'lib/main_staging.dart'
            }
        }
        development {
            dimension "default"
            applicationIdSuffix ".dev"
            manifestPlaceholders = [
                    appName               : "[DEV] App Name",
                    'flutterMainDartEntry': 'lib/main_development.dart',
            ]
            // 添加Flutter编译入口配置
            flutter {
                dartEntrypoint = 'lib/main_development.dart'
            }
        }
    }

    buildTypes {
        release {
            signingConfig signingConfigs.release
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt')
        }
        debug {
            signingConfig signingConfigs.debug
        }
    }
}

额外检查项

  1. 确保每个main_xxx.dart文件中都存在main()方法,示例:
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'App',
      home: Scaffold(body: Center(child: Text('Hello'))),
    );
  }
}
  1. 在Android Studio的Build Variants面板中,确认选中的变体与你要构建的环境匹配(比如构建developmentRelease就选对应的变体)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 14:43:16