Gradle资源冲突
Gradle资源冲突也是经常遇到的一个问题,甚至很多开发者问笔者,为什么之前ant的工程就可以编译过,而使用Gradle后就不能编译呢?最常见的错误Log就是——Multiple dex files define XXXXX。
这个问题的结果是由于两者编译时采用的方法不同而导致的。ant使用的是包含的方式进行编译,不同的模块有相同的资源也可以编译通过。而Gradle则要更加严格,它采用的是合并的方式进行编译,所有的文件、代码都会被Merge到一起,相同的资源名就会发生冲突。文件名、jar包、aar库版本都会存在这种问题。因此在使用时,建议开发者对代码规范进行调整,对于资源、文件名来说,尽量使用module前缀来进行区分,jar包、aar库的版本一定要进行统一管理,避免重复依赖、重复冲突的问题发生。
另外,笔者在使用过程中也发现,有些资源冲突的问题是由于不同版本的Gradle Android Plugin导致的。如果开发者检查下来始终没有发现有冲突的资源,那么就需要检查一下是否是因为插件版本导致的Bug。
