Flutter 3.7创建package模板与旧版及文档不符问题求助
问题原因分析
Flutter 3.7对package模板做了功能扩展:
- 旧版本模板仅生成纯Dart包所需的核心文件(LICENSE、测试文件等)
- 3.7版本开始,默认在包结构中加入android/ios目录,目的是简化带原生插件能力的包开发流程,让开发者可以直接在同一个包项目里编写原生平台代码,无需额外初始化原生工程
至于Android嵌入的警告,是因为生成的默认android目录里沿用了旧的V1嵌入配置,而Flutter已逐步弃用V1嵌入,因此触发了该提示。
警告处理方案
根据你的包类型选择对应的处理方式:
情况1:纯Dart包(无需原生代码)
如果你的包只包含Dart逻辑,不需要适配Android/iOS原生平台,直接删除生成的android和ios目录即可,警告会自动消失,同时包结构回归到官方文档描述的纯Dart包形态。
情况2:需要支持原生平台(要开发插件)
如果你的包需要添加原生代码能力,需要手动将Android嵌入升级到V2,步骤如下:
- 替换AndroidManifest配置
打开android/app/src/main/AndroidManifest.xml,删除原有的io.flutter.app.FlutterActivity相关配置,添加V2嵌入的元数据:<activity android:name=".MainActivity" android:exported="true"> <meta-data android:name="flutterEmbedding" android:value="2" /> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> - 更新MainActivity
将android/app/src/main/kotlin/.../MainActivity.kt(或Java文件)修改为继承io.flutter.embedding.android.FlutterActivity,无需重写onCreate方法:package com.example.hello import io.flutter.embedding.android.FlutterActivity class MainActivity: FlutterActivity() - 同步依赖
打开android/build.gradle,确保Flutter插件版本适配V2(Flutter 3.7自带的插件版本通常已满足),示例配置:dependencies { classpath "com.android.tools.build:gradle:7.3.0" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.20" classpath "dev.flutter:flutter-gradle-plugin:2.0.0" }
完成以上步骤后,重新运行项目,警告即可消除。
内容的提问来源于stack exchange,提问作者Sayyid J
相关产品推荐
相关产品推荐

