Android- Hata: 'görev için yürütme başarısız oldu: app: transformClassesWithDexForRelease'


191

Sorun, ben debugmoda geçmek benim app çalıştırmak mümkün ama moda geçtiğinizde başarısız olmasıdır release.

İstisna:

**FAILURE: Build failed with an exception.**
> Execution failed for task ':app:transformClassesWithDexForRelease'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1

Stacktrace ile gradle build komutunu çalıştırdığımda elde ettiğim şey bu

./gradlew app:transformClassesWithDexForRelease --stacktrace

> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1

*Exception is:*

>org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesWithDexForRelease'.
            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
            at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
            at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
            at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
            at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)
            at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
            at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
            at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
            at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)
            at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)
            at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66)
            at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50)
            at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25)
            at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110)
            at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
            at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
            at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
            at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
            at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
            at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
            at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
            at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:154)
            at org.gradle.internal.Factories$1.create(Factories.java:22)
            at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
            at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52)
            at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:151)
            at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)
            at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:99)
            at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:93)
            at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
            at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62)
            at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:93)
            at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:82)
            at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94)
            at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
            at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
            at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43)
            at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)
            at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:78)
            at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:48)
            at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:52)
            at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
            at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
            at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
            at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
            at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
            at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
            at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
            at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
            at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
            at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
            at org.gradle.util.Swapper.swap(Swapper.java:38)
            at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
            at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
            at org.gradle.launcher.daemon.server.health.DaemonHealthTracker.execute(DaemonHealthTracker.java:47)
            at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
            at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:66)
            at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
            at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
            at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)
            at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
            at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
            at org.gradle.launcher.daemon.server.health.HintGCAfterBuild.execute(HintGCAfterBuild.java:41)
            at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
            at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
            at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:246)
            at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
            at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
    Caused by: java.lang.RuntimeException: com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
            at com.android.builder.profile.Recorder$Block.handleException(Recorder.java:54)
            at com.android.builder.profile.ThreadRecorder$1.record(ThreadRecorder.java:57)
            at com.android.builder.profile.ThreadRecorder$1.record(ThreadRecorder.java:47)
            at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:173)
            at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)
            at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.doExecute(AnnotationProcessingTaskFactory.java:244)
            at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:220)
            at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.execute(AnnotationProcessingTaskFactory.java:231)
            at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:209)
            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
            ... 68 more
    Caused by: com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
            at com.android.build.gradle.internal.transforms.DexTransform.transform(DexTransform.java:422)
            at com.android.build.gradle.internal.pipeline.TransformTask$3.call(TransformTask.java:178)
            at com.android.build.gradle.internal.pipeline.TransformTask$3.call(TransformTask.java:174)
            at com.android.builder.profile.ThreadRecorder$1.record(ThreadRecorder.java:55)
            ... 77 more
    Caused by: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
            at com.android.builder.core.AndroidBuilder.runDexer(AndroidBuilder.java:1472)
            at com.android.builder.core.AndroidBuilder.convertByteCode(AndroidBuilder.java:1389)
            at com.android.build.gradle.internal.transforms.DexTransform.transform(DexTransform.java:250)
            ... 80 more
    Caused by: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
            at com.android.builder.core.AndroidBuilder.runDexer(AndroidBuilder.java:1456)
            ... 82 more
    Caused by: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
            at com.android.build.gradle.internal.process.GradleProcessResult.assertNormalExitValue(GradleProcessResult.java:43)
            at com.android.builder.core.AndroidBuilder$2.call(AndroidBuilder.java:1464)
            at com.android.builder.core.AndroidBuilder$2.call(AndroidBuilder.java:1456)
    Caused by: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
            at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:367)
            at com.android.build.gradle.internal.process.GradleProcessResult.assertNormalExitValue(GradleProcessResult.java:41)
            ... 2 more

