पर काबू पाने के लिए मैंने अपनी परियोजना में कई एंड्रॉइड पुस्तकालयों और मॉड्यूल का उपयोग किया है। प्रत्येक के पास अपना स्वयं का v4 है। समर्थन lib। मुझे java.util.zip.ZipException मिल रहा है: डुप्लिकेट प्रविष्टि। जब मैं प्रोजेक्ट में डुप्लिकेट क्लास फ़ाइल की खोज करता हूं, तो प्रत्येक पुस्तकालयों में एकाधिक v4.support lib की वजह से इन कक्षाओं की कई फ़ाइलें होती हैं। मुझे पता है कि इस सवाल से कई बार पूछा गया है लेकिन मेरे लिए कुछ भी काम नहीं कर रहा है।java.util.zip.ZipException: डुप्लिकेट प्रविष्टि:
मेरा प्रश्न है: इन एकाधिक 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:[email protected]') {
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'
}
}
है और मैं इस तरह त्रुटियों हो रही है। प्रत्येक बार जब मैं प्रोजेक्ट को साफ़ करता हूं तो यह सफलतापूर्वक अनुपालन करता है। लेकिन जब मैं रन कमांड देने का प्रयास करता हूं तो यह निम्न प्रकार की त्रुटि दिखाता है।
Execution failed for task ':packageAllDebugClassesForMultiDex'.
> java.util.zip.ZipException: duplicate entry: android/support/v4/media/TransportMediatorCallback.class
मेरे मामले में। एंड्रॉइड स्टूडियो के लिए, मैंने Ctrl + N दबाया और कक्षा के नाम की खोज की, जो इस मामले में ट्रांसपोर्ट मैडिएटर कॉलबैक "डुप्लिकेट एंट्री: एंड्रॉइड/सपोर्ट/वी 4/मीडिया/ट्रांसपोर्ट मैडिएटर कैलबैक" से लिया गया है।कक्षा " यह एकाधिक जार फ़ाइलों (3 सटीक होने के लिए) में मौजूद था। मैंने 2 हटा दिया और अन्य लाइब्रेरी पैकेजों में निर्भरताओं को हल करने के लिए, बस उन पुस्तकालयों को इंगित करके ../source_library_package/libs/library_name.jar –
@ RohitRokde, सही है। इस तरह हम पाते हैं कि कौन से libs हमारे ऐप में डुप्लिकेट किए गए हैं। –
क्या होगा यदि परियोजना संरचना में मॉड्यूल में निर्भरता सूचीबद्ध नहीं है? यह अन्य जारों में संक्रमणीय निर्भरताओं के कारण हो सकता है। –