当前位置: 代码迷 >> 综合 >> Caused by: org.gradle.tooling.BuildException: Warnings found during shrinking, please use -dontwarn
  详细解决方案

Caused by: org.gradle.tooling.BuildException: Warnings found during shrinking, please use -dontwarn

热度:69   发布时间:2023-12-17 05:18:10.0

开启混淆后编译失败。

提示

Caused by: org.gradle.tooling.BuildException: Warnings found during shrinking, please use -dontwarn or -ignorewarnings to suppress them.

 

在build文件加入一行

 useProguard true

就可以解决

buildTypes {

    debug {

        // 显示Log

        buildConfigField "boolean","LOG_DEBUG","true"

        versionNameSuffix "-debug"

        minifyEnabled true

        shrinkResources true

        useProguard true

        proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-ules.pro'

    }

...

}

 

 

转载:来自https://www.jianshu.com/p/9919caec54f6

=========================================================================================

原文如下:

最近升级了Android Studio 3.1.2,还没沉浸在欢乐中,就当头一棒,更新项目没事,但是运行项目就报错。错误信息如下:

Caused by: org.gradle.tooling.BuildException: Warnings found during shrinking, please use -dontwarn or -ignorewarnings to suppress them.

具体详情是:

错误

对于我这种英文战五渣,费老鼻子劲了,各种翻译,还是没有发现问题的关键。但是问题还是要解决,不然项目都run不起了。

然后各种尝试,突然想起我的app下的build.gradle文档配置信息可能有问题,于是查看该文件,发现是这样写的:

buildTypes {

    debug {

        // 显示Log

        buildConfigField "boolean","LOG_DEBUG","true"

        versionNameSuffix "-debug"

        minifyEnabled true //混淆打包

        shrinkResources true // 删除无效资源

        proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-ules.pro'

    }

...

}

我灵机一动,觉得可能是shrinkResources true这个导致的(没办法,以前Android Studio 2.3.2打包的时候遇到过这个坑),于是,我把shrinkResources 的值改成了false,再run,发现log显示:

Warnings found during shrinking, please use -dontwarn or -ignorewarnings to suppress them.

果然,报错不一样了,又是英文,老办法,翻译呗,猜想是混淆打包的锅。翻译出来是:

在收缩期间发现的警告,请使用DOWTWARN或-ICONRIONG警告来抑制它们。

what?什么玩意儿,不过-dontwarn or -ignorewarnings 都是混淆打包才有的专业术语,于是,修改minifyEnabled false,最后如下:

buildTypes {

    debug {

        // 显示Log

        buildConfigField "boolean","LOG_DEBUG","true"

        versionNameSuffix "-debug"

        minifyEnabled false

        shrinkResources false

        proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-ules.pro'

    }

...

}

再运行,debug版本运行成功!

不过虽然解决了,但是Android Studio 2.3.2 也是这样配置的,并没有出问题呀?而且minifyEnabled 和shrinkResources 的release版本值都是true,debug版本出问题,我担心release版本打包后也会出问题,于是,打包尝试了下,发现,居然没出问题,成功打包,什么情况?并且能运行起来,简单看了下,也没报错。

这么邪门的3.1.2版本,我已经无语了,这里记录下。

最后,经过不懈努力,终于,我还是找到了解决办法(我就是想使用混淆代码!!!),代码如下:

buildTypes {

    debug {

        // 显示Log

        buildConfigField "boolean","LOG_DEBUG","true"

        versionNameSuffix "-debug"

        minifyEnabled true

        shrinkResources true

        useProguard true

        proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-ules.pro'

    }

...

}

没错,追加一行useProguard true这个设置,报错就奇迹般没了,没了,没了!!!

查找资料,useProguard true是开启混淆的意思,这样,程序就好了。

好了,完美解决,结束!

  相关解决方案