Ben kullanıyorum

  • Android Studio 2.0 Beta 6
  • Java sürümü: Java (TM) SE Çalışma Zamanı Ortamı (derleme 1.8.0_73-b02)
  • Gradle Sürümü: com.android.tools.build:gradle:2.0.0-beta6
  • Ve Multidex etkin

Build.gradle dosyam

apply plugin: 'com.android.application'
apply plugin: 'com.getkeepsafe.dexcount'

android {

    def VERSION_CODE = 52
    def VERSION_NAME = "1.0"
    compileSdkVersion 23
    buildToolsVersion '23.0.2'

    defaultConfig {
        applicationId "com.example.app"
        manifestPlaceholders = [appName: "Personal App"]
        minSdkVersion 14
        targetSdkVersion 23
        renderscriptTargetApi 19
        renderscriptSupportModeEnabled true
        versionCode VERSION_CODE
        versionName VERSION_NAME

        // Enabling multidex support.
        multiDexEnabled true
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
        encoding = 'UTF-8'
    }

    signingConfigs {
        livekeystore {
            storeFile file('../key.jks')
            keyAlias 'livekeystore'
            keyPassword '123asd'
            storePassword '123asd'
        }
    }


    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            zipAlignEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            signingConfig signingConfigs.burgerking

            manifestPlaceholders = [googleMapsKey: "@string/release_google_map_key", appNameSuffix: ""]
        }

        debug {
            applicationIdSuffix '.dev'
            debuggable true
            minifyEnabled false
            shrinkResources false
            zipAlignEnabled false

            manifestPlaceholders = [googleMapsKey: "@string/debug_google_map_key", appNameSuffix: ' (Dev-' + VERSION_CODE + ')']

        }
    }

    dexOptions {
        incremental true
        javaMaxHeapSize "4g" // 2g should be also OK
    }

    useLibrary 'org.apache.http.legacy'

}

repositories {
    maven { url 'https://mint.splunk.com/gradle/' }
    maven { url "http://dl.bintray.com/populov/maven" }
    mavenCentral()
}

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.4.2'
        classpath 'com.newrelic.agent.android:agent-gradle-plugin:4.244.0'
    }
}


dependencies {
    compile 'com.google.code.gson:gson:2.4'
    compile 'com.android.support:appcompat-v7:23.2.0'
    compile 'com.android.support:recyclerview-v7:23.2.0'
    compile 'com.android.support:cardview-v7:23.2.0'
    compile 'com.android.support:design:23.2.0'
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.google.android.gms:play-services-base:8.4.0'
    compile 'com.google.android.gms:play-services-location:8.4.0'
    compile 'com.google.android.gms:play-services-analytics:8.4.0'
    compile 'com.google.android.gms:play-services-maps:8.4.0'
    compile 'com.google.android.gms:play-services-ads:8.4.0'
    compile 'com.googlecode.libphonenumber:libphonenumber:7.0.5'
    compile 'com.facebook.android:facebook-android-sdk:4.1.1'
    compile 'de.greenrobot:eventbus:2.4.0'
    compile 'com.viewpagerindicator:library:2.4.1@aar'
    compile 'com.nineoldandroids:library:2.4.0'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.squareup:pollexor:2.0.2'
    compile 'com.makeramen:roundedimageview:2.1.0'
    compile 'com.mcxiaoke.volley:library:1.0.16@aar'
    compile files('libs/now-auth-api.jar')
    compile 'com.jakewharton:butterknife:5.1.2'
    compile 'com.github.ksoichiro:android-observablescrollview:1.2.0'
    compile 'io.card:android-sdk:5.3.0'
    compile 'com.appboy:android-sdk-ui:1.10.3'
    testCompile 'junit:junit:4.11'
    testCompile('org.mockito:mockito-core:1.9.5') {
        exclude group: 'org.hamcrest'
    }
    testCompile('org.powermock:powermock-module-junit4:1.5') {
        exclude group: 'org.hamcrest'
    }
    testCompile('org.powermock:powermock-api-mockito:1.6.2') {
        exclude group: 'org.hamcrest'
    }

    compile 'me.grantland:autofittextview:0.2.1'

}

