Duplicate class com.blankj.utilcode.BuildConfig found in modules classes.jar

20190410 放下 android 好久以后,最近又从新学习,打开之前的项目,老是遇到各类问题,大部分发生在 gradle 相关细节

过去好好地项目,因为 Android Studio 升级,gradle 升级,忽然出现各类警告、错误,老是很心烦的!

大部分问题之前也都处理过,当时解决完就过去了,没有记录,如今不得不重复处理好多相同类型的问题

一、当前环境

  1. android Studio 版本 : 3.4java

  2. $ 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

  1. $ ./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>.

三、 错误处理

  1. 参考 https://blog.csdn.net/willhanweijia/article/details/87250386学习

  2. 检查 Nodule 的 gradle //AndroidUtilCode implementation 'com.blankj:utilcode:1.21.0'gradle

  3. 按照参考博客,修改了 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

  4. 根据我本身的经验,错误缘由多是 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 ... 因此不改也能够!

  5. 找到这个 Blankj 插件的仓库,看看最新版本是多少? https://github.com/Blankj/AndroidUtilCode

  6. implementation 改为最新版 1.23.7

    //AndroidUtilCode
     implementation 'com.blankj:utilcode:1.23.7'

    再次 rebuild ,ok了!

四、 后记:怎么查找某个插件的开源仓库?

原始项目是别人写的,我不知道那些插件他最初怎么来的,因此个人方法很笨拙!谁能告诉我有什么好办法?

网上下载的不少sample 也是这样的,都是一两年以前的,其中的插件必定不是最新的,若是遇到 rebuild 不过去,只能去查找插件的最近版本

如下是个人本办法:

  1. 像这种 implementation 'com.github.Cutta:GifView:1.1' 直接打开https://github.com 去搜索 关键字 GifView
  2. 像这种 implementation 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0-alpha-12' 的,我就直接输入 网址 com.scwang.smartrefresh ,通常都是百度出来的
相关文章
相关标签/搜索