JetGradlePlugin,transformDexArchiveWithExternalLibsDexMergerForDebug

114 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第25天,点击查看活动详情

目录

GradleVersion for class: JetGradlePlugin

transformDexArchiveWithExternalLibsDexMergerForDebug:jar包引入重复,产生冲突问题;

Multiple dex files define Landroid/support/v7或者v4:


Gradle

是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置。
面向Java应用为主。当前其支持的语言C++、Java、Groovy、Kotlin、Scala和Swift,计划未来将支持更多的语言。

GradleVersion for class: JetGradlePlugin

JetGradlePlugin: gradle版本和android studio 版本匹配问题;

有的朋友打开别人的工程可能出现如下错误:
No such property: GradleVersion for class: JetGradlePlugin
这是由于gradle 设置的版本太高,而本地又没有该版本导致的
解决方法:
第一步:降低工程的build.gradle 版本号
比如 classpath ‘com.android.tools.build:gradle:3.0.1’

然后try again
第二部:替换gradle/wrapper 替换成3.0.1可使用的版本(我用的是4.1的版本)
gradle-wrapper.jar 和gradle-wrapper.properties要同时替换

transformDexArchiveWithExternalLibsDexMergerForDebug:jar包引入重复,产生冲突问题;

添加“multiDexEnabled true”到 defaultConfig

在Setting->Build,Execution,Deployment->Compiler中的Command-line Opptions中输入**–stacktrace**启用堆栈跟踪:得到冲突jar

​编辑

Multiple dex files define Landroid/support/v7或者v4:

Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: 
com.android.ide.common.process.ProcessException: 
java.util.concurrent.ExecutionException: 
com.android.dex.DexException: 
Multiple dex files define Landroid/support/v4/app/NavUtils$NavUtilsImpl;

分析:
其实是libs下有个v4、v7包

通过compile fileTree(include: ‘*.jar’, dir: ‘libs’)来引入v4包的,把这个jar包删除,

改为gradle引入 compile ‘com.android.support:support-v4:25.3.1’问题解决,

可能是gradle引入的gradle才能自动解决重复的包,而通过jar包引入的gradle处理不了