Görünüşe göre kaldırırsam minifyEnabled truesürümümü çalıştırabilirim. Neden? Bunu çözmenin başka bir yolu var mı?


uygulamanızın build.gradle dosyasını gönderebilir misiniz?
Harisewak

@Harisewak soruyu güncelledim, lütfen şimdi bir göz atın
Sheraz Ahmad Khilji

Evet @Sheraz, minifyEnabled öğesini false olarak değiştirmenin sorunu çözdüğünü haklısınız. Bunu doc'de okudum: 'Kod küçültmeyi açmak için minifyEnabled'ı etkinleştirmeniz ve ardından kaynak küçülmeyi açmak için shrinkResources'ı etkinleştirmeniz gerekiyor. Daha önce minifyEnabled'ı kullanmıyorsanız, shrinkResources'u da eklemeden önce bunu çalıştırdığınızdan emin olun, çünkü yansıma vb. İle eriştiğiniz yöntemlerin bu kurallarda saklanma kuralları olarak listelenmesini sağlamak için proguard-rules.pro dosyanızı düzenlemeniz gerekebilir. dosyası '( tools.android.com/tech-docs/new-build-system/resource-shrinking ). Bakalım durum böyle.
Harisewak

1
@Harisewak hala hata ayıklama ile görev çalıştırırsanız sorunu çözmezse o zaman bu hatayı alıyorumUncaught translation error: com.android.dx.cf.code.SimException: com.android.dx.rop.cst.CstMethodRef cannot be cast to com.android.dx.rop.cst.CstInterfaceMethodRef
Sheraz Ahmad Khilji

Projemde de aynı sorun var. Com.android.tools.build:gradle:1.3.0 kullanırsam derleyebilirim.
2.0.0'ı

Yanıtlar:


186

i sadece bu kodu düzeltti.

local.properties

org.gradle.jvmargs=-XX\:MaxHeapSize\=512m -Xmx512m

ve bunu gradle'da yapmalısın

defaultConfig {
    applicationId "yourProjectPackage"
    minSdkVersion 15
    versionCode 1
    versionName "1.0"
    targetSdkVersion 23

    multiDexEnabled true //important
}

4
"local.properties" bir dosya adı mı yoksa yapılandırma değeri mi? Projenin içinde nerede (örneğin: hangi klasörde) bulunur?
Ulysses Alves

1
Local.properties dosyası projenin kök düzeyine gider. multiDex hakkında bir sorununuz varsa -> developer.android.com/studio/build/multidex.html
aemre

Ben build.gradle içine multiDexEnabled true ekledim ve sihir yapıldı. Teşekkür ederim.
Marcelo Gumiero

Tüm bunların ne anlama geldiğini bilmiyorum, ama benim için çalıştı!
DaveNOTDavid

API <21'de, sınıfı multiDexEnabledgenişletmeden s'ye yol açar . ApplicationMultiDexApplicationNoClassDefFoundError
Miha_x64

82

Eğer yaparsanız multiDexEnabled = trueuygulamanın defaultConfig içinde, istediğiniz sonucu elde edecektir.

defaultConfig {
    minSdkVersion 14
    targetSdkVersion 22
    multiDexEnabled = true
}

Multidex'e izin vermenin tek adımı bu değildir. Ve sadece bir tane gördüğünde buna ihtiyacın var DexException. developer.android.com/studio/build/multidex.html
OneCricketeer

45

Benim için dosyayı projemden kaldırdıktan sonra sorun çözüldüjar . jarprojemin içindeki dosyalardan birinin eski bir sürümünü kullanıyor gibi görünüyor google play services.


jackrabbit-standalone-2.12.2.jar ile aynı sorun. Projeye eklersem sorun ortaya çıkar.
Alexeev Valeriy

