Android- Erro: Falha na execução da tarefa ': app: transformClassesWithDexForRelease'

191

O problema é que consigo executar meu aplicativo quando mudo para o debugmodo, mas ele falha quando mudo para o releasemodo.

Exceção:

**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

Quando executei o comando gradle build com o stacktrace, é isso que recebo

./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

estou usando

  • Android Studio 2.0 Beta 6
  • Versão Java: Java (TM) SE Runtime Environment (compilação 1.8.0_73-b02)
  • Versão Gradle: com.android.tools.build:gradle:2.0.0-beta6
  • E eu tenho o Multidex ativado

Meu arquivo build.gradle

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'

}

Parece que eu consigo fazer a compilação do meu release funcionar se eu removê minifyEnabled true-lo. Por que isso, existe outra maneira de resolvê-lo

Sheraz Ahmad Khilji
fonte
você pode postar o arquivo build.gradle do seu aplicativo?
Harisewak
@Harisewak Eu atualizei a questão, por favor, dê uma olhada nisso agora
Sheraz Ahmad Khilji
Sim @Sheraz, você está certo ao alternar minifyEnabled para false, resolve o problema. Eu li isso no doc: 'você precisa habilitar o minifyEnabled para ativar o encolhimento do código e, em seguida, o shrinkResources para ativar o encolhimento do recurso. Se você ainda não estiver usando o minifyEnabled, certifique-se de fazê-lo funcionar antes de adicionar também shrinkResources, pois pode ser necessário editar seu arquivo proguard-rules.pro para garantir que todos os métodos que você acessa com reflexão etc. estejam listados como regras de manutenção. arquivo '( tools.android.com/tech-docs/new-build-system/resource-shrinking ). Veja se é esse o caso.
Harisewak 9/03/16
1
@Harisewak ainda doesnt resolver o problema, se eu executar a tarefa com depuração, em seguida, eu recebo este erroUncaught 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
Eu tenho o mesmo problema com o meu projeto. Se eu usar o com.android.tools.build:gradle:1.3.0, posso compilar. Assim que eu uso o 2.0.0 ele me dá o mesmo problema
Santacrab

Respostas:

185

Eu corrigi apenas este código.

local.properties

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

e você deve fazer isso mudando gradle

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

    multiDexEnabled true //important
}
aemre
fonte
4
"local.properties" é um nome de arquivo ou um valor de configuração? Onde (por exemplo: em qual pasta) ele está localizado dentro do projeto?
Ulysses Alves
1
O arquivo local.properties fica no nível raiz do projeto. se você tem um problema sobre multiDex -> developer.android.com/studio/build/multidex.html
aemre
Acabei de inserir multiDexEnabled true no meu build.gradle e a mágica foi concluída. Obrigado.
Marcelo Gumiero 27/02
Não sei o que tudo isso significa, mas funcionou para mim!
DaveNOTDavid
Na API <21, multiDexEnabledsem estender a Applicationclasse de MultiDexApplication, levará a NoClassDefFoundErrors.
precisa saber é o seguinte
82

Se você criar o multiDexEnabled = truedefaultConfig do aplicativo, obterá o resultado desejado.

defaultConfig {
    minSdkVersion 14
    targetSdkVersion 22
    multiDexEnabled = true
}
Rahul
fonte
Esse não é o único passo para permitir o Multidex. E você só precisa disso quando vê uma DexException, pelo menos. developer.android.com/studio/build/multidex.html
OneCricketeer 27/02
45

Para mim, o problema foi resolvido depois que removi o jararquivo do meu projeto. parece que um dos jararquivos dentro do meu projeto estava usando uma versão mais antiga do google play services.

