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

Flutter应用迁移至Android Embedding V2后${applicationName}值未提供的问题问询

迁移Flutter到Android Embedding V2时${applicationName}占位符无值的原因及解决方案

问题原因

当你把Flutter应用迁移到Android Embedding V2后,Flutter的Gradle插件会通过${applicationName}占位符动态指定Android应用的Application类。这个占位符需要在项目的Gradle配置中提供对应的值,但迁移过程中如果没正确配置这个参数,或者旧的V1嵌入项目原本就没有相关配置,Gradle在构建时就无法替换这个占位符,从而抛出你遇到的错误。

解决方法

按照以下步骤逐一排查修复:

  • 步骤1:在build.gradle中配置applicationName占位符
    打开android/app/build.gradle文件,找到android块下的defaultConfig节点,添加manifestPlaceholders配置,指定你的Application类全路径。如果使用默认的Flutter应用类,直接填io.flutter.app.FlutterApplication;如果是自定义的Application类,替换成你自己的类路径:

    android {
        defaultConfig {
            // 保留原本的其他配置(比如applicationId、minSdkVersion等)
            manifestPlaceholders = [applicationName: "io.flutter.app.FlutterApplication"]
        }
    }
    
  • 步骤2:确认AndroidManifest.xml中的占位符引用正确
    检查android/app/src/main/AndroidManifest.xml里的<application>标签,确保android:name属性使用了${applicationName}占位符,而非硬编码的类名:

    <application
        android:name="${applicationName}"
        android:label="flash_chat"
        android:icon="@mipmap/ic_launcher">
        <!-- 其他配置内容 -->
    </application>
    
  • 步骤3:清理缓存并重新构建项目
    配置完成后,清理项目缓存并重新构建,确保新配置生效:

    flutter clean
    flutter pub get
    flutter run
    

    或者在Android Studio中依次执行Build -> Clean ProjectBuild -> Rebuild Project操作。

如果你的项目使用了自定义的Application类(比如继承自FlutterApplication的扩展类),只需要将manifestPlaceholders中的applicationName值替换为自定义类的完整包名+类名即可,比如com.yourcompany.flashchat.MyCustomApplication

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

火山引擎 最新活动