1
@MikeOx Bazı Android araçlarını güncelledim ve sonuç olarak birkaç jar dosyasının iki versiyonunu buldum, örneğin mockable-android-24.jar ve mockable-android-25.jar. Eski olanları kaldırmak benim için bu derleme hatalarını düzeltti.
parvus

ama ben herhangi bir kavanoz dosyası kullanmıyorum o zaman neden bu sorunla karşı karşıya
Bay Mad

15
Bu çözüm için daha fazla bilgi
verebilir misiniz

@IvanMilisavljevic Gradle'ı şimdi kullanabilirsiniz, JAR dosyalarını değil. developers.google.com/android/guides/setup#split
OneCricketeer

39

Ben de aynı hatayı aldım:

Hata: ': app: transformClassesWithDexForDebug' görevi için yürütme başarısız oldu. com.android.build.api.transform.TransformException: java.lang.RuntimeException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: 'C: \ Program Files \ Java \ jdk1.8.0_60 \ bin \ java.exe' 'komutu sıfır olmayan çıkış değeri 1 ile tamamlandı

iyi ben aşağıdaki adımları yardımıyla bu düzeltildi:

  1. Uygulamanızın build.gradle dosyasını (proje kökünde bulunanı değil) açın ve ekleyin:

    android {
    //snippet
    //add this into your existing 'android' block
    
        dexOptions {
        javaMaxHeapSize "4g"
        }
    
    //snip
    }
  2. Yapınızı tekrar deneyin.

Not: 4g 4 Gigabayttır ve bu dex işlemi için maksimum yığın boyutudur.


Günümü kurtardım! Şerefe!
devhermluna

En iyisi ... Saatlerdir dolanýyorum ... teţekkürler!
MbaiMburu

33

MULTIDEX İÇİN GEREK YOK, TEKRAR EDİYORUM, MULTIDEX İÇİN GEREK YOK


Açıklayayım: Multidex temel olarak Android ile birlikte gelen bir araçtır ve bunu true olarak ayarlarsanız, 64.000'den fazla yöntem içeren uygulamalar biraz değiştirilmiş bir oluşturma işlemi kullanarak derleyebilir. Ancak multidex'i yalnızca hatanız şöyle görünüyorsa kullanmanız gerekir:

çıktı yazmada sorun: Çok fazla alan referansı: 131000; max - 65536. --multi-dex seçeneğini kullanmayı deneyebilirsiniz.

ya da bunun gibi

Dalvik formatına dönüştürme başarısız oldu: Dex çalıştırılamıyor: yöntem kimliği [0, 0xffff] içinde değil: 65536

Ama yani değil durum burada! Buradaki sorun (benim için en azından) build.gradle dosyanızın bağımlılıklarından kaynaklanıyor.

ÇÖZÜM: Belirli bağımlılıkları kullanın; yalnızca bağımlılıkların tamamını içe aktarmayın!

Örneğin, konum için Play Hizmetleri bağımlılığına ihtiyacınız varsa, yalnızca konum için içe aktarın .

YAPMAK:

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

YAPMAYIN:

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

Buna neden olabilecek başka bir sorun, bağımlılığınızın önceki bir sürümüne atıfta bulunan bir tür harici kitaplık olabilir. Bu durumda şu adımları izleyin:

  1. SDK yöneticisine gidin ve bağımlılıklarınızdaki güncellemeleri yükleyin
  2. Build.gradle dosyanızın en son sürümü gösterdiğinden emin olun. En son sürümü edinmek için şu bağlantıyı kullanın: https://developers.google.com/android/guides/setup
  3. En son sürüme başvurmak için kitaplığınızı düzenleyin (veya varsa güncellenmiş bir sürümü yükleyin)

Bu sorunun eski olduğunu biliyorum, ama bu cevabı orada almam gerekiyor , çünkü multidex'i nedensiz kullanmak uygulamanız için ANR'lere neden olabilir! SADECE multidex'e ihtiyacınız olduğundan eminseniz ve ne olduğunu anlarsanız.

