Mam Android Studio Beta. Utworzyłem nowy projekt z kompilacją moich starych modułów, ale kiedy próbowałem uruchomić aplikację, nie uruchomił się z komunikatem:
Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
com.android.builder.dexing.DexArchiveMergerException: Nie można scalić dex
Ale nie wiem jak rozwiązać ten błąd. Przeglądałem to przez wiele godzin, ale bez powodzenia.
Stopień mojego projektu:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0-beta6'
classpath "io.realm:realm-gradle-plugin:3.7.1"
classpath 'com.google.gms:google-services:3.1.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
google()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Stopień mojej aplikacji:
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
buildToolsVersion "26.0.1"
defaultConfig {
applicationId "parad0x.sk.onlyforyou"
minSdkVersion 21
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
}
}
compileOptions {
targetCompatibility 1.7
sourceCompatibility 1.7
}
packagingOptions {
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
}
lintOptions {
checkReleaseBuilds false
}
productFlavors {
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
//noinspection GradleCompatible
compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
compile project(path: ':loginregisterview')
}
I moja ocena modułu:
apply plugin: 'com.android.library'
apply plugin: 'realm-android'
android {
compileSdkVersion 26
buildToolsVersion "26.0.1"
defaultConfig {
minSdkVersion 19
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:26.0.2'
compile 'com.android.support:support-v4:26.1.0'
compile 'com.github.bumptech.glide:glide:4.0.0'
testCompile 'junit:junit:4.12'
compile project(path: ':parser')
}
Mój drugi moduł:
apply plugin: 'com.android.library'
apply plugin: 'realm-android'
android {
compileSdkVersion 26
buildToolsVersion "26.0.1"
defaultConfig {
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
realm {
syncEnabled = true
}
useLibrary 'org.apache.http.legacy'
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile 'junit:junit:4.12'
// compile 'com.android.support:appcompat-v7:23.1.0'
// compile 'com.fasterxml.jackson.core:jackson-core:2.9.0'
// compile 'com.fasterxml.jackson.core:jackson-annotations:2.9.0'
// compile 'com.fasterxml.jackson.core:jackson-databind:2.9.0'
compile 'com.google.code.gson:gson:2.6.2'
}
____________odkrycie_________
Gdy nie zaimportowałem drugiego modułu (parsera), aplikacja nie uległa awarii w systemie dex, ale gdy moduł nie został zaimportowany, aplikacja nie działała. : D: D
android
dex
android-studio-3.0
Parad0X
źródło
źródło
Odpowiedzi:
Miałem ten sam problem podczas aktualizacji z
com.google.android.gms:play-services:11.2.2
docom.google.android.gms:play-services:11.4.0
. To rozwiązało dla mnie:źródło
multiDexEnabled true
sam tego nie zrobiłPróbowałem wszystkich powyższych i żadna z nich nie pomaga. wreszcie znajduję dla mnie tę pracę:
app / build.gradle:
źródło
Zwróć uwagę na ostrzeżenia!
Czasami wystarczy usunąć ostrzeżenia, a błąd zniknie automatycznie. Zobacz poniżej przypadek specjalny:
Miałem te dwie zależności w moim
build.gradle
pliku na poziomie modułu :i Studio ostrzegało ( oprócz problemu scalenia dex ):
Więc wyraźnie określiłem wersję
com.android.support:support-v4
(zobacz tutaj, aby poznać szczegóły) i oba problemy (ostrzeżenie i ten związany z scalaniem dex) rozwiązane :Zobacz poniżej komentarze dotyczące innych podobnych sytuacji.
źródło
support:design:26.1.0
, a ja nie miałem jeszcze tej zależności. Moje inne wersje obsługi bibliotek miały wersję 27.1.0. Po dodaniusupport:design
zależności od27.1.0
wersji mój problem został rozwiązany.W moim przypadku niestety rozwiązania Michela ani Suragcha nie zadziałały.
Rozwiązałem ten problem, wykonując następujące czynności:
W Gradle: 3,0 kompilacji konfiguracja jest teraz przestarzała i powinna zostać zastąpiona przez realizację lub API . Aby uzyskać więcej informacji, możesz przeczytać tutaj. Możesz przeczytać oficjalne dokumenty w Gradle Build Tool
lepiej jest użyć implementacji lub interfejsu API zamiast kompilować
wystarczy zastąpić kompilację z implementacją , debugCompile z debugImplementation , testCompile z testImplementation i androidtestcompile z androidTestImplementation
Na przykład: Zamiast tego
używać w ten sposób
Po tym
Mam nadzieję, że to pomoże!
źródło
.gradle
i nie./gradle
Usuń
.gradle
katalog.Uruchom ponownie aplikację.
Notatki
.gradle
Katalog jest w folderze głównym twojego projektu. (Być może najpierw będziesz musiał pokazać ukryte pliki.)źródło
Usunięcie
.gradle
według sugestii Suragcha nie było dla mnie wystarczające. Dodatkowo musiałem wykonaćBuild > Clean Project
.Pamiętaj, że aby zobaczyć
.gradle
, musisz przejść do widoku „Projekt” w nawigatorze w lewym górnym rogu:źródło
Próbowałem każdego innego rozwiązania, ale dla mnie nikt nie działał. Na koniec rozwiązałem go za pomocą tej samej wersji zależności, edytując
build.gradle
. Myślę, że ten problem występuje, gdy dodaje się bibliotekę do klasy, która korzysta z różnych wersji pomocy technicznej lub bibliotek Google.Dodaj następujący kod do pliku oceny kompilacji. Następnie
clean
irebuild
projektuj.źródło
jeśli (1. Spróbuj wyczyścić i odbudować pracę), to dobrze
w przeciwnym razie, jeśli (2. Spróbuj usunąć pracę stopniową), to dobrze
else-> 3. Spróbuj dodać w grade.properties
else-> 4. Dodaj
multiDexEnabled
true do swojego build.gradlei dodaj zależność
Może pierwszy działa dla ciebie i tak dalej, ale tak naprawdę na przykład zależy od natury twojego problemu
Wystąpił błąd po dodaniu tej biblioteki
a później odkryłem, że muszę to sprawdzić i muszę dodać tę samą wersję bibliotek obsługi. Więc muszę wypróbować inną wersję
i to rozwiązuje problem. Zwróć więc na to uwagę.
źródło
W moim przypadku problem polegał na bibliotece pokoju:
Zmiana na:
pracował
źródło
Aby dodać do powyższych rozwiązań:
Upewnij się, że nie masz zduplikowanych zależności wskazujących na różne ich wersje, w wielu miejscach (lub nawet w tym samym pliku).
źródło
Cześć Mam ten sam problem, wypróbowałem prawie wszystko. Tak więc ostatecznie rozwiązałem po 6 godzinach walki debugując wszystko wiersz po wierszu.
Usługi Google 3.0 Nie obsługuje firebase w Studio 3.0 z playServiceVersion: 11.6.0 lub mniejszą.
Rozwiązanie :
Mam zmienić usługi Google na
I obsługuje usługi firebase.
Mam nadzieję, że ktoś zaoszczędzi swój czas.
źródło
Włączyć
defaultConfig {multiDexEnabled true}
Jeśli krok 1 nie działa, to
Przejdź do struktury projektu i znajdź bibliotekę zewnętrzną, która używa innej wersji. Kliknij go dwukrotnie i usuń plik jar. Zamknij projekt i otwórz ponownie Android Studio przebuduje projekt. Problem powinien zniknąć.
źródło
Jedną z możliwości jest: obecność tej samej biblioteki, ale z różnymi wersjami zależności .
Miałem ten problem z następującymi liniami w pliku gradle:
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.google.code.gson:gson:2.8.2'
Biblioteka gson była w moim katalogu libs, ale w poprzedniej wersji. Usunąłem
gson-2.3.1.jar
z katalogu libs i wszystko wróciło do normy.źródło
compile fileTree(include: ['*.jar'], dir: 'libs')
naprawione dla mnie .. dzięki (y)Jeśli ten błąd pojawił się po włączeniu obsługi kotlin i żadne inne rozwiązanie nie działa, spróbuj zmienić zależność modułu aplikacji od kotlin
build.gradle
na:Działa to dla mnie w Android Studio 3.0 Beta 6. Zobacz tę odpowiedź w celu uzyskania dalszych wyjaśnień.
źródło
Z stabilną wersją Androida Studio 3.0 Poniższe kroki działały dla mnie:
źródło
[NIE MOŻNA POŁĄCZYĆ DEX SOLVED] Po godzinach przepełnienia stosu rozwiązałem problem „NIE MOŻNA POŁĄCZYĆ BŁĘDU DEX”
Przyczyna - Android zaktualizował biblioteki obsługi do wersji 27.1.0, więc musisz zmienić wszystkie linie pomocy Androida w pliku ocen na 27.1.0 z 26.1.0
Upewnij się, że sekcja repozytoriów zawiera sekcję maven z punktem końcowym „ https://maven.google.com ”. Na przykład:
allprojects {repositories {jcenter () maven {url " https://maven.google.com "}}}
Przyczyna: - Android nie może zaktualizować bibliotek obsługi w menedżerze SDK, a teraz używa aktualizacji maven.google.com, więc musisz to uwzględnić, aby korzystać z bibliotek wsparcia 27.1.0
Po zmianie wersji: 1. Wyczyść projekt 2. Przebuduj projekt
źródło
dodaj polecenia poniżej:
źródło
Instalowanie usług Google Play (najnowsza wersja) + włącznie
w build.gradle rozwiązałem problem, upewnij się, że wyczyściłem i odbudowałem projekt!
źródło
W moim przypadku był to gson-2.8.1.jar, który dodałem do folderu libs projektu. Ale referencja była już tam przez SDK. Nie było więc konieczne dodawanie gson-2.8.1.jar do folderu libs.
Kiedy go wyjąłem, projekt gson-2.8.1.jar kompiluje się bez tego błędu przewodowego.
Więc spróbuj zmienić folder libs i zależności .
źródło
Zgadzam się z Chrisem-Jr. Jeśli używasz Firebase do osadzania reklam AdMob (lub nawet jeśli nie jesteś), usługi analityczne Play obejmują reklamy usług Play, nawet jeśli nie dodajesz tego jako zależności. Google oczywiście popełniło błąd przy wdrażaniu wersji 11.4.0, ponieważ dane analityczne obejmują wersję reklam 10.0.1, a nie 11.4.0 (pokazuje to wskaźnik myszy nad wskazówką w gradiencie).
Ręcznie dodałem kompilację „com.google.android.gms: play-services-ads: 11.4.0” u góry, która działała, ale dopiero po wyłączeniu Instant Run: http://stackoverflow.com/a/35169716/530047
Więc albo cofnij się do 10.0.1, albo dodaj reklamy i wyłącz Natychmiastowe uruchamianie. To właśnie znalazłem, jeśli to pomaga.
źródło
Napotkałem ten sam problem i znalazłem prawdziwy powód mojej sprawy. Wcześniej próbowałem również wszystkie poprzednie odpowiedzi, ale to nie rozwiązało problemu. Mam dwa moduły w moim projekcie aplikacji do noszenia i build.gradle w następujący sposób :
zużycie build.gradle modułu:
wspólny moduł build.gradle:
Przed uaktualnieniem do klasy 3.x wszystkie „wdrożenia” są „kompilowane”.
Korzystam z gradlew z opcją --stacktrace, aby uzyskać ślad stosu, możesz po prostu kliknąć to w oknie konsoli gradle, gdy pojawi się ten problem. I stwierdził, że zależność od pakietu jar powtórzyła się:
Class SportSummary w pakiecie farmer-motion-1.0.jar, po przeczytaniu oficjalnego przewodnika po migracji , zmieniłem mój build.gradle na:
zużycie build.gradle modułu:
common module 的 build.gradle:
Teraz moduł zużycia będzie zależny od eksportu farmer-motion-1.0.jar przez wspólny moduł. Jeśli podczas działania nie ma zależności od pakietu jar , zależność pakietu jar od implementacji można również zmienić na „compileOnly” .
źródło
Miałem też problem.
Byłem w stanie rozwiązać, zmieniając
compileSdkVersion
itargetSdkVersion
do najnowszej wersji.źródło
Do naszego projektu przypadkowo dodaliśmy dwa razy ten sam słoik o innej nazwie. Usunięcie jednego z nich rozwiązało problem.
źródło
libs
folderem miałem dwa pliki jar, z których jeden jest tylko kopią zapasową drugiego, ale pod inną nazwą.To może nie być twój problem, ale dostałem ten błąd, gdy przypadkowo włączyłem dwie identyczne (ale o różnych nazwach) biblioteki do sekcji zależności {} projektu.
źródło
Dla mnie była to aktualizacja wiadomości firebase w app \ build.gradle:
do
źródło
Jedna z możliwych przyczyn: zduplikowane przejściowe zależności, które nie zostały poprawnie obsłużone przez import projektów wielomodułowych do Android Studio. Sprawdź swoją listę i usuń je. Dla mnie poprawka była dosłownie następująca:
źródło
Znajduję przyczynę tego problemu w moim projekcie. Dodano dwukrotnie jedną zależność w build.gradle . Raz, dodając zależność i raz, dodając zależność od jar:
kompiluj 'org.achartengine: achartengine: 1.2.0'
...
pliki implementacyjne („../ achartengine-1.2.0.jar”)
po usunięciu pierwszego problemu rozwiązany problem.
źródło
Jeśli najlepsze odpowiedzi nie zadziałały, problem może dotyczyć wielu zależności zależnych od tej samej biblioteki.
Oto kilka wskazówek dotyczących debugowania. W tym przykładowym kodzie
com.google.code.findbugs:jsr305:3.0.0
znajduje się biblioteka obrażająca.Zawsze czyść i odbudowuj za każdym razem, gdy modyfikujesz, aby sprawdzić rozwiązanie!
Buduj z
--stacktrace
flagą, aby uzyskać więcej szczegółów. Będzie narzekać na klasę, Google na tę klasę, aby znaleźć bibliotekę. Oto jak możesz skonfigurować studio Androida, aby zawsze uruchamiało gradle z--stacktrace
flagą .Rzuć okiem na konsolę Gradle w Android Studio
View > Tool Windows > Gradle Console
po kompilacjiSprawdź powtarzające się zależności, uruchamiając
./gradlew -q app:dependencies
. Możesz ponownie uruchomić to za każdym razem, gdy modyfikujesz build.gradle.W build.gradle
W build.gradle
W build.gradle
Jeśli niektóre z twoich zależności znajdują się w plikach jar, otwórz pliki jar i sprawdź, czy są jakieś sprzeczne nazwy klas. Jeśli tak, prawdopodobnie będziesz musiał odbudować słoiki z nowymi nazwami klas lub zajrzeć w cienie .
Trochę więcej czytania w tle:
źródło
źródło
W moim przypadku biblioteka powoduje ten problem, biblioteka została pomyślnie dodana do projektu, ale po uruchomieniu aplikacji pokazuje mi ten błąd. Jeśli tak się stanie, możesz przejść do github i sprawdzić problemy lub zgłosić nowy problem. Jeśli nie znajdziesz żadnego rozwiązania dotyczącego biblioteki, sugeruję zastąpienie go.
źródło