2015-04-14 30 views
6

Merhaba Android Studio kullanıyorum bir proje üzerinde çalışıyorum. Her şeyi ayarlıyorum ama projemi çalıştırdığımda hataların altına geçiyorum. Son 2 gün boyunca çözemedim. Bu hataya neden olan projemde sorun ne olabilircom.android.dex.DexException: Birden fazla dex dosyası Landroid/destek/ek açıklama/AnimRes'i tanımlar;

Lütfen bu konuda bilginiz varsa lütfen yardım edin.

uygulama build.gradle

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 22 
    buildToolsVersion "21.1.2" 

    defaultConfig { 
     applicationId "in.xyz" 
     minSdkVersion 15 
     targetSdkVersion 22 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:22.0.+' 
    //compile files('libs/android-support-v4.jar') 
    compile 'com.android.support:support-v4:22.0.+' 
    compile 'com.android.support:support-annotations:20.0.0' 
} 

kütüphane build.gradle

apply plugin: 'com.android.library' 

android { 
    compileSdkVersion 22 
    buildToolsVersion "21.1.2" 

    defaultConfig { 
     minSdkVersion 15 
     targetSdkVersion 22 
    } 

    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 
     } 
    } 
} 

dependencies { 
    //compile files('libs/android-support-v4.jar') 
    compile 'com.android.support:support-v4:22.0.+' 
    compile 'com.android.support:support-annotations:20.0.0' 
} 

build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules. 

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:1.1.0' 

     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
    } 
} 

...

UNEXPECTED TOP-LEVEL EXCEPTION: 
    com.android.dex.DexException: Multiple dex files define Landroid/support/annotation/AnimRes; 
     at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596) 
     at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554) 
     at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535) 
     at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171) 
     at com.android.dx.merge.DexMerger.merge(DexMerger.java:189) 
     at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454) 
     at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303) 
     at com.android.dx.command.dexer.Main.run(Main.java:246) 
     at com.android.dx.command.dexer.Main.main(Main.java:215) 
     at com.android.dx.command.Main.main(Main.java:106) 
    Error:Execution failed for task ': app:dexDebug'. 
inanıyorum

settings.gradle

include ':app' 
include ':multiStateToggleButton' 
+0

İki projeyi de bağlayabileceğiniz settings.gradle'ı paylaşabilirsiniz –

+0

Lütfen ayarları paylaşın.gradle –

+0

@ inner_class7 settings.gradle dosyasını ekledim –

cevap

6

Senin sorunun, Ana Projesi Kitaplığı bağlantı veriyor her yerde destek kütüphane ve ek açıklamalar için ikisi arasında aynı bağımlılıkları olması.

Kütüphane projenize bağımlılık olarak sahipseniz, yalnızca kütüphane bağımlılıklarının kapatılmasına bağlı olan bağımlılığa ihtiyacınız olacaktır.

Sorun, iki dex dosyasına sahip olmanızdır, çünkü bağımlılıklarınızdaki dosyalarda çakışmaları nedeniyle aynı ada sahip iki Dosya vardır. Kütüphanenizin build.gradle için

include 'app_name', 'library_name' 
project(':LibraryNameGoesHere').projectDir = new File('libs/LibraryNameGoesHere') 

:

İlk/ardından ana projenin klasör,

ana projenin kök in settings.gradle dosyası yaratmak için kütüphanelerini için modül kopya ana proje build.gradle için Ardından

dependencies { 
    compile files('libs/android-support-v4.jar') 
    compile 'com.android.support:support-v4:22.0.+' 
    compile 'com.android.support:support-annotations:20.0.0' 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:22.0.+' 
    compile project(":libs:LibraryNameGoesHere") 
} 
.
+0

Kaldırdım ama yine de aynı hatalar var. –

+1

@Williams, ek açıklamalarınızı ana projede de kaldırmayı dener. Bkz. Yukarıdaki –

+0

Sadece harikasınız. –

2

facebook sdk Android 2.3.3 kullanımı için yapılandırıldığından beri, annotaion lib gerektirir. Uygulamam Annoid> 4.x.x, Annotation içerdiği için yapılandırılmış, çatışma çıkardı. Android> 4.x.x ile çalışmak için, facebbok ana alanında değişiklik yaptım ve sorunu çözdüm. Eğer stüdyoya Tutulma projeyi göç ve ardından proje yeni bir modül gerekirse olabilir

0

, sen modülünde böyle bağımlılıkları eklemek build.gradle,

compile 'com.android.support:support-annotations:24.1.1' 
compile 'com.android.support:support-v4:24.1.1' 
//recyclerview 
compile 'com.android.support:cardview-v7:21.0.3' 
compile 'com.android.support:recyclerview-v7:21.0.3' 

eklemek Bu aptal sorunu görmek çünkü eski proje android-support-v4.jar gibi jar dosyası içerdiğinden bu bok derleme (şey) üzerindedir, böylece * kaldırmanız gerekir.Kavanoz dosya, bu bok, benim delik öğleden yüzden iyi şanslar alır ingilizcem bana fogiven havuzu, olduğunu lütfen ben Eclipse proje almayı Android Studio kullanarak sonra bu hatayı başlamıştı Ne değer için

0

. /app/build.gradle dosyasında ben bağımlılıkları bölümünde iki giriş, bu

dependencies { 
    compile files('libs/android-support-v13.jar') 
    compile files('libs/android-support-v4.jar') 
} 

benziyordu vardı ben projeyi temizlenmiş

dependencies { 
    compile files('libs/android-support-v13.jar') 
} 

altına gibi V4 referansı kaldırıldı ve oldu APK'mı oluşturabiliyorum. Bunu düzeltmenin doğru yolu olup olmadığını bilmiyorum ama benim için çalıştı.