Kendimi bu sorunu multidex olmadan çözmeye çalışmak için saatler geçirdim ve sadece bulgularımı paylaşmak istedim - umarım bu yardımcı olur


Parlak! Mükemmel çalışıyor!
stoefln

1
Hangi spesifik bağımlılığın soruna neden olduğunu nasıl anlarsınız? Ekledim com.facebook.android:audience-network-sdk:4.+ve o zamandan beri inşa edemiyorum.
Ciberman

Günümü kurtardın!
Rowan

1
ne kadar aptalca bir cevap. Eğer çok fazla bağımlılığınız varsa, yine de multi dex'e ihtiyacınız olacak. kotlin kitaplıkları, google services ( com.google.android.gms:play-services-*:*), firebase hizmetleri, crashlytics, gson, androidx (destek kitaplıkları), cardview, recyclerview, android.material: material öğelerini eklemeniz yeterlidir. ÇOK DEX OLMADAN MÜMKÜN DEĞİL (
kapak kilidini

Bazı bedenler burada zekidir! Tam olarak !, onun multidex hatası değil, multidex hatası farklıdır ve bazı bağımlılıklardan olabilir. ve @ user155, RUCHIR BAĞIMLILIK SORUNUNUZA KARŞI SORUMLU DEĞİLDİR! ve capslocks severim :)
Hossein

25

Uygulama düzeyinde defaultConfig konsolunuza multiDexEnabled true değerini ekleyin gradle.

defaultConfig {
    applicationId "your application id"
    minSdkVersion 16
    targetSdkVersion 25
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner"android.support.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}

24

Benim app benzer bir sorun vardı. İşte yaptığım şey.

1. modülde build.gradle için ekleyin: app

multiDexEnabled = true

Yani kod şöyle olurdu:

    android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "com.example..."
        minSdkVersion 17
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        multiDexEnabled = true
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

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

Bu benim için çalıştı. Umarım bu da size yardımcı olur :)

Aynı projede Firebase'i de kullanıyordum . Böylece multiDexEnabled'ı etkinleştirmek, Pre Lollipop cihazları için Firebase'de başka bir soruna izin verir . Bazı FireBase sınıfları tanımlanmadı. ( Com.google.firebase.provider sağlayıcısı alınamıyor ).
Bunu çözme yöntemi burada açıklanmaktadır .


minifyEnable true bana istisna veriyor - Aşağıda sorum var stackoverflow.com/questions/51720018/… Lütfen bana bu konuda yardımcı olun.
Naveen

21

Bu hatayı aldım Google oyun hizmetlerini 7.5'ten 9.0'a yükseltirken

Birinin altında hata var:

compile 'com.google.android.gms:play-services:9.0.0'

Olarak değiştirdiğimde

compile 'com.google.android.gms:play-services:7.5.0'

Hata yok. Bunu dene


1
teşekkürler derlemek için sürümü değiştirdim 'com.google.android.gms: play-services: 8.4.0' Bence volley oyun hizmetleri ile uyumlu olmayan bazı eski Google play hizmetleri kullanıyor:> 9.0
jai_b

3
Benim için çözüm buydu. Sorun, birkaç üçüncü taraf modülün farklı sürümlerle oyun hizmetlerine başvurmasıdır, bu nedenle bu sürümlerin her zaman senkronize olması nasıl beklenir? Çok garip mimari detay.
Ryan H.

1
Bunu kullanmamalısın. Lütfen bu kütüphaneleri seçerek derleyin. developers.google.com/android/guides/setup#split
OneCricketeer

14

Android 3.4'e güncelledikten sonra hatayı almaya başladım, yukarıdaki tüm çözümleri denedim.

Sorunun temel nedeni, Android Studio'nun güncellenmesi Anında Çalıştırmayı etkinleştirmekti .

Bu nedenle, deneyebileceğiniz çözümlerden biri, sizin için etkinleştirilmişse Anında Çalışmayı Devre Dışı Bırakma sorunumu düzeltti.