Sheraz Ahmad Khilji
fonte
mesmo problema com o jackrabbit-standalone-2.12.2.jar. Se eu adicionar ao projeto, o problema será levantado.
Alexeev Valeriy
1
@MikeOx Atualizei algumas ferramentas do Android e, como resultado, acabei com duas versões de alguns arquivos jar, como mockable-android-24.jar e mockable-android-25.jar. Remover os antigos corrigia esses erros de compilação para mim.
parvus
mas eu não estou usando qualquer arquivo jar, então por que eu estou enfrentando este problema
Mr. Mad
15
Você pode fornecer mais detalhes sobre esta solução
Ivan Milisavljevic
@IvanMilisavljevic Você pode usar o Gradle agora, não os arquivos JAR. developers.google.com/android/guides/setup#split
OneCricketeer 27/02
39

Também recebi o mesmo erro:

Erro: Falha na execução da tarefa ': app: transformClassesWithDexForDebug'. 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: processo 'comando' C: \ Arquivos de programas \ Java \ jdk1.8.0_60 \ bin \ java.exe '' finalizado com o valor de saída diferente de zero 1

bem, eu corrigi isso com a ajuda das seguintes etapas:

  1. Abra o build.gradle do seu aplicativo (não aquele na raiz do projeto) e adicione:

    android {
    //snippet
    //add this into your existing 'android' block
    
        dexOptions {
        javaMaxHeapSize "4g"
        }
    
    //snip
    }
  2. Tente sua compilação novamente.

Nota: 4G é 4 Gigabytes e esse é o tamanho máximo da pilha para a operação dex.

PN10
fonte
Salvou o meu dia! Felicidades!
Devhermluna
O melhor ... eu tenho vagado por horas..obrigado!
MbaiMburu
33

NECESSIDADE DE MULTIDEX, REPETIR, NECESSIDADE DE MULTIDEX


Deixe-me elaborar: o Multidex é basicamente uma ferramenta que vem com o Android e, se você configurá-lo como verdadeiro, aplicativos com> 64.000 métodos poderão compilar usando um processo de compilação ligeiramente alterado. No entanto, você só precisará usar multidex se o seu erro estiver assim:

problemas ao escrever saída: Muitas referências de campo: 131000; max é 65536. Você pode tentar usar a opção --multi-dex.

ou assim

Falha na conversão para o formato Dalvik: Não foi possível executar o dex: ID do método que não está em [0, 0xffff]: 65536

Mas esse não é o caso aqui! O problema aqui (pelo menos para mim) está sendo causado pelas dependências do seu arquivo build.gradle.

A SOLUÇÃO: Utilize dependências específicas - não importe apenas uma seção inteira de dependências!

Por exemplo, se você precisar da dependência do Play Services para o local, importe-o apenas para o local.

FAZ:

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

NÃO:

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

Outro problema que pode estar causando isso pode ser algum tipo de biblioteca externa que você está usando, que está referenciando uma versão anterior de sua dependência. Siga estas etapas nesse caso:

  1. Vá para o gerenciador do SDK e instale as atualizações nas suas dependências
  2. Verifique se o arquivo build.gradle mostra a versão mais recente. Para obter a versão mais recente, use este link: https://developers.google.com/android/guides/setup
  3. Edite sua biblioteca (ou instale uma versão atualizada, se houver), para referenciar a versão mais recente

Sei que essa pergunta é antiga, mas preciso obter essa resposta, porque o uso do multidex sem nenhum motivo pode causar ANRs para o seu aplicativo! APENAS use multidex se tiver certeza de que precisa e entender o que é.

Eu próprio passei horas tentando resolver esse problema sem multidex e só queria compartilhar minhas descobertas - espero que isso ajude

Ruchir Baronia
fonte
Brilhante! Funciona perfeitamente!
stoefln
1
Como você sabe qual dependência específica causa o problema? Eu adicionei com.facebook.android:audience-network-sdk:4.+e não consigo construir desde então.
Ciberman # 30/17
Você salvou o meu dia!
Rowan
1
uma resposta tão estúpida. se você tiver muitas dependências, precisará de vários dexs de qualquer maneira. basta adicionar bibliotecas kotlin, alguns serviços do google ( com.google.android.gms:play-services-*:*), serviços da base de firmas, crashlytics, gson, androidx (bibliotecas de suporte), cardview, recyclerview, android.material: material. NÃO É POSSÍVEL SEM MULTI DEX (você gosta capslock eu não, então por favor não responder a tais perguntas aqui da próxima vez ...?)
user155
Algum corpo é inteligente aqui! Exatamente!, Não é um erro multidex, o erro multidex é diferente e pode ser de algumas dependências. e @ user155, Ruchir NÃO É RESPONSÁVEL POR SUA DEPENDÊNCIAS problema e como capslocks :)!
Hossein
25

