如何解决Dart/Flutter项目因使用已废弃的Android v1嵌入导致GitHub Actions构建失败的问题?
如何解决Dart/Flutter项目因使用已废弃的Android v1嵌入导致GitHub Actions构建失败的问题?
我明白你现在的处境——只能在网页端操作代码,没法用本地CLI调试,还遇到了这个烦人的v1嵌入废弃报错,肯定头大了😅。别着急,咱们一步一步来,所有操作都在GitHub网页上就能完成,不用碰本地命令行:
一、先从AndroidManifest.xml入手(最关键的一步)
打开你的项目仓库,找到android/app/src/main/AndroidManifest.xml文件,点击编辑:
- 首先找
<application>标签,在里面添加一行:<meta-data android:name="flutterEmbedding" android:value="2" /> - 然后找到你的主
<activity>标签,检查它的name属性:- 旧的v1嵌入是
io.flutter.app.FlutterActivity,必须改成io.flutter.embedding.android.FlutterActivity - 删掉所有和v1嵌入相关的旧meta-data,比如
android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"这类旧启动屏配置
- 旧的v1嵌入是
- 保存修改并提交。
二、检查并更新MainActivity文件
接下来看你的MainActivity,位置在android/app/src/main/kotlin/[你的包名]/MainActivity.kt(如果是Java项目就是MainActivity.java):
- 如果是Kotlin文件,确保代码是这样的:
package 你的包名 import io.flutter.embedding.android.FlutterActivity class MainActivity : FlutterActivity() {} - 如果是Java文件,确保代码是:
简单说就是必须继承新的package 你的包名; import io.flutter.embedding.android.FlutterActivity; public class MainActivity extends FlutterActivity { }FlutterActivity,删掉所有旧的v1相关的导入和代码逻辑,比如旧的onCreate方法里的Flutter初始化代码(v2嵌入已经自动处理了)。
三、调整app/build.gradle配置
打开android/app/build.gradle文件,做这些检查:
- 找到
defaultConfig块,确保minSdkVersion至少是16(v2嵌入的最低要求,如果你的项目之前设的更低,改成16就行) - 检查
dependencies块里的implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"(如果是Kotlin项目),确保这个依赖存在(不用改版本号,只要配置没丢就行) - 另外,确保文件里没有旧的
flutterSdkVersion或者和v1嵌入相关的自定义配置,常规的apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"是正常的,不用动。
四、排查可能的隐藏问题
如果上面几步做完还报错,那可能是项目里有依赖了旧的v1嵌入的第三方包:
- 打开
pubspec.yaml文件,检查你的依赖列表,比如一些老的启动屏、推送或者原生交互的插件,看看有没有版本太旧的,试着把它们升级到最新版(在网页上直接改版本号,然后提交) - 另外,如果你之前手动加过原生代码(比如在MainActivity里写了自定义逻辑),要确保这些代码是基于新的v2嵌入API写的,比如用
FlutterEngine而不是旧的FlutterView
最后一步:触发构建验证
所有修改提交后,去GitHub Actions页面重新触发一次构建,看看报错是不是消失了。
我之前帮朋友处理过几乎一模一样的问题,他也是只能在网页上操作,最后发现是MainActivity还在继承旧的FlutterActivity,改完就好了。你按照上面的步骤一步步来,应该能解决问题!




