android Studio 版本 : 3.4java
$ java -version java version "10.0.2" 2018-07-17 Java(TM) SE Runtime Environment 18.3 (build 10.0.2+13) Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode)android
** 一直觉得本身使用的是 java 8 ,此刻记录博客时才知道一直使用的是 java 10 ** 回头升级到 java 11 或者降级到 java 8git
$ ./gradlew -vgithub
------------------------------------------------------------ Gradle 5.1.1 ------------------------------------------------------------ Build time: 2019-01-10 23:05:02 UTC Revision: 3c9abb645fb83932c44e8610642393ad62116807 Kotlin DSL: 1.1.1 Kotlin: 1.3.11 Groovy: 2.5.4 Ant: Apache Ant(TM) version 1.9.13 compiled on July 10 2018 JVM: 10.0.2 ("Oracle Corporation" 10.0.2+13) OS: Mac OS X 10.14.4 x86_64
rebuild 失败! 最后错误提示部分以下 app
... * What went wrong: Execution failed for task ':app:checkDebugDuplicateClasses'. > 1 exception was raised by workers: java.lang.RuntimeException: Duplicate class com.blankj.utilcode.BuildConfig found in modules classes.jar (com.blankj:bus:1.0) and classes.jar (com.blankj:utilcode:1.21.0) Go to the documentation to learn how to <a href="d.android.com/r/tools/classpath-sync-errors">Fix dependency resolution errors</a>.
参考 https://blog.csdn.net/willhanweijia/article/details/87250386学习
检查 Nodule 的 gradle //AndroidUtilCode implementation 'com.blankj:utilcode:1.21.0'gradle
按照参考博客,修改了 buildTypes 部分ui
buildTypes { debug { minifyEnabled false //minifyEnabled true //shrinkResources true //自动清理无用资源 proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } release { //minifyEnabled false minifyEnabled true shrinkResources true //自动清理无用资源 proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } }
刚开始注释掉 debug 的 proguardFiles ,好像对了一次!等我确认再次 rebuild 的时候,仍是宝同样的错误!blankj.utilcode 怎么又重复了呢?this
根据我本身的经验,错误缘由多是 implementation 的插件版本落后了,不适合我当前的 AS 或 gradle 版本,或者是编译 SDK、API 升级形成的 以前 gradle 设置是这样的spa
android { compileSdkVersion 27 buildToolsVersion '27.0.3' ...
同步的时候,会出现如下警告:
CONFIGURE SUCCESSFUL in 1s WARNING: The specified Android SDK Build Tools version (27.0.3) is ignored, as it is below the minimum supported version (28.0.3) for Android Gradle Plugin 3.4.0. Android SDK Build Tools 28.0.3 will be used. To suppress this warning, remove "buildToolsVersion '27.0.3'" from your build.gradle file, as each version of the Android Gradle Plugin now has a default version of the build tools. Remove Build Tools version and sync project Affected Modules: app
** 按照警告提示,注释掉 buildToolsVersion '27.0.3' !
android { compileSdkVersion 27 //buildToolsVersion '27.0.3' ...
** 应该直接修改 compileSdkVersion 以及后面的 'com.android.support:appcompat-v7:27.1.1' 等,既然 sync 的时候提示 Android SDK Build Tools 28.0.3 will be used ... 因此不改也能够!
找到这个 Blankj 插件的仓库,看看最新版本是多少? https://github.com/Blankj/AndroidUtilCode
implementation 改为最新版 1.23.7
//AndroidUtilCode implementation 'com.blankj:utilcode:1.23.7'
再次 rebuild ,ok了!
原始项目是别人写的,我不知道那些插件他最初怎么来的,因此个人方法很笨拙!谁能告诉我有什么好办法?
网上下载的不少sample 也是这样的,都是一两年以前的,其中的插件必定不是最新的,若是遇到 rebuild 不过去,只能去查找插件的最近版本
如下是个人本办法: