首页 > 解决方案 > AndroidX - 程序类型已经存在:androidx.annotation.BoolRes

问题描述

我今天尝试使用 Android Studio 中的“重构 - > 迁移到 AndroidX”选项将我当前的项目迁移到 AndroidX,每当我尝试编译我的应用程序时,我都会收到一个

程序类型已经存在:androidx.annotation.BoolRes

AGPBI: {"kind":"error","text":"程序类型已经存在:androidx.annotation.BoolRes","sources":[{}],"tool":"D8"} :app:transformDexArchiveWithExternalLibsDexMergerForDebug FAILED :app:buildInfoGeneratorDebug FAILURE:构建失败并出现异常。* 出了什么问题:任务 ':app:transformDexArchiveWithExternalLibsDexMergerForDebug' 执行失败。

我曾经./gradlew app:dependencies获取我的依赖项列表,但似乎很多库都在使用新的androidx.annotation:annotation:1.0.0依赖项。

//Android
implementation "androidx.constraintlayout:constraintlayout:$constraintLayout"
implementation "androidx.cardview:cardview:$androidX"
implementation "androidx.recyclerview:recyclerview:$androidX"
implementation "androidx.annotation:annotation:1.0.0"

//Material
implementation "com.google.android.material:material:$material"

// ViewModel and LiveData
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle"
annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle"

//Room
implementation "androidx.room:room-runtime:$room"
annotationProcessor "androidx.room:room-compiler:$room"

标签: androidandroid-studio

解决方案


该问题似乎与我的 build.gradle 文件中的 renderscript api 有关:

defaultConfig {
    applicationId "xxx"
    minSdkVersion 23
    targetSdkVersion 28
    versionCode versionMajor * 10000 + versionMinor * 100 + versionPatch
    versionName "${versionMajor}.${versionMinor}.${versionPatch}"
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    vectorDrawables.useSupportLibrary = true
    renderscriptTargetApi 28
    renderscriptSupportModeEnabled true
}

从块中删除renderscriptSupportModeEnabledandrenderscriptTargetApi似乎可以解决问题。


推荐阅读