错误:<manifest>标签中的属性“ package”不是有效的Android包名称

时间:2019-04-09 19:23:00

标签: android aapt2

我正在尝试编写一个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的开头或结尾都有下划线(这里不是这种情况),所以我真的很茫然

3 个答案:

答案 0 :(得分:3)

就我而言,我已将Android Studio 更新版本3.5.3 ,并且在项目设置过程中,我错误地添加了 applicationIdSuffix = kotlin_version < / strong>,这就是导致问题的原因。

因此,只需删除此行即可帮助我解决此问题。

答案 1 :(得分:0)

applicationId "dndtools"更改为applicationId "com.dndtools.android.dndtools"

您的build.gradle文件中的

applicationId才是真正的软件包,这就是为什么您也可以在合并的manfiest中看到它。更新它以匹配您在Android Manfiest中拥有的那个,它应该可以正常工作。

关于为什么它是无效的软件包-它必须至少包含一个点才能在Android上安装。

答案 2 :(得分:0)

就我而言,我使用默认配置来构建应用

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'

我认为问题应该是数字,而point(。)不能是程序包名称,所以我删除了代码

applicationIdSuffix kotlin_version

这对我有用,因为kotlin_version的值为ext.kotlin_version = "1.4.21",当我的appid包含数字和point(。)时,它无法工作。在android中,appid(pacakege名称)应类似于此“ come.domain.project”,它是反向域名。