1
Aynı sorunu yaşadım. Anında Çalıştırmayı devre dışı bırakmak ve tekrar etkinleştirmek benim için çalıştı.
Fogh

1
Sorunum da düzeltildi. Dikkat edin - Anında Çalıştırma yararlıdır, umarım yakında daha iyi bir düzeltme olur
SimonH

1
Aaaaarg bunu her zaman güncellemede etkinleştirir ve her zaman çok fazla soruna neden olur.
Oliver Dixon

1
Jep, Firebase'i projeye koyduktan sonra da benim için sorunun nedeni buydu, Anında Çalıştır'ı devre dışı bırakmak nihayet yapmama izin veriyor, teşekkürler!
Starwave

1
Anında çalıştırmayı devre dışı bırakmak bu sorunla benim için çalıştı. Hatayı bir daha alamadım.
wesley,

11

Sorunun cevaplandığını ve kabul edildiğini düşünüyorum. Ama karşılaştığım şeyi ve nasıl çözdüğümü yazacağım.

Ben de aynı hatayı aldım:

Hata: ': app: transformClassesWithDexForDebug' görevi için yürütme başarısız oldu. com.android.build.api.transform.TransformException: java.lang.RuntimeException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: 'C: \ Program Files \ Java \ jdk1.8.0_60 \ bin \ java.exe' 'komutu sıfır olmayan çıkış değeri 1 ile tamamlandı

Tüm ayarları uygulayabildiğim için şanslı değildim ve başarılı oldum. Ama projeyi yeniden Hata Ayıklamaya çalıştığımda. Bu sefer Üç Hata aldım (yukarıda dahil):

Hata: Java HotSpot (TM) 64 Bit Sunucu VM uyarısı: CodeCache dolu. Derleyici devre dışı bırakıldı.

ve

Hata: Java HotSpot (TM) 64 Bit Sunucu VM uyarısı: -XX kullanarak kod önbellek boyutunu artırmayı deneyin: ReservedCodeCacheSize =

Ne yaptım ben? Sadece Android Studio'ya gidiyorum:

Dosya> Önbellekleri Geçersiz Kıl / Yeniden Başlat ..> Geçersiz Kıl ve Yeniden Başlat

Hızlı düzeltme!

Ekstra Not:

Gradle Console'da ne buldum:

: app: incrementalDebugTasks: app: prePackageMarkerForDebug: app: fastDeployDebugExtractor: app: createDebugInstantRunAppInfo: app: transformClassesWithDexForDebug Dex'i işlemek için Gradle daemon'un daha büyük bir yığın oluşturması gerekir. Şu anda yaklaşık 910 MB. Daha hızlı sürümler için Gradle arka plan programı için maksimum yığın boyutunu 2048 MB'den fazla artırın. Bunu yapmak için proje gradle.properties içinde org.gradle.jvmargs = -Xmx2048M ayarlayın. Daha fazla bilgi için bkz. Https://docs.gradle.org/current/userguide/build_environment.html : app: transformClassesWithDexForDebug FAILED

Bu konuda Devamı Burada Oracle Blog


9

Bu kodu gradle.properties içine yazdım ve şimdi tamam

org.gradle.jvmargs=-XX:MaxHeapSize\=2048m -Xmx2048m

8
  1. Gradle'ınızdaki jar dosyalarını kaldırın
  2. Senkronize et
  3. Bu kavanozu kopyalayın ve senkronize edin

Bu benim için çalıştı.


Hangi jar dosyalarını daha spesifik olabilir misiniz? Projemizdeki kavanoz dosyaları gradle/wrappermı?
HendraWD

4
"Kavanozlar" söz insanlar ile ne olduğunu bilmiyorum. Bu hiçbir şeyi açıklamaz.
izleme

7

Sadece belirli bir servisi kullanarak bana çalıştı.

Örneğin, kullanım yerine:

compile 'com.google.android.gms:play-services:10.0.1'

Kullandım:

com.google.android.gms:play-services-places:10.0.1


