You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何解决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"这类旧启动屏配置
  • 保存修改并提交。

二、检查并更新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,改完就好了。你按照上面的步骤一步步来,应该能解决问题!

火山引擎 最新活动