为什么将我的 Flutter 应用迁移到 Android 嵌入 v2 后未提供 ${applicationName} 的值?

Ife*_*are 11 android deprecated dart flutter

我尝试迁移已弃用的 flutter 应用程序,但按照 github 上提供的步骤操作后,我得到了这个

C:\Users\personal\AndroidStudioProjects\flash-chat-flutter\android\app\src\main\AndroidManifest.xml:10:9-42 Error:
    Attribute application@name at AndroidManifest.xml:10:9-42 requires a placeholder substitution but no value for <applicationName> is provided.
C:\Users\personal\AndroidStudioProjects\flash-chat-flutter\android\app\src\debug\AndroidManifest.xml Error:
    Validation failed, exiting
Run Code Online (Sandbox Code Playgroud)

Aar*_*ron 18

我也遇到了这个。就我而言,这是因为我设置了manifestPlaceholders“通常”的方式,通过分配=(正如所有示例似乎所做的那样):

\n

在android/app/build.gradle:

\n
android {\n    \xe2\x8b\xae\n    defaultConfig {\n        applicationId "com.example.my_app"\n        minSdkVersion flutter.minSdkVersion\n        targetSdkVersion flutter.targetSdkVersion\n        versionCode flutterVersionCode.toInteger()\n        versionName flutterVersionName\n        // This right here!\n        manifestPlaceholders = [someKey: "@string/some_value"]\n    }\n    \xe2\x8b\xae\n}\n
Run Code Online (Sandbox Code Playgroud)\n

事实证明,multidex 支持引入了动态确定应用程序名称的需求,因此需要${applicationName}清单中的占位符。

\n

该值由 Flutter Gradle 插件通过 确定,因此manifestPlaceholders如果您通过重新分配来替换该值,则会遇到此问题。修复方法很简单:将您的值添加到现有值中,+=如下所示:

\n
android {\n    \xe2\x8b\xae\n    defaultConfig {\n        applicationId "com.example.my_app"\n        minSdkVersion flutter.minSdkVersion\n        targetSdkVersion flutter.targetSdkVersion\n        versionCode flutterVersionCode.toInteger()\n        versionName flutterVersionName\n        // Fixed now! Note the plus!\n        manifestPlaceholders += [someKey: "@string/some_value"]\n    }\n    \xe2\x8b\xae\n}\n
Run Code Online (Sandbox Code Playgroud)\n