Adicione multiDexEnabled true no seu defaultConfig no nível do aplicativo gradle.

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

Eu tive o problema semelhante no meu aplicativo. Aqui está o que eu fiz.

1. adicione isso para build.gradle no módulo: app

multiDexEnabled = true

Portanto, o código seria como:

    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'
        }
    }
}

Isso funcionou para mim. Espero que isso ajude você também :)

No mesmo projeto, eu estava usando o Firebase também. A ativação do multiDexEnabled deixou outro problema no Firebase para dispositivos pré-pirulito . Algumas classes do FireBase não foram identificadas. ( Não foi possível obter o provedor com.google.firebase.provider ).
Método para resolver isso é explicado aqui.

thilina Kj
fonte
minifyEnable true me dá exceção - Abaixo está minha pergunta, stackoverflow.com/questions/51720018/… Por favor me ajude com isso.
Naveen
21

Recebi este erro Ao atualizar o Google Play Services para 9.0 de 7.5

Tendo erro com um abaixo:

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

Quando mudei para

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

Não há erro. Tente isto

Kalaivanan
fonte
1
obrigado, eu mudei a versão para compilar 'com.google.android.gms: play-services: 8.4.0' Acho que o volley usa alguns serviços antigos do Google play que não são compatíveis com o play-services:> 9.0
jai_b
3
Esta foi a solução para mim. O problema é que vários módulos de terceiros fazem referência a serviços de reprodução com versões diferentes. Portanto, como é esperado que essas versões estejam sincronizadas o tempo todo? Detalhe arquitetônico muito estranho.
Ryan H.
1
Você não deve usar isso. Por favor, compile seletivamente essas bibliotecas. developers.google.com/android/guides/setup#split
OneCricketeer 27/02
14

Depois de atualizar para o Android 3.4, comecei a receber o erro, tentei todas as soluções acima.

A causa principal do problema foi que a atualização do Android Studio ativou a Execução Instantânea .

Portanto, uma das soluções que você pode tentar é Desativar a Execução Instantânea, se estiver ativada para você, corrigiu o meu problema.

devDeejay
fonte
1
Eu tive o mesmo problema. Desativar o Instant Run e ativá-lo novamente funcionaram para mim.
23419 Fogh
1
Corrigido meu problema também. Mente-lhe - Instant Run é útil, então eu espero que haja uma correção melhor em breve
SimonH
1
Aaaaarg eles sempre habilitam isso na atualização e sempre causa muitos problemas.
Oliver Dixon
1
Jep, essa também foi a causa do problema para mim depois de colocar o Firebase no projeto. A desativação do Instant Run finalmente permite que eu o construa, obrigado!
Starwave
1
Desativar a execução instantânea funcionou para mim com esse problema. Não obteve o erro novamente.
wesley franqueia
11

Bem, acredito que a pergunta foi respondida e aceita. Mas vou escrever o que enfrento e como o resolvi.

Também recebi o mesmo erro:

Erro: Falha na execução da tarefa ': app: transformClassesWithDexForDebug'. 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: processo 'comando' C: \ Arquivos de programas \ Java \ jdk1.8.0_60 \ bin \ java.exe '' finalizado com o valor de saída diferente de zero 1

Não tive a sorte de aplicar todas as configurações e obtive sucesso. Mas quando tentei depurar o projeto novamente. Desta vez, recebi o Erro Três (incluindo acima):

Erro: aviso da VM do servidor Java HotSpot (TM) de 64 bits: CodeCache está cheio. O compilador foi desativado.

e

Erro: aviso da VM do servidor Java HotSpot (TM) de 64 bits: Tente aumentar o tamanho do cache de código usando -XX: ReservedCodeCacheSize =

