Ошибка: атрибут «пакет» в теге <manifest> не является допустимым именем пакета Android

Я пытаюсь написать приложение для Android, которое когда-то создавалось. Теперь каждый раз, когда я строю, я получаю следующую ошибку:

Caused by: com.android.builder.internal.aapt.v2.Aapt2Exception: Android resource linking failed
C:\Users\Jay\AndroidStudioProjects\DndTools-App\app\build\intermediates\merged_manifests\debug\AndroidManifest.xml:2: AAPT: 
error: attribute 'package' in <manifest> tag is not a valid Android package name: 'dndtools'.

Первоначально я начал с учебника по android-kotlin в качестве основы, так как хотел ознакомиться с kotlin и android, если это может быть уместно. Кроме того, в «Объединенном манифесте» указано package = dndtools вместо com.dndtools.android.dndtools, что тоже не уверено, актуально ли это.

AndroidManifest.xml

<?xml version = "1.0" encoding = "utf-8"?>
<manifest xmlns:android = "http://schemas.android.com/apk/res/android"
    xmlns:tools = "http://schemas.android.com/tools"
    package = "com.dndtools.android.dndtools">

  <application
    android:allowBackup = "true"
    android:icon = "@mipmap/ic_launcher"
    android:label = "@string/app_name" //dndtools
...

build.gradle

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'
def androidSupportVersion = '28.0.0'

android {
    compileSdkVersion 28
    buildToolsVersion "28.0.3"
    defaultConfig {
        applicationId "dndtools"
        minSdkVersion 21
        targetSdkVersion 28
...

Я искал в Интернете, и у других, у которых была эта ошибка, обычно было подчеркивание в начале или в конце их applicationId (что здесь не так), поэтому я действительно в растерянности

9
0
11 189
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

Замените applicationId "dndtools" на applicationId "com.dndtools.android.dndtools".

applicationId в вашем файле build.gradle используется как реальный пакет, поэтому вы можете увидеть его и в объединенном манфисте. Обновите его, чтобы он соответствовал тому, который у вас есть в Android Manfiest, и он должен работать нормально.

Что касается того, почему это недопустимый пакет - в нем должна быть хотя бы одна точка, чтобы его можно было установить на Android.

На данный момент я сам это понял, но это правильный ответ. Спасибо!

jay p 11.04.2019 12:02

В моем случае у меня есть обновлен студия Android для версия 3.5.3, и во время настройки проекта я по ошибке добавил applicationIdSuffix = kotlin_version, поэтому это и вызывает проблему.

Поэтому простое удаление этой строки помогло мне решить эту проблему.

У меня тоже была похожая проблема. Мне пришлось удалить applicationIdSuffix и VersionNameSuffix из приложения build.gradle.

SATYAJEET RANJAN 26.02.2020 19:54

в моем случае я создаю приложение, используя конфигурацию по умолчанию

compileSdkVersion 30

defaultConfig {
    applicationId "com.webview.app"
    minSdkVersion 23
    targetSdkVersion 30
    versionCode 1
    versionName "1.0"

    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    applicationIdSuffix kotlin_version
}

когда я добавляю productFlavors

  flavorDimensions "default"
  productFlavors {
    test01{
        dimension "default"
        applicationIdSuffix ".test"
        versionNameSuffix "-test00"
    }

    test01{
        dimension "default"
        applicationIdSuffix ".test"
        versionNameSuffix "-test01"
    }

    test01{
        dimension "default"
        applicationIdSuffix ".test"
        versionNameSuffix "-test02"
    }
}

затем я запускаю свое приложение, я получил это сообщение

tag is not a valid Android package name: 'com.webview.app.1.4.21.jb'

я думаю, что проблема должна быть числом, а точка (.) не может быть именем пакета, поэтому я удаляю код

applicationIdSuffix kotlin_version

это работает для меня, потому что значение kotlin_version это ext.kotlin_version = "1.4.21", когда мой appid содержит число и точку (.), он не может работать. в android appid (имя пакета) должно быть похоже на «come.domain.project», это обратное доменное имя.

Моя проблема заключалась в неправильном именовании пакета if. Я поставил что-то вроде com.example.3d. Нельзя начинать с числа вроде 3d.

Полное имя пакета в стиле языка Java для приложения Android. Имя может содержать буквы верхнего или нижнего регистра (от «A» до «Z»), цифры и знаки подчеркивания («_»). Однако отдельные части имени пакета могут начинаться только с букв.

Другие вопросы по теме