我正在尝试重建我用 kotlin 编写的项目,但它一直因错误而失败
Program type already present: androidx.annotation.AnimRes
我试过了
缓存失效
清理和重建
使用 ./gradlew build --stacktrace --info 命令
但没有成功。
异常(exception)是
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
我的应用的 build.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
}
最佳答案
在苦苦挣扎并四处寻求帮助后,我发现 ./gradlew app:dependencies 命令提供了重要的输出来解决错误。
首先报错是Program type already present: androidx.annotation.AnimRes
程序类型已经存在表示存在命名冲突,在这种情况下是androidx.annotation库,被多个库使用。即其他库包含androidx.annotation库 作为传递依赖。要查看这个库,我从项目的根文件夹(我的操作系统是 Ubuntu)打开终端并运行 ./gradlew app:dependencies 命令。它产生了一长串配置及其依赖关系。以下是摘录。
debugCompileClasspath - Resolved configuration for compilation for variant: debug
+--- androidx.databinding:databinding-common:3.3.0-alpha07
+--- androidx.databinding:databinding-runtime:3.3.0-alpha07
| +--- androidx.lifecycle:lifecycle-runtime:2.0.0-alpha1 -> 2.0.0-rc01
| | +--- androidx.lifecycle:lifecycle-common:2.0.0-rc01
| | | \--- androidx.annotation:annotation:1.0.0-rc01 -> 1.0.0-rc02
| | +--- androidx.arch.core:core-common:2.0.0-rc01
| | | \--- androidx.annotation:annotation:1.0.0-rc01 -> 1.0.0-rc02
| | \--- androidx.annotation:annotation:1.0.0-rc01 -> 1.0.0-rc02
| +--- androidx.collection:collection:1.0.0-alpha1 -> 1.0.0-rc02
| | \--- androidx.annotation:annotation:1.0.0-rc02
| \--- androidx.databinding:databinding-common:3.3.0-alpha07
+--- androidx.databinding:databinding-adapters:3.3.0-alpha07
| +--- androidx.databinding:databinding-common:3.3.0-alpha07
| \--- androidx.databinding:databinding-runtime:3.3.0-alpha07 (*)
上面的摘录显示了 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.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
kapt
+--- androidx.lifecycle:lifecycle-compiler:2.0.0-alpha1
| +--- androidx.lifecycle:lifecycle-common:2.0.0-alpha1
| | \--- androidx.annotation:annotation:1.0.0-alpha1
| +--- org.jetbrains.kotlin:kotlin-stdlib:1.2.41
| | \--- org.jetbrains:annotations:13.0
| +--- com.google.auto:auto-common:0.6
| | \--- com.google.guava:guava:18.0 -> 23.3-jre
| | +--- com.google.code.findbugs:jsr305:1.3.9
| | +--- com.google.errorprone:error_prone_annotations:2.0.18
| | +--- com.google.j2objc:j2objc-annotations:1.1
| | \--- org.codehaus.mojo:animal-sniffer-annotations:1.14
| \--- com.squareup:javapoet:1.8.0
从上面我们可以看出,androidx.lifecycle:lifecycle-compiler:2.0.0-alpha1包含androidx的1.0.0-alpha1版本.annotation:注解
这意味着最后,我的模块 app 将有两个版本 1.0.0-alpha1 和 1.0.0-rc02 这使得构建失败。
为了解决这个错误,我只是通过在我的应用程序的 build.gradle 中添加以下代码块来删除传递依赖项
configurations {
compile.exclude group: 'androidx.annotation', module: 'annotation'
}
所以我的应用程序的 build.gradle 将如下所示
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'realm-android'
android {
//bla bla bla
}
configurations {
compile.exclude group: 'androidx.annotation', module: 'annotation'
}
dependencies {
// bla bla bla
}
在那之后,我刚刚同步、清理并重建了我的项目。
关于android - com.android.tools.r8.errors.CompilationError : Program type already present: androidx. annotation.AnimRes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52002186/
我正在使用这个:4.times{|i|assert_not_equal("content#{i+2}".constantize,object.first_content)}我之前声明过局部变量content1content2content3content4content5我得到的错误NameError:wrongconstantnamecontent2这个错误是什么意思?我很确定我想要content2=\ 最佳答案 你必须用一个大字母来调用ruby常量:Content2而不是content2。Aconstantnamestart
我克隆了一个rails仓库,我现在正尝试捆绑安装背景:OSXElCapitanruby2.2.3p173(2015-08-18修订版51636)[x86_64-darwin15]rails-v在您的Gemfile中列出的或native可用的任何gem源中找不到gem'pg(>=0)ruby'。运行bundleinstall以安装缺少的gem。bundleinstallFetchinggemmetadatafromhttps://rubygems.org/............Fetchingversionmetadatafromhttps://rubygems.org/...Fe
我在新的Debian6VirtualBoxVM上安装RVM时遇到问题。我已经安装了所有需要的包并使用下载了安装脚本(curl-shttps://rvm.beginrescueend.com/install/rvm)>rvm,但以单个用户身份运行时bashrvm我收到以下错误消息:ERROR:Unabletocheckoutbranch.安装在这里停止,并且(据我所知)没有安装RVM的任何文件。如果我以root身份运行脚本(对于多用户安装),我会收到另一条消息:Successfullycheckedoutbranch''安装程序继续并指示成功,但未添加.rvm目录,甚至在修改我的.bas
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路
我正在关注Hartl的railstutorial.org并已到达11.4.4:Imageuploadinproduction.我做了什么:注册亚马逊网络服务在AmazonIdentityandAccessManagement中,我创建了一个用户。用户创建成功。在AmazonS3中,我创建了一个新存储桶。设置新存储桶的权限:权限:本教程指示“授予上一步创建的用户读写权限”。但是,在存储桶的“权限”下,未提及新用户名。我只能在每个人、经过身份验证的用户、日志传送、我和亚马逊似乎根据我的名字+数字创建的用户名之间进行选择。我已经通过选择经过身份验证的用户并选中了上传/删除和查看权限的框(而不
我在en:语言环境中有一个字符串display_device:toplay:getplayer冒号给我的错误是cannotloadtranslationsfromC:/DocumentsandSettings/rajg/discoveryaws/branches/internationalization/config/locales/en.yml,expectedittoreturnahash,butdoesnot我怎样才能让它工作? 最佳答案 如果你用这样的引号将它括起来,你可以在你的字符串中转义冒号(和其他“重要”字符):dis
我使用RVM安装Ruby-2.1.5并再次运行bundle。现在pggem不会安装,我得到这个错误:geminstallpg-v'0.17.1'----with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_configBuildingnativeextensionswith:'--with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config'Thiscouldtakeawhile...ERROR:Error
我是Rails的新手,我遇到了一个错误,但我似乎找不到问题所在。这是日志:[32651:ERROR]2012-10-0913:46:52::comparisonofFloatwithFloatfailed[32651:ERROR]2012-10-0913:46:52::/home/sunny/backend/lib/analytics/lifetime.rb:45:in`each'/home/sunny/backend/lib/analytics/lifetime.rb:45:in`max'/home/sunny/backend/lib/analytics/lifetime.rb:45
我使用raise(ConfigurationError.new(msg))引发错误我试着用rspec测试一下:expect{Base.configuration.username}.toraise_error(ConfigurationError,message)但这行不通。我该如何测试呢?目标是匹配message。 最佳答案 您可以使用正则表达式匹配错误消息:it{expect{Foo.bar}.toraise_error(NoMethodError,/private/)}这将检查NoMethodError是否由privateme
RuntimeError:CUDAerror:device-sideasserttriggered问题描述解决思路发现问题:总结问题描述当我在调试模型的时候,出现了如下的问题/opt/conda/conda-bld/pytorch_1656352465323/work/aten/src/ATen/native/cuda/IndexKernel.cu:91:operator():block:[5,0,0],thread:[63,0,0]Assertion`index>=-sizes[i]&&index通过提示信息可以知道是个数组越界的问题。但是如图一中第二行话所说这个问题可能并不出在提示的代码段