Então o que eu fiz? Acabei de ir ao Android Studio:

Arquivo> Invalidar caches / reiniciar ..> Invalidar e reiniciar

Conserto rápido!

Nota Extra:

O que encontrei no Gradle Console:

: app: incrementalDebugTasks: app: prePackageMarkerForDebug: app: fastDeployDebugExtractor: app: generateDebugInstantRunAppInfo: app: transformClassesWithDexForDebug Para executar o dex em processo, o daemon Gradle precisa de uma pilha maior. Atualmente, possui aproximadamente 910 MB. Para compilações mais rápidas, aumente o tamanho máximo do heap para o daemon Gradle para mais de 2048 MB. Para fazer isso, configure org.gradle.jvmargs = -Xmx2048M no projeto gradle.properties. Para obter mais informações, consulte https://docs.gradle.org/current/userguide/build_environment.html : app: transformClassesWithDexForDebug FAILED

Leia mais sobre isso aqui no Oracle Blog

fWd82
fonte
9

Acabei de escrever este código em gradle.properties e agora está ok

org.gradle.jvmargs=-XX:MaxHeapSize\=2048m -Xmx2048m
Selim Özbudak
fonte
8
  1. Remova os arquivos jar em seu gradle
  2. Sincronize
  3. Copie esse jar e sincronize-o

Isso funcionou para mim.

Bharath
fonte
Você pode ser mais específico sobre quais arquivos jar? São os arquivos jar dentro do nosso projeto gradle/wrapper?
precisa saber é o seguinte
4
Não sei o que é que as pessoas mencionam "os frascos". Isso não explica nada.
Trace
7

Funcionou para mim apenas usando um serviço específico.

Por exemplo, em vez de usar:

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

Eu usei:

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

Marco Muñoz
fonte
1
O mesmo aqui. Resolvi o problema substituindo a compilação 'com.google.android.gms: play-services: 10.2.0' pela compilação 'com.google.android.gms: play-services-location: 10.2.0'
Sukhbir
6

Eu sei que é um pouco de uma pergunta antiga, mas ainda assim. Sempre que isso acontece comigo, é porque incluí todas as bibliotecas de serviços de reprodução. Basta alterar play-services: xxx para play-service-: xxx no arquivo build.gradle (module)

KostasKol
fonte
6

Sol 1: Em build.gradle:

defaultConfig {
    multiDexEnabled true
}

Limpe seu projeto e reconstrua.

Sol 2: em local.propertiesadição,

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

Sol 3

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

Caso contrário, adicione todos os 3 em seu aplicativo.

Crime_Master_GoGo
fonte
5

apenas definir o multiDexEnabled como true funcionou bem.

    defaultConfig 
    {
        multiDexEnabled true     
    }
wanjiku
fonte
3

Atualizei o jdk para 1.8.0_74, o Android-studio para 2.1 preview 1 e adicionei ao arquivo Application

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

Eu tive o mesmo problema. Um dia o programa estava funcionando perfeitamente e o seguinte não. Eu verifiquei no Github as alterações que fiz. Para mim, o problema estava no build.gradle (Módulo: app) nas dependências:

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

Essa linha foi a que estava causando o problema. Depois de alterá-lo, o aplicativo estava funcionando corretamente novamente

Sara Alberola
fonte
1
Não está funcionando nenhuma outra chance>
Ajay Pandya
1
Mudando para o quê?
Ruchir Baronia
1
Eu apaguei-lo (eu estava verificando-lo agora) e continuou trabalhando
Sara Alberola
2

adicione esta linha no seu build.gradle

 defaultConfig {
    ............
    aaptOptions.cruncherEnabled = false
    aaptOptions.useNewCruncher = false
    compileOptions.encoding = 'ISO-8859-1'
    multiDexEnabled true
}
Ganesh P
fonte
4
Qual "linha" você adicionou aqui?
OneCricketeer
2

Em DefaultConfig, adicione multiDexEnabled = true

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

