我正在尝试编写一个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的开头或结尾都有下划线(这里不是这种情况),所以我真的很茫然
答案 0 :(得分:3)
就我而言,我已将Android Studio 更新到版本3.5.3 ,并且在项目设置过程中,我错误地添加了 applicationIdSuffix = kotlin_version < / strong>,这就是导致问题的原因。
因此,只需删除此行即可帮助我解决此问题。
答案 1 :(得分:0)
将applicationId "dndtools"
更改为applicationId "com.dndtools.android.dndtools"
。
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”,它是反向域名。