Вопрос или проблема
ОШИБКА: Сборка завершилась с исключением.
- Что пошло не так:
Не удалось выполнить задачу ‘:app:processDebugResources’.
Произошла ошибка при выполнении com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask$TaskAction
Связывание ресурсов Android не удалось
C:\Users\chauk\AndroidStudioProjects\Testft_android\build\app\intermediates\packaged_manifests\debug\AndroidManifest.xml:52: ошибка: атрибут ‘android:name’ в теге должен быть допустимым именем класса Java.
Вот мой AndroidManifest.xml для проверки необходимой конфигурации.
<application
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher"
android:label="testft_android">
<activity
android:name="com.example.testft_android.MainActivity"
android:exported="true"
android:launchMode="singleTop"
android:taskAffinity=""
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<!-- Указывает тему Android, которая применяется к этой активности, как только
процесс Android запущен. Эта тема видна пользователю
пока инициализируется пользовательский интерфейс Flutter. После этого эта тема продолжает
определять фоновый экран окна за пользовательским интерфейсом Flutter. -->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- Не удаляйте мета-данные ниже.
Это используется инструментом Flutter для генерации GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
<!-- Необходимо для запроса действий, которые могут обрабатывать текст, см.:
https://developer.android.com/training/package-visibility и
https://developer.android.com/reference/android/content/Intent#ACTION_PROCESS_TEXT.
В частности, это используется движком Flutter в io.flutter.plugin.text.ProcessTextPlugin. -->
<queries>
<intent>
<action android:name="android.intent.action.PROCESS_TEXT"/>
<data android:mimeType="text/plain"/>
</intent>
</queries>
Ошибка, которую вы видите, указывает на проблему с атрибутом android:name
в теге <application>
в вашем AndroidManifest.xml
. В частности, android:name="${applicationName}"
не разрешается в допустимое имя класса Java, что требуется Android.
Решение
Атрибут android:name
должен либо:
- Указывать полное имя класса Java (например,
"com.example.testft_android.MyApplication"
), если вы создали пользовательский классApplication
. - Быть опущенным, если вам не нужен пользовательский класс
Application
.
Шаги для исправления
-
Удалите или исправьте атрибут
android:name
:- Вариант 1: Удалите строку
android:name
полностью, если вам не нужен пользовательский классApplication
:<application android:icon="@mipmap/ic_launcher" android:label="testft_android">
- Вариант 2: Если у вас есть пользовательский класс
Application
(например,MyApplication
вcom.example.testft_android
), укажите полное имя класса:<application android:name="com.example.testft_android.MyApplication" android:icon="@mipmap/ic_launcher" android:label="testft_android">
- Вариант 1: Удалите строку
-
Синхронизируйте и перестройте проект:
После обновленияAndroidManifest.xml
синхронизируйте проект с Gradle и попробуйте его перестроить.
Это решит проблему.
Возможно, у вас опечатка, но вы можете упростить это до
<application
android:name=".MyApplication"
Или как называется ваш класс приложения. Если у вас нет переопределенного класса приложения, вам не нужно указывать этот атрибут.
ошибка: атрибут ‘android:name’ в теге должен быть допустимым классом Java
<application
android:name="${applicationName}"
- очистите и перестройте проект, проверьте, работает ли он, оставьте 2-й шаг.
- удалите android:name и перестройте проект.
Ответ или решение
Ошибка, с которой вы столкнулись, связана с атрибутом android:name
в теге <application>
вашего файла AndroidManifest.xml
. Сообщение об ошибке указывает на то, что значение этого атрибута не является валидным именем Java класса. Давайте разберёмся, как правильно настроить ваш AndroidManifest.xml
чтобы устранить эту ошибку.
Причина Ошибки
Атрибут android:name
указывает на название класса, который должен быть наследником класса Application
. Когда вы пишете:
<application
android:name="${applicationName}"
...
значение ${applicationName}
не разрешается в фактическое имя класса, что и приводит к ошибке.
Решение
Для того чтобы исправить данную ошибку, выполните следующие шаги:
1. Убедитесь, что вы создали Класс Приложения
Если вы намеренно настроили своё приложение с помощью пользовательского класса Application, убедитесь, что у вас есть такой класс. Например:
package com.example.testft_android;
import android.app.Application;
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
}
}
2. Укажите Полное Имя Класса
Если пользовательский класс MyApplication
действительно существует, замените строку:
android:name="${applicationName}"
на полное имя вашего класса:
<application
android:name="com.example.testft_android.MyApplication"
android:icon="@mipmap/ic_launcher"
android:label="testft_android">
3. Удалите Атрибут android:name
(если не требуется)
Если вы не используете пользовательский класс Application
, просто удалите этот атрибут:
<application
android:icon="@mipmap/ic_launcher"
android:label="testft_android">
Шаги для Исправления
-
Измените или Удалите Атрибут:
- Если у вас есть собственный класс
Application
, укажите его полное имя. - Если нет, просто удалите атрибут
android:name
.
- Если у вас есть собственный класс
-
Синхронизируйте и Перестройте Проект: После внесения изменений, убедитесь, что вы синхронизировали проект с Gradle и реакции проект.
Заключение
Эта ошибка, связанная с отсутствием валидного имени Java класса в атрибуте android:name
, легко исправляется либо указанием корректного класса, либо полным его удалением, если он не нужен. Регулярно проверяйте ваши файлы конфигурации, чтобы избежать подобных проблем в будущем. Надеюсь, это руководство поможет вам решить данную проблему!