2017-12-13 13 views
11

ich das Projekt auf Gitlab ci bauenjava.lang.IllegalStateException: Dex Archive: Einstellung .dex Erweiterung nur für .CLASS Dateien

./gradlew assembleDebug --stacktrace 

und manchmal wirft er einen Fehler:

FAILURE: Build failed with an exception. 
* What went wrong: 
Execution failed for task ':app:transformClassesWithDexBuilderForDebug'. 
> com.android.build.api.transform.TransformException: java.lang.IllegalStateException: Dex archives: setting .DEX extension only for .CLASS files 

Bei mein lokaler PC es funktioniert richtig.

Kotlin Version 1.2

multidex

Was aktiviert ist der Grund für diesen Fehler?

+0

Haben Sie Mutlidex True aktiviert und Bibliothek für Mutlidex hinzugefügt? –

+0

ja, ich habe die Frage bearbeitet –

+0

@ m.myalkin Irgendeine Lösung gefunden? – AndiGeeky

Antwort

6

Es scheint, dass ich die Lösung gefunden habe. Am Build Moment gradle wurde Warnungen für mich zeigt:

Configuration 'compile' in project ':app' is deprecated. Use 'implementation' instead. 

app: 'androidProcessor' dependencies won't be recognized as kapt annotation processors. Please change the configuration name to 'kapt' for these artifacts: 'com.arello-mobile:moxy-compiler:1.5.3' and apply the kapt plugin: "apply plugin: 'kotlin-kapt'". 

ich eine falsche Schreibweise gemacht und vergessen unnötige annotationProcessor für Bibliothek zu entfernen:

annotationProcessor "com.arello-mobile:moxy-compiler:$moxyVersion" 
kapt "com.arello-mobile:moxy-compiler:$moxyVersion" 

So entfernte ich erste Zeile.

Danach habe ich Kapt Plugin apply plugin: 'kotlin-kapt' angewendet und einige Build-Fehler im Code danach behoben.

Immerhin habe ich festgestellt, dass ich an einigen Stellen vergessen habe, compile zu implementation zu ersetzen. Es ist komisch, aber ohne es zu bauen hat nicht funktioniert.

Diese Änderungen beheben meinen Fehler Build.

-1

bitte hier, um die Lösung dieses Problems finden,

defaultConfig { 
     ... 
     minSdkVersion 14 
     targetSdkVersion 21 
     ... 

     // Enabling multidex support. 
     multiDexEnabled true 
    } 
dependencies { 
    compile 'com.android.support:multidex:1.0.0' 
} 
+0

Ich habe bereits multiidex im Projekt aktiviert –

+0

Haben Sie Multidex-Abhängigkeiten, wie ich es hinzugefügt im Code geschrieben? –

+0

ja, natürlich habe ich 'com.android.support: multidex: 1.0.2' –

1

für multidexing Konfiguration nicht für mich dieses Problem nicht lösen.

Allerdings habe ich eine Auflösung ... von Art. Im Grunde ging es darum, eine Pull-Anforderung für eine zweite Verzweigung auf demselben Commit zu erstellen wie die fehlgeschlagene Erstellung. Der Build für diese Pull-Anforderung war erfolgreich, und dann dachte Bitbucket, dass die ursprüngliche Pull-Anforderung in Ordnung war und uns das Zusammenführen ermöglichte, obwohl wir in diesem Zweig keine Änderungen vorgenommen hatten. Es gibt einige unerklärliche Seltsamkeiten, aber die Technik hat funktioniert.

Hier ist, wie ich es tat:

wird angenommen, dass der Zweig, der genannt wird bad-branch versagt.

Ich habe einen neuen Zweig namens bad-branch-copy auf dem Festschreiben erstellt, das zwischen bad-branch und develop üblich war. Dann fusionierte ich bad-branch in bad-branch-copy. Das Endergebnis davon war ein schneller Vorlauf, so dass bad-branch-copy auf demselben Commit endete wie bad-branch. Ich erwartete einen separaten Einsatz, also überraschte mich dieses Ergebnis, aber ich griff nach Strohhalmen, also ging ich weiter.

Ich schob dann bad-branch-copy zu GitHub und erstellte eine Pull-Anforderung von bad-branch-copy zu develop. Dies löste einen Build auf bad-branch-copy ->develop, der erfolgreich war.

An diesem Punkt zeigte buddybuild einen erfolgreichen Build auf bad-branch-copy ->develop und zeigte immer noch einen Fehler auf bad-branch ->develop. Bitbucket zeigte jedoch eine erfolgreiche Erstellung der Pull-Anforderung für bad-branch. Ja, das stimmt: Buddybuild zeigte einen Fehler, aber Bitbucket sagte, es sei in Ordnung.

Wir waren dann in der Lage, die bad-branch Pull-Anfrage zu verschmelzen und alles war gut mit der Welt. Bitte frag mich nicht warum, ich werde nicht antworten. :)

denke ich, die gleiche Sache mit

erreicht werden könnte
git checkout bad-build 
git checkout -b bad-build-copy 
git push origin bad-build-copy 

gefolgt von einem Pull-Request für schlecht-build-Kopie zu erstellen.

15

./gradlew clean behoben den gleichen Fehler für mich.

0

Ich konnte das Problem lösen, indem ich Android Studio geschlossen und neu gestartet habe. Vielleicht hätte es sogar ein Rebuild-Projekt getan (habe das aber nicht versucht).

0

Above Antwort ist meistens richtig, aber in meinem Fall, bekomme ich diese Ausnahme, wenn ich Kiste gleiche Namen java und Kotlin Datei dann einer von ihnen löscht.

Lösungen sind: nur Build -> Clean Project mein Projekt und es funktioniert. Und mein Projekt aktiviert auch multiDex.

defaultConfig { 
     ... 
     // Enabling multidex support. 
     multiDexEnabled true 
    } 
Verwandte Themen