一般情况下,当我们通过USB链接手机进行测试app的时候,并不会出现包冲突问题,或者很少出现。但是当我们 打release apk的时候,通过运行 assembleRelease的时候,会经常出现duplicate entry
点击右侧gradle 中app 目录下面的build中的clean 或者cleanBuildCache时,显示 “BUILD SUCCESSFUL”
但是当你运行其中的 assembleRelease的命令的时候就会出现
类似这样的错误
java.util.zip.ZipException: duplicate entry:
android/support/v4/app/FragmentManagerNonConfig.class
duplicate entry 双重输入 的意思
也就是包重复或者类重复
解决步骤:
1、右侧gradle 中app下android目录中,执行androidDependencies命令。
这个命令是查看当前项目下所有的依赖。。
2、通过第一步的命令可以查看到重复的依赖项目,删除低版本的。
但是有的依赖项目包含其他的依赖项目 比如 support-v4就包含recycleView的依赖。
3、解决二中出现的问题,需要使用一下代码
api ('com.android.support:design:26.0.0'){
exclude group:'com.android.support', module: 'support-v4'
exclude group:'com.android.support', module: 'support-core-ui'
exclude group:'com.android.support', module: 'support-compat'
exclude group:'com.android.support', module: 'support-annotations'
exclude group:'com.android.support', module: 'recyclerview-v7'
}
api的意义可以自己百度
exclude 排除 的意思
意思就只排除design中的那个模块下的那个包名。
4、这需要你不停的运行assembleRelease命令,在项目Project目录下面的
External Libraries中找对对应的重复的包,然后通过exclude的语法排除掉,就可以成功打包release版本了。
仅供参考,望广大网友多提意见。。
网友评论