java.util.zip.ZipException:重复条目:如何克服
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java.util.zip.ZipException:重复条目:如何克服,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5087字,纯文字阅读大概需要8分钟。
内容图文
![java.util.zip.ZipException:重复条目:如何克服](/upload/InfoBanner/zyjiaocheng/707/fc6c69512c0240d9a54f436e5e511500.jpg)
我在我的项目中使用了多个Android库和模块.每个人都有自己的v4.Support lib.我收到java.util.zip.ZipException:重复条目.
当我在项目中搜索重复的类文件时,由于每个库中有多个v4.support lib,因此这些类中有多个文件.我知道这个问题在这里被多次询问过,但没有什么对我有用.
我的问题是:如何删除这些多个v4.support文件?我想把这个v4.support lib只放一次,所有其他模块都应该从那里引用它.我该如何实现这一目标?
以下是我的build.gradle脚本
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
mavenCentral()
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'com.android.tools.build:gradle:1.1.0'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'
//classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+'
classpath 'io.fabric.tools:gradle:1.15.2'
}
}
apply plugin: 'android'
apply plugin: 'com.android.application'
apply plugin: 'android-apt'
apply plugin: 'io.fabric'
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile('com.crashlytics.sdk.android:crashlytics:2.2.3@aar') {
transitive = true
}
compile('com.android.support:multidex:1.0.0')
//compile ('com.android.support:appcompat-v7:22.1.0')
compile project(':..:..:..:..:..:..:android_libraries:appcompat')
compile project(':..:..:..:..:..:..:android_libraries:facebook')
compile project(':..:..:..:..:..:..:android_libraries:google_play_services:libproject:google-play-services_lib')
compile project(':..:..:..:..:..:..:android_libraries:SlidingMenu')
compile project(':..:..:..:..:..:..:android_libraries:StickingGridViewLibrary')
compile project(':..:..:..:..:..:..:android_libraries:view_pager_library')
compile project(':..:..:..:..:..:..:android_libraries:ZXing2.3')
compile project(':..:..:..:..:..:..:android_libraries:xyz')
compile project(':..:..:..:..:..:..:android_libraries:apptentive')
}
android {
compileSdkVersion 21
buildToolsVersion "21.1.0"
defaultConfig {
versionCode 1
versionName "1.0"
minSdkVersion 15
targetSdkVersion 21
// Enabling multidex support.
multiDexEnabled true
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
ant.importBuild './../../../../../../buildscripts/wlbuild.xml'
apt {
arguments {
androidManifestFile variant.outputs[0].processResources.manifestFile
// if you have multiple outputs (when using splits), you may want to have other index than 0
resourcePackageName 'com.kohls.mcommerce.opal'
// If you're using Android NBS flavors you should use the following line instead of hard-coded packageName
// resourcePackageName android.defaultConfig.applicationId
// You can set optional annotation processing options here, like these commented options:
// logLevel 'INFO'
// logFile '/var/log/aa.log'
}
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
// Move the tests to tests/java, tests/res, etc...
instrumentTest.setRoot('tests')
// Move the build types to build-types/<type>
// For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
// This moves them out of them default location under src/<type>/... which would
// conflict with src/ being used by the main source set.
// Adding new build types or product flavors should be accompanied
// by a similar customization.
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
buildDir = './../../../../../../build/native'
lintOptions {
abortOnError false
}
dexOptions {
incremental true
javaMaxHeapSize "4g"
}
packagingOptions {
exclude 'META-INF/LICENSE.txt'
}
}
我收到这样的错误.每次我清理项目时它都能顺利完成.但是当我尝试给出Run命令时,它会显示以下类型的错误.
Execution failed for task ':packageAllDebugClassesForMultiDex'.
> java.util.zip.ZipException: duplicate entry: android/support/v4/media/TransportMediatorCallback.class
解决方法:
当我解决上述问题并找到克服它的方法时. packageAllDebugClassesForMultiDex错误的主要原因与您在Stackoverflow中的所有其他帖子中找到的相同,即您必须拥有一些在项目中可以多次使用的类文件.在我的情况下,我在上面的项目中有很多模块,如Facebook,谷歌付费服务和滑动菜单等.所有这些模块都有自己的v4.support jar文件副本.
我所做的是删除所有这些库libs文件夹中的所有v4.support文件.
然后从我的sdks添加依赖到v4.support lib,即从Android Studio项目结构中添加com.android.support libs.为了这..
> 1 *转到文件>项目结构.
> 2 *逐个选择这些模块中的每一个.
> 3 *在名为Dependency的最后一个选项卡中,如果在该模块的libs文件夹中只有v4.support lib(或有问题的lib),则删除编译fileTree(dir:’libs’,include:’* .jar’).
> 4 *单击添加库并选择,添加v4.support lib
v4.support来自你的sdks的libs.
完成.清理项目并再次构建它.packageAllDebugClassesForMultiDex问题已经消失.
至于传递依赖,如果你知道在构建项目时导致复制文件在dex错误中的确切依赖关系,你可以将它排除为belo
compile(project(':..:..:..:..:..:..:android_libraries:walletsdkandroidmodule')) {
exclude group: 'com.google.code.gson'
}
如果你想在任何模块中有任何传递依赖,例如.
compile('com.crashlytics.sdk.android:crashlytics:2.2.3@aar') {
transitive = true
}
内容总结
以上是互联网集市为您收集整理的java.util.zip.ZipException:重复条目:如何克服全部内容,希望文章能够帮你解决java.util.zip.ZipException:重复条目:如何克服所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。