Portanto, o meu não foi resolvido adicionando o sinalizador multiDexEnabled. Na verdade, ele estava lá antes de receber a mensagem de erro.

O que resolveu o erro para mim foi garantir que eu estivesse usando a mesma versão de todas as bibliotecas do play-services. Em uma biblioteca, eu tinha o 11.8.0, mas no aplicativo que consome a biblioteca, eu estava usando o 11.6.0 e essa diferença foi o que causou a mensagem de erro.

Portanto, em vez de alterar suas bibliotecas para uma versão específica, como as respostas anteriores, talvez você queira verificar se está usando a mesma versão, já que a mistura de versões é explicitamente desencorajada pelo Android Studio por avisos.

kriztho
fonte
2

Depois de muito esforço, eu apenas adicionei credenciais abaixo e consegui

1) arquivo app-> 'proguard-rules.pro'

-ignorewarnings

-keep class * {
    public private *;
}

2) E também adicionado no aplicativo -> arquivo build.gradle

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'
}
Kush
fonte
2

Por padrão, o Android Studio tem um tamanho máximo de pilha de 1280 MB. Se você estiver trabalhando em um projeto grande ou se seu sistema tiver muita memória RAM, poderá melhorar o desempenho aumentando o tamanho máximo de heap para os processos do Android Studio, como o IDE principal, o daemon Gradle e o daemon Kotlin.

Se você usar um sistema de 64 bits com pelo menos 5 GB de RAM, também poderá ajustar os tamanhos de heap do seu projeto manualmente. Para fazer isso, execute as seguintes etapas:

Clique em Arquivo> Configurações na barra de menus (ou Android Studio> Preferências no macOS). Clique em Aparência e comportamento> Configurações do sistema> Configurações de memória.

Para mais informações, clique em

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

insira a descrição da imagem aqui

vinod
fonte
1

Basta alterar os serviços do Google Play em gradle (módulo de aplicativo) de 9.xx para a versão mais baixa 8.4.0 é trabalho para mim

Nazwa Asshiba
fonte
Isso é sinal de que todas as outras versões do Google Play Services que você usa não correspondem.
OneCricketeer
1

Corrigi o meu que adicionei ao meu projeto > app > libs android volley.jar e meu problema foi resolvido

MarJose
fonte
Você não precisava de um arquivo JAR. compile 'com.android.volley:volley:1.0.0' developer.android.com/training/volley/index.html
OneCricketeer 27/02
1

Se você está enfrentando o problema após atualizar os serviços do Google Play 9.8.0, adicione-o às suas dependências:

`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'

}
ismail alaoui
fonte
1

Isso aconteceu comigo mesmo nas versões de depuração e apenas limpou todas as pastas de criação no nível do módulo e do projeto e funcionou, sim, assim.

Panduka DeSilva
fonte
Trabalhou para mim agora.
WillC 14/05/19
1

Para quem ainda usa o VS-TACO e tem esse problema. Isso acontece devido à inconsistência da versão dos arquivos jar.

Você ainda precisa adicionar correções ao build.gradlearquivo na platforms\androidpasta:

 defaultConfig {
        multiDexEnabled true 
 }

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

É melhor fazer no build-extras.gradlearquivo (que é automaticamente vinculado ao arquivo build.gradle) com todas as outras alterações, se houver, e excluir tudo na platforms/androidpasta, mas deixe apenas o build-extras.gradlearquivo. Então apenas compile.

Serg Tomcat
fonte
1

Nenhuma dessas respostas funcionou para mim. Estou usando o Android studio 3.4.1.

Consegui criar o projeto, mas o estúdio Android mostra esse erro quando o implantava no dispositivo móvel. Acontece que é falha "instant runs".

Siga esta resposta: https://stackoverflow.com/a/42695197/3197467

Keivan
fonte
0

Realmente não sei como, mas o bug desapareceu depois que fiz tudo isso:

1

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

E adicione

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

Atualizar git, jdk, alterar a localização do JDK na estrutura do projeto

3

Excluir a pasta de compilação no meu projeto

4

Limpar e reconstruir o projeto

Kyo Huu
fonte