#android #flutter #dart #deprecated
Вопрос:
Я попытался импортировать устаревшее приложение flutter, но после выполнения шагов, приведенных на github, я получаю это
C:UserspersonalAndroidStudioProjectsflash-chat-flutterandroidappsrcmainAndroidManifest.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:UserspersonalAndroidStudioProjectsflash-chat-flutterandroidappsrcdebugAndroidManifest.xml Error:
Validation failed, exiting
Комментарии:
1. Можете ли вы добавить свой AndroidManifest.xml досье.
2. Пожалуйста, уточните вашу конкретную проблему или предоставьте дополнительные сведения, чтобы выделить именно то, что вам нужно. Как написано в настоящее время, трудно точно сказать, о чем вы спрашиваете.
Ответ №1:
Я тоже столкнулся с этим. В моем случае это было потому, что я установил manifestPlaceholders
«обычный» способ, назначив с =
помощью (как, похоже, делают все примеры):
В android/app/build.gradle
:
android {
⋮
defaultConfig {
applicationId "com.example.my_app"
minSdkVersion flutter.minSdkVersion
targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
// This right here!
manifestPlaceholders = [someKey: "@string/some_value"]
}
⋮
}
Оказывается, поддержка multidex привела к необходимости динамического определения имени приложения, следовательно ${applicationName}
, заполнителя в манифесте.
Это значение определяется плагином Flutter Gradle здесь с помощью manifestPlaceholders
, поэтому, если вы замените значение, переназначив его, вы столкнетесь с этой проблемой. Исправление простое: добавьте свои значения к существующим =
примерно так:
android {
⋮
defaultConfig {
applicationId "com.example.my_app"
minSdkVersion flutter.minSdkVersion
targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
// Fixed now! Note the plus!
manifestPlaceholders = [someKey: "@string/some_value"]
}
⋮
}
Ответ №2:
Я получил ту же ошибку:
Вам нужно добавить это в свой build.gradle (YourFlutterProject/android/app/build.gradle)
buildTypes {
release {
manifestPlaceholders = [applicationName: "android.app.Application"]
}
debug {
manifestPlaceholders = [applicationName: "android.app.Application"]
}
build{
manifestPlaceholders = [applicationName: "android.app.Application"]
}
}
Комментарии:
1. Вам не нужно этого делать; фреймворк сделает это за вас. На самом деле фреймворк должен делать это динамически, чтобы правильно обрабатывать многодексные сценарии. Согласно моему ответу, вам просто нужно избегать перезаписи значений, предоставляемых фреймворком.