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

Flutter使用DeferredComponent构建AppBundle失败问题排查

问题原因
  • Flutter构建Deferred Components时,会在临时目录build/android_deferred_components_setup_files生成必要的Android资源文件(比如strings.xml),用于支持动态组件的资源管理。
  • Debug和Release模式运行时,Flutter的构建流程不会对这些临时资源做严格校验;但构建App Bundle时,Google Play的App Bundle验证机制要求所有用于动态交付的资源必须存在于项目的Android源码目录中,而非临时构建目录,因此触发了验证失败。
解决方法

1. 迁移自动生成的资源文件到项目目录

  • 找到临时目录下的build/android_deferred_components_setup_files/app/src/main/res/values/strings.xml文件
  • 将它复制到你的Flutter项目的android/app/src/main/res/values/目录下(如果values目录不存在,手动创建即可)
  • 如果项目里已经有strings.xml,一定要合并两个文件的内容,别直接覆盖,不然会丢失原有字符串资源

2. 检查Deferred Components的配置完整性

  • 确认pubspec.yaml里正确声明了Deferred Components:
    deferred_components:
      - name: feature_name
        libraries:
          - package:your_app_name/feature_path.dart
    
  • 检查Android端android/app/build.gradle是否启用了对应的动态交付模块:
    android {
        // 其他配置项
        dynamicFeatures = [":feature_name"] // 这里要和pubspec里的组件名对应
    }
    
  • 确保每个Deferred Component对应的Android动态模块(比如:feature_name)已经正确创建并配置

3. 别轻易跳过验证(不推荐)

  • --no-validate-deferred-components参数能绕过验证,但可能导致动态组件运行时缺资源,或者Google Play审核不通过,只适合紧急测试场景临时使用
配置遗漏排查

大概率是配置Deferred Components时,没处理Flutter自动生成的Android资源文件的持久化问题。Flutter的Deferred Components构建流程会生成这些资源,但不会自动同步到项目源码目录,必须手动迁移才能通过App Bundle的严格校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 19:00:10