android - 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"
解决方案
该问题似乎与我的 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
}
从块中删除renderscriptSupportModeEnabled
andrenderscriptTargetApi
似乎可以解决问题。
推荐阅读
- android - 工作管理器未调用 doWork() 方法
- c# - 异常处理程序不捕获异常
- glibc - 终止 shell 的步骤
- c++ - 如何使用线程 ID 终止线程?C++
- javascript - 为什么javascript正则表达式(用于测试函数)对相似类型的字符串显示真假
- outlook - 如何通过电子邮件发送简单的自适应卡片?
- python - 在 anaconda 5.3 中安装 tensorflow gpu
- dynamic - common-lisp 中的动态宏 - 何时以及如何使用
- php - 我如何处理非常大的数组/JS 对象?
- javascript - 在 javascript 中从 youtube 禁用“allowfullscreen”