1
Burada aynı. Derleme ile '10.2.0 com.google.android.gms: play-hizmetler-location' ı derlemek ': play-hizmetleri 10.2.0 com.google.android.gms' değiştirerek sorunu çözüldü
Sukhbir

6

Biraz eski bir soru olduğunu biliyorum, ama yine de. Bu her zaman başıma geliyor, çünkü tüm oyun hizmetleri kütüphanelerini dahil ettim. Sadece play-services: xxx'i build.gradle (module) dosyasında play-service-: xxx olarak değiştirin


6

Sol 1: İçinde build.gradle:

defaultConfig {
    multiDexEnabled true
}

Projenizi temizleyin ve yeniden oluşturun.

Sol 2: in local.propertieseklenti,

org.gradle.jvmargs=-XX\:MaxHeapSize\=512m -Xmx512m

Sol 3

compile 'com.android.support:multidex:1.0.1'

Else tüm 3 uygulamanıza ekleyin.


5

sadece multiDexEnabled değerini true olarak ayarlamak iyi çalıştı.

    defaultConfig 
    {
        multiDexEnabled true     
    }

3

Jdk'yi 1.8.0_74, Android-studio'u 2.1 önizleme 1'e güncelledim ve Uygulama dosyasına ekledim

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}

2

Ben de aynı problemi yaşadım. Bir gün program mükemmel bir şekilde çalışıyordu ve aşağıdakiler çalışmadı. Yaptığım değişiklikleri Github'da kontrol ettim. Benim için sorun bağımlılıklarda build.gradle (Modül: app) idi:

compile 'com.android.tools.build:gradle:2.1.2'

Bu çizgi soruna neden olan çizgiydi. Değiştirdikten sonra uygulama tekrar düzgün çalışıyor


1
Başka Bir
Şansla

1
Bunu neye dönüştürmek?
Ruchir Baronia

1
Sildim (şimdi kontrol ediyordum) ve çalışmaya devam etti
Sara Alberola

2

bu satırı build.gradle

 defaultConfig {
    ............
    aaptOptions.cruncherEnabled = false
    aaptOptions.useNewCruncher = false
    compileOptions.encoding = 'ISO-8859-1'
    multiDexEnabled true
}

4
Buraya hangi "satırı" eklediniz?
OneCricketeer

2

DefaultConfig'de Add multiDexEnabled = true

    defaultConfig {
    applicationId "com.test"
    minSdkVersion 16
    targetSdkVersion 25
    versionCode 1
    versionName "1.0"
    multiDexEnabled = true
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

2

Bu nedenle, benimki multiDexEnabled bayrağı ekleyerek çözülmedi. Aslında hata mesajı almadan önce vardı.

Benim için hatayı çözen şey, tüm oyun hizmetleri kitaplıklarının aynı sürümünü kullandığımdan emin olmaktı. Bir kütüphanede 11.8.0 vardı ama kütüphaneyi tüketen uygulamada 11.6.0 kullanıyordum ve bu fark hata mesajına neden oldu.

Bu nedenle, kitaplıklarınızı önceki yanıtlar gibi belirli bir sürüme değiştirmek yerine, sürümleri karıştırmanın uyarılar nedeniyle Android Studio tarafından açıkça önerilmemesi nedeniyle aynı sürümü kullandığınızı kontrol etmek isteyebilirsiniz.


2

Çok çaba sarf ettikten sonra kimlik bilgilerinin altına ekledim ve başarılı oldum

1) app-> 'proguard-rules.pro' dosyası

-ignorewarnings

-keep class * {
    public private *;
}

2) Ve ayrıca app eklendi -> build.gradle dosyası

android {

        ...........................
    defaultConfig {
        ..................  

     multiDexEnabled true
    }


    buildTypes {
        debug {
            minifyEnabled true
            useProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }
        innerTest {
            matchingFallbacks = ['debug', 'release']
        }

    }

...................................................
}

dependencies {
    ..................................
    implementation  'com.android.support:multidex:1.0.2'
}

2

Varsayılan olarak, Android Studio'nun maksimum yığın boyutu 1280 MB'dir. Büyük bir proje üzerinde çalışıyorsanız veya sisteminizde çok fazla RAM varsa, çekirdek IDE, Gradle daemon ve Kotlin arka plan programı gibi Android Studio işlemleri için maksimum yığın boyutunu artırarak performansı artırabilirsiniz.

En az 5 GB RAM'e sahip bir 64 bit sistem kullanıyorsanız, projeniz için yığın boyutlarını manuel olarak da ayarlayabilirsiniz. Bunu yapmak için şu adımları izleyin:

Menü çubuğundan Dosya> Ayarlar'ı (veya macOS'ta Android Studio> Tercihler'i) tıklayın. Görünüm ve Davranış> Sistem Ayarları> Bellek Ayarları'nı tıklayın.

Daha fazla bilgi için tıklayın

https://developer.android.com/studio/intro/studio-config

resim açıklamasını buraya girin


1

Sadece Google Play servislerini gradle (modül uygulaması) 9.xx'den alt sürüm 8.4.0'a değiştir


Bu, kullandığınız tüm diğer Google Play Hizmetleri sürümünün eşleşmediğinin bir işaretidir.
OneCricketeer


1

Google play hizmetlerini 9.8.0 güncelledikten sonra sorun yaşıyorsanız bunu bağımlılıklarınıza ekleyin:

`dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.google.firebase:firebase-messaging:9.8.0'
compile 'com.google.android.gms:play-services-maps:9.8.0'
compile 'com.google.android.gms:play-services-location:9.8.0'
compile 'com.google.firebase:firebase-database:9.8.0'
compile 'com.google.firebase:firebase-auth:9.8.0'
compile 'com.google.firebase:firebase-crash:9.8.0'
compile 'com.google.maps.android:android-maps-utils:0.4.4'
compile 'com.google.android.gms:play-services-appindexing:9.8.0'

}

1

Bu hata ayıklama yapılarında bile başıma geldi ve tüm modül düzeyi ve proje düzeyi oluşturma klasörlerini temizledi ve işe yaradı, evet aynen böyle.


Şimdi benim için çalıştı.
WillC

1

Hala VS-TACO kullananlar ve bu sorunu olanlar için. Bu, bir jar dosyasının sürüm tutarsızlığı nedeniyle olur.

Yine build.gradlede platforms\androidklasördeki dosyaya düzeltmeler eklemeniz gerekiyor :

 defaultConfig {
        multiDexEnabled true 
 }

 dependencies {
      compile 'com.android.support:multidex:1.0.3'
 }

build-extras.gradleDosyada (build.gradle dosyasına otomatik olarak bağlanan) varsa, diğer tüm değişikliklerinizle birlikte yapmak ve platforms/androidklasördeki tüm dosyaları silmek daha iyidir , ancak yalnızca build-extras.gradledosyada bırakın . Sonra derleyin.


1

Bu cevapların hiçbiri benim için işe yaramadı. Android stüdyosu 3.4.1 kullanıyorum.

Projeyi oluşturabildim, ancak Android stüdyosunu mobil cihaza dağıtırken bu hatayı gösteriyor. "Anında çalışır" hatası olduğu ortaya çıktı.

Bu yanıtı izleyin: https://stackoverflow.com/a/42695197/3197467


0

Gerçekten nasıl bilmiyorum ama tüm bunları yaptıktan sonra hata gitti:

1

silmek implementation 'com.google.android.gms:play-services:12.0.1'

Ve Ekle

implementation 'com.google.android.gms:play-services-location:12.0.1'
implementation 'com.google.android.gms:play-services-maps:12.0.1'
implementation 'com.google.android.gms:play-services-places:12.0.1'

2

Git, jdk, Project yapısında JDK konumunu değiştirme

3

Projemdeki derleme klasörünü sil

4

Projeyi temizleme ve yeniden oluşturma

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.