Error: attribute 'package' in <manifest> tag is not a valid Android package name
Error: attribute 'package' in <manifest> tag is not a valid Android package name
我正在尝试编写一个 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,如果这可能相关的话。此外,"Merged Manifest" 列出了 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的开头或者结尾有下划线(这里不是),我真的很茫然
将 applicationId "dndtools"
更改为 applicationId "com.dndtools.android.dndtools"
。
applicationId
在你的 build.gradle 文件中被用作真正的包,这就是为什么你也可以在合并的 manfiest 中看到它。更新它以匹配您在 Android Manfiest 中的那个,它应该可以正常工作。
至于为什么它是一个无效的包 - 它需要至少有一个点才能安装在 Android。
在我的案例中,我已经更新 Android studio 版本 3.5.3,并且在项目设置时,我错误地添加了 applicationIdSuffix = kotlin_version,这就是导致问题的原因。
所以简单地删除这一行帮助我解决了这个问题。
就我而言,我使用默认配置构建应用程序
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'
我觉得问题应该是number和point(.)不能是包名,所以删代码
applicationIdSuffix kotlin_version
它对我有用,因为 kotlin_version 值它是 ext.kotlin_version = "1.4.21"
,当我的 appid 包含数字和点 (.) 时它无法工作。 android appid(pacakege name) 应该是这样的 'come.domain.project' 是反向域名.
我的问题是包的命名不正确。我放了 com.example.3d
之类的东西。您不能以 3d
.
这样的数字开头
Android 应用程序的完整 Java 语言风格包名称。该名称可以包含大写或小写字母('A' 到 'Z')、数字和下划线 ('_')。但是,单个包名称部分只能以字母开头
我正在尝试编写一个 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,如果这可能相关的话。此外,"Merged Manifest" 列出了 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的开头或者结尾有下划线(这里不是),我真的很茫然
将 applicationId "dndtools"
更改为 applicationId "com.dndtools.android.dndtools"
。
applicationId
在你的 build.gradle 文件中被用作真正的包,这就是为什么你也可以在合并的 manfiest 中看到它。更新它以匹配您在 Android Manfiest 中的那个,它应该可以正常工作。
至于为什么它是一个无效的包 - 它需要至少有一个点才能安装在 Android。
在我的案例中,我已经更新 Android studio 版本 3.5.3,并且在项目设置时,我错误地添加了 applicationIdSuffix = kotlin_version,这就是导致问题的原因。
所以简单地删除这一行帮助我解决了这个问题。
就我而言,我使用默认配置构建应用程序
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'
我觉得问题应该是number和point(.)不能是包名,所以删代码
applicationIdSuffix kotlin_version
它对我有用,因为 kotlin_version 值它是 ext.kotlin_version = "1.4.21"
,当我的 appid 包含数字和点 (.) 时它无法工作。 android appid(pacakege name) 应该是这样的 'come.domain.project' 是反向域名.
我的问题是包的命名不正确。我放了 com.example.3d
之类的东西。您不能以 3d
.
Android 应用程序的完整 Java 语言风格包名称。该名称可以包含大写或小写字母('A' 到 'Z')、数字和下划线 ('_')。但是,单个包名称部分只能以字母开头