ошибка: атрибут ‘android:name’ в теге должен быть допустимым именем класса Java

Вопрос или проблема

ОШИБКА: Сборка завершилась с исключением.

  • Что пошло не так:
    Не удалось выполнить задачу ‘: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 должен либо:

  1. Указывать полное имя класса Java (например, "com.example.testft_android.MyApplication"), если вы создали пользовательский класс Application.
  2. Быть опущенным, если вам не нужен пользовательский класс Application.

Шаги для исправления

  1. Удалите или исправьте атрибут 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">
      
  2. Синхронизируйте и перестройте проект:
    После обновления AndroidManifest.xml синхронизируйте проект с Gradle и попробуйте его перестроить.

Это решит проблему.

Возможно, у вас опечатка, но вы можете упростить это до

<application
    android:name=".MyApplication"

Или как называется ваш класс приложения. Если у вас нет переопределенного класса приложения, вам не нужно указывать этот атрибут.

ошибка: атрибут ‘android:name’ в теге должен быть допустимым классом Java

<application
    android:name="${applicationName}"
  1. очистите и перестройте проект, проверьте, работает ли он, оставьте 2-й шаг.
  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">

Шаги для Исправления

  1. Измените или Удалите Атрибут:

    • Если у вас есть собственный класс Application, укажите его полное имя.
    • Если нет, просто удалите атрибут android:name.
  2. Синхронизируйте и Перестройте Проект: После внесения изменений, убедитесь, что вы синхронизировали проект с Gradle и реакции проект.

Заключение

Эта ошибка, связанная с отсутствием валидного имени Java класса в атрибуте android:name, легко исправляется либо указанием корректного класса, либо полным его удалением, если он не нужен. Регулярно проверяйте ваши файлы конфигурации, чтобы избежать подобных проблем в будущем. Надеюсь, это руководство поможет вам решить данную проблему!

Оцените материал
Добавить комментарий

Капча загружается...