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 Project和Build -> Rebuild Project操作。
如果你的项目使用了自定义的Application类(比如继承自FlutterApplication的扩展类),只需要将manifestPlaceholders中的applicationName值替换为自定义类的完整包名+类名即可,比如com.yourcompany.flashchat.MyCustomApplication。
内容的提问来源于stack exchange,提问作者Ifebajo Damilare




