2014-10-29 5 views
8

Ich möchte Android L compat libs verwenden. nach den entsprechenden Code hinzufügen Gradle, erhalte ich die Fehlermeldung:MultiDex-Unterstützung in Android-Anwendung Fehler

Error Code: 
2 
    Output: 
objc[36290]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.7.0_67.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.7.0_67.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined. 
UNEXPECTED TOP-LEVEL EXCEPTION: 
java.lang.IllegalArgumentException: method ID not in [0, 0xffff]: 65536 
    at com.android.dx.merge.DexMerger$6.updateIndex(DexMerger.java:501) 
    at com.android.dx.merge.DexMerger$IdMerger.mergeSorted(DexMerger.java:276) 
    at com.android.dx.merge.DexMerger.mergeMethodIds(DexMerger.java:490) 
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:167) 
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:188) 
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439) 
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287) 
    at com.android.dx.command.dexer.Main.run(Main.java:230) 
    at com.android.dx.command.dexer.Main.main(Main.java:199) 
    at com.android.dx.command.Main.main(Main.java:103) 

ich darüber das sah Fragen here und here, und versucht, die Lösung aus diesem blog post, und ich immer noch eine Fehlermeldung erhalten, wobei im Falle die Blog-Post, die ich erhalte:

Error Code: 
2 Output: 
objc[36323]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.7.0_67.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.7.0_67.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined. 
UNEXPECTED TOP-LEVEL EXCEPTION: 
com.android.dex.DexException: Library dex files are not supported in multi-dex mode 
    at com.android.dx.command.dexer.Main.runMultiDex(Main.java:322) 
    at com.android.dx.command.dexer.Main.run(Main.java:228) 
    at com.android.dx.command.dexer.Main.main(Main.java:199) 
    at com.android.dx.command.Main.main(Main.java:103) 

ist meine android gradle Einstellungen sind:

android { 
compileSdkVersion 21 
buildToolsVersion "20.0.0" 

defaultConfig { 
    applicationId "com.my.package" 
    minSdkVersion 9 
    targetSdkVersion 21 
} 

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

}

Das sind meine Abhängigkeiten:

dependencies { 
compile project(':libraries:ecoGallery') 
compile project(':libraries:facebookSDK') 
compile 'com.android.support:support-v4:21.0.0' 
compile 'com.android.support:appcompat-v7:21.0.0' 
compile 'com.google.android.gms:play-services:6.1.71' 
compile 'com.j256.ormlite:ormlite-android:4.48' 
compile 'com.j256.ormlite:ormlite-core:4.48' 
compile 'com.mixpanel.android:mixpanel-android:[email protected]' 
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3' 
compile 'com.nineoldandroids:library:2.4.0' 
compile 'oauth.signpost:signpost-commonshttp4:1.2.1.2' 
compile 'oauth.signpost:signpost-core:1.2.1.2' 
compile 'com.uservoice:uservoice-android-sdk:[email protected]' 
compile 'com.newrelic.agent.android:android-agent:4.87.0' 
compile 'com.google.guava:guava:18.0' 
compile files('libs/android-support-multidex.jar') 

}

Hat jemand irgendwelche Ideen für das, was ich tun könnte falsch?

+0

Hilft Ihnen das? Vielleicht deaktivieren Sie das Pre-Dexing? http://stackoverflow.com/questions/25696933/android-gradle-dexexception-library-dex-files-are-not-supported-in-multi-dex-m –

+0

der Tat, sollten Sie vorab Dexing deaktivieren. –

+0

Auch gesetzt buildToolsVersion „20.0.0“ auf buildToolsVersion „21.0.2“ –

Antwort

3

Gradle Plugin v0.14.0 für Android fügt full multidex support.
Entfernen Sie alle build.gradle Änderungen, die Sie (für multidex) gemacht, und fügen Sie einfach die folgende:

android { 
    defaultConfig { 
     ... 
     multiDexEnabled = true 
    } 
} 
+0

Danke! Der Link war sehr hilfreich – dors

+0

Ich habe es verwendet und immer noch der gleiche Fehler erscheint. Irgendwelche anderen Vorschläge? – jeeva

2

Der Versuch, den folgenden Code zu Ihrem build.gradle hinzufügen, für mich gearbeitet.

android{ 

... 
dexOptions { 
     preDexLibraries = false 
    } 

afterEvaluate { 
     tasks.matching { 
      it.name.startsWith('dex') 
     }.each { dx -> 
      if (dx.additionalParameters == null) { 
       dx.additionalParameters = ['--multi-dex'] 
      } else { 
       dx.additionalParameters += '--multi-dex' 
      } 
     } 
    } 
... 
} 
2

anstelle der gesamten Google-Bibliothek, verwenden Sie nur diejenigen, die Sie benötigen.

für ex. Verwendung:

compile 'com.google.android.gms:play-services-maps:7.8.0' 
    compile 'com.google.android.gms:play-services-location:7.8.0' 

statt

compile 'com.google.android.gms:play-services:7.8.0' 
0

Versuchen deaktiviert "Instant-run":

In Android Studio: Menü Datei -> Einstellungen

in Build, Ausführung, Deployment -> Instant

laufen

UNCHECK Instant-Run zu heiß sw Aktiviert ap Code/Ressourcenänderungen auf deploy (standardmäßig aktiviert)