我试图重建我的项目,我已经写在Kotlin,但它不断失败的错误
Program type already present: androidx.annotation.AnimRes
我试过了
- 使缓存失效
- 清理和重建
- 使用
./gradlew build --stacktrace --info
命令
但没有成功。
例外为
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesWithMultidexlistForDebug'
堆栈跟踪为
Caused by: java.lang.RuntimeException: com.android.build.api.transform.TransformException: Error while generating the main dex list.
at com.android.builder.profile.Recorder$Block.handleException(Recorder.java:55)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:104)
at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:230)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:50)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:131)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:300)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:292)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:174)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:120)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:99)
... 111 more
Caused by: com.android.build.api.transform.TransformException: Error while generating the main dex list.
at com.android.build.gradle.internal.transforms.D8MainDexListTransform.transform(D8MainDexListTransform.kt:143)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:239)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:235)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
... 124 more
Caused by: com.android.builder.multidex.D8MainDexList$MainDexListException: com.android.tools.r8.errors.CompilationError: Program type already present: androidx.annotation.AnimRes
at com.android.builder.multidex.D8MainDexList.generate(D8MainDexList.java:87)
at com.android.build.gradle.internal.transforms.D8MainDexListTransform.transform(D8MainDexListTransform.kt:128)
... 127 more
Caused by: com.android.tools.r8.errors.CompilationError: Program type already present: androidx.annotation.AnimRes
at com.android.tools.r8.utils.ProgramClassCollection.resolveClassConflictImpl(ProgramClassCollection.java:64)
at com.android.tools.r8.utils.ProgramClassCollection.lambda$create$0(ProgramClassCollection.java:25)
at com.android.tools.r8.utils.ProgramClassCollection.create(ProgramClassCollection.java:24)
at com.android.tools.r8.graph.LazyLoadedDexApplication$Builder.build(LazyLoadedDexApplication.java:124)
at com.android.tools.r8.dex.ApplicationReader.read(ApplicationReader.java:123)
at com.android.tools.r8.dex.ApplicationReader.read(ApplicationReader.java:86)
at com.android.tools.r8.GenerateMainDexList.run(GenerateMainDexList.java:41)
at com.android.tools.r8.GenerateMainDexList.run(GenerateMainDexList.java:111)
at com.android.builder.multidex.D8MainDexList.generate(D8MainDexList.java:83)
... 128 more
我的应用程序的版本。gradle是
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'realm-android'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.my.app.id"
minSdkVersion 15
targetSdkVersion 28
versionCode 1
versionName "1.0"
multiDexEnabled true
vectorDrawables.useSupportLibrary = true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
renderscriptTargetApi 19
renderscriptSupportModeEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dataBinding {
enabled true
}
buildToolsVersion '28.0.2'
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
//kotlin
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
//support
implementation "androidx.legacy:legacy-support-v4:$androidX"
implementation "androidx.appcompat:appcompat:$androidX"
implementation "androidx.constraintlayout:constraintlayout:1.1.2"
implementation "androidx.multidex:multidex:2.0.0"
implementation "androidx.recyclerview:recyclerview:$androidX"
implementation "androidx.vectordrawable:vectordrawable:$androidX"
implementation "androidx.cardview:cardview:$androidX"
implementation "androidx.palette:palette:$androidX"
implementation "com.google.android.material:material:$androidX"
//architecture
implementation "androidx.lifecycle:lifecycle-runtime:$architectureVersion"
implementation "androidx.lifecycle:lifecycle-extensions:$architectureVersionExt"
implementation "androidx.legacy:legacy-support-v4:$androidX"
kapt "androidx.lifecycle:lifecycle-compiler:$architectureVersion"
//data binding
//kapt "androidx.databinding:databinding-compiler:3.3.0-alpha04"
//glide
//kapt "com.github.bumptech.glide:compiler:$glideVersion"
//implementation "com.github.bumptech.glide:glide:$glideVersion"
implementation 'com.github.bumptech.glide:glide:4.8.0-SNAPSHOT'
implementation 'com.github.bumptech.glide:okhttp-integration:4.8.0-SNAPSHOT'
//dagger
implementation "com.google.dagger:dagger:$daggerVersion"
kapt "com.google.dagger:dagger-compiler:$daggerVersion"
implementation "com.google.dagger:dagger-android:$daggerVersion"
implementation "com.google.dagger:dagger-android-support:$daggerVersion"
// if you use the support libraries
kapt "com.google.dagger:dagger-android-processor:$daggerVersion"
//reactiveX
implementation "io.reactivex.rxjava2:rxandroid:$rxandroidVersion"
implementation "io.reactivex.rxjava2:rxjava:$rxjavaVersion"
implementation "io.reactivex.rxjava2:rxkotlin:$rxKotlinVersion"
//
implementation "com.jakewharton.rxbinding2:rxbinding:$rxBinding"
implementation "com.tbruyelle.rxpermissions2:rxpermissions:$rxPermissions"
//ucrop
implementation "com.github.yalantis:ucrop:$uCrop"
//other libraries
implementation "com.google.code.gson:gson:$gson"
implementation "com.googlecode.libphonenumber:libphonenumber:$phoneLibVersion"
//map and places
implementation "com.google.android.gms:play-services-places:$mapVersion"
implementation "com.google.android.gms:play-services-maps:$mapVersion"
//
implementation 'com.budiyev.android:circular-progress-bar:1.2.0'
//retrofit
implementation "com.squareup.retrofit2:retrofit:$retrofit"
implementation "com.squareup.retrofit2:converter-gson:$retrofit"
implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofit"
debugImplementation "com.squareup.okhttp3:logging-interceptor:$okhttpVersion"
testImplementation 'junit:junit:4.12'
androidTestImplementation "androidx.test:runner:$androidX"
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'
}
项目的build.gradle
buildscript {
ext.kotlin_version = '1.2.61'
ext.realmVersion ='5.4.2'
repositories {
jcenter()
maven {
name 'glide-snapshot'
url 'http://oss.sonatype.org/content/repositories/snapshots'
}
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.3.0-alpha07'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "io.realm:realm-gradle-plugin:$realmVersion"
//classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
maven { url "https://jitpack.io" }
maven {
name 'glide-snapshot'
url 'http://oss.sonatype.org/content/repositories/snapshots'
}
google()
}
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xmaxerrs" << "1000"
}
}
}
/**
* Configure common tasks on all the submodules
*/
allprojects { project ->
// Get versions, this is where we store things
// like the list of submodules or the version
project.apply from: "$rootDir/versions.gradle"
}
task clean(type: Delete) {
delete rootProject.buildDir
}
6条答案
按热度按时间mspsb9vt1#
经过 挣扎 和 挣扎 , 并 在 这里 和 那里 寻找 帮助 , 我 发现
./gradlew app:dependencies
命令 正在 提供 重要 的 输出 , 以 解决 错误 。首先 , 错误 是
Program type already present: androidx.annotation.AnimRes
Program type already present
意味 着 存在 命名 冲突 , 在 这种 情况 下 是 androidx . annotation 库 , 它 被 几 个 库 使用 。 也 就是 说 , 其他 库 包含androidx.annotation library
作为 一 个 可 传递 的 依赖 项 。 为了 查看 这些 库 , 我 从 我 的 项目 的 根 文件 夹 打开 终端 ( 我 的 操作 系统 是 Ubuntu ) 并 运行./gradlew app:dependencies
命令 。 它 产生 了 一 个 长 列表 的 配置 和 它们 的 依赖 项 。 下面 是 一 个 摘录 。中 的 每 一 个
上面 的 摘录 显示 了
debugCompileClasspath
配置 的 一些 依赖 项 。 我们 可以 看到androidx.databinding:databinding-runtime:3.3.0-alpha07
包含androidx.annotation:annotation:1.0.0-rc02
作为 可 传递 的 依赖 项 。它 还 包含
androidx.lifecycle:lifecycle-runtime:2.0.0-alpha1
, 而androidx.lifecycle:lifecycle-runtime:2.0.0-alpha1
又 包含androidx.annotation:annotation:1.0.0-rc01
。androidx.annotation:annotation:1.0.0-rc01 -> 1.0.0-rc02
表示 将 使用 版本1.0.0-rc02
, 而 不是 版本1.0.0-rc01
。下面 是
./gradlew app:dependencies
生成 的 同一 长 输出 的 另 一 个 摘录格式
从 上面 可以 看出 ,
androidx.lifecycle:lifecycle-compiler:2.0.0-alpha1
包含androidx.annotation:annotation
的1.0.0-alpha1
版本这 意味 着 最 后 , 我 的 模块
app
将 有 两 个 版本1.0.0-alpha1
和1.0.0-rc02
, 这 使得 构建 失败 。为了 解决 这个 错误 , 我 只是 通过 在 我 的 应用 的 build 中 添加 下面 的 代码 块 来 移除 传递 依赖 项 。 gradle
格式
我 的 应用 程序 的 build . gradle 将 如下 所 示
格式
之后 , 我 只是 同步 , 清理 和 重建 我 的 项目 。
sbtkgmzw2#
为了解决这个问题,我在Android Studio终端中编写命令
./gradlew clean
,瞧!izkcnapc3#
在我的情况下,我只是清理项目和重建它,它的工作。
ocebsuys4#
我 遇到 了 同样 的 错误 , 通过 在 Gradle 中 添加 这些 行 来 解决 。
中 的 每 一 个
unguejic5#
在应用gradle文件中添加
multiDexEnabled true
。gmxoilav6#
我在CI环境中遇到此错误,因为我使用的是来自Docker的jdk8-openj9 jdk。
切换到openjdk-8 docker映像解决了问题。