Android - ошибка: не удалось выполнить задачу ': app: transformClassesWithDexForRelease'


191

Проблема в том, что я могу запустить свое приложение при переходе в debugрежим, но при переключении в releaseрежим он не работает.

Исключение:

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

Когда я запустил команду сборки gradle с помощью stacktrace, то это то, что я получил

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

Я использую

  • Android Studio 2.0 Beta 6
  • Версия Java: среда выполнения Java (TM) SE (сборка 1.8.0_73-b02)
  • Версия Gradle: com.android.tools.build:gradle:2.0.0-beta6
  • И у меня включен Multidex

Мой файл 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'

}

Кажется, я могу заставить работать мою сборку релиза, если удаляю minifyEnabled trueее. Почему это так, есть ли другой способ решить это?


Не могли бы вы опубликовать файл build.gradle вашего приложения?
Harisewak

@Harisewak Я обновил вопрос, пожалуйста, взгляните на него сейчас
Шераз Ахмад Хилджи

Да @ Шераз, вы правы, что переключение minifyEnabled на false решает проблему. Я прочитал это в документе: «Вы должны включить minifyEnabled, чтобы включить сжатие кода, а затем shrinkResources, чтобы включить сжатие ресурсов. Если вы еще не использовали minifyEnabled, убедитесь, что вы работаете, прежде чем также добавлять shrinkResources, поскольку вам, возможно, придется отредактировать файл proguard-rules.pro, чтобы убедиться, что все методы, к которым вы обращаетесь с помощью отражения и т. Д., Перечислены в качестве правил хранения в этом. файл »( tools.android.com/tech-docs/new-build-system/resource-shrinking ). Посмотрите, так ли это.
Harisewak

1
@Harisewak все еще не решает проблему, если я запускаю задачу с отладкой, то я получаю эту ошибкуUncaught translation error: com.android.dx.cf.code.SimException: com.android.dx.rop.cst.CstMethodRef cannot be cast to com.android.dx.rop.cst.CstInterfaceMethodRef
Шераз Ахмад Хилджи

У меня та же проблема с моим проектом. Если я использую com.android.tools.build:gradle:1.3.0, я могу скомпилировать. Как только я использую 2.0.0, это вызывает у меня ту же проблему
Santacrab

Ответы:


186

я исправил только этот код.

local.properties

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

и вы должны сделать это, меняясь на Gradle

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

    multiDexEnabled true //important
}

4
"local.properties" - это имя файла или значение конфигурации? Где (например: в какой папке) он находится внутри проекта?
Улисс Алвес

1
Файл local.properties находится на корневом уровне проекта. если у вас есть проблемы о multiDex -> developer.android.com/studio/build/multidex.html
aemre

Я просто вставил multiDexEnabled true в свой build.gradle, и волшебство было сделано. Спасибо.
Марсело Гумьеро

Я не знаю, что все это значит, но это сработало для меня!
DaveNOTDavid

На API <21, multiDexEnabledбез расширения Applicationкласса из MultiDexApplicationприведет к NoClassDefFoundErrors.
Miha_x64

82

Если вы сделаете multiDexEnabled = trueв defaultConfig приложения, вы получите желаемый результат.

defaultConfig {
    minSdkVersion 14
    targetSdkVersion 22
    multiDexEnabled = true
}

Это не единственный шаг к разрешению Multidex. И это нужно только тогда, когда ты видишь DexException. developer.android.com/studio/build/multidex.html
OneCricketeer

45

Для меня проблема была решена после того, как я удалил jarфайл из своего проекта. кажется, что один из jarфайлов в моем проекте использовал более старую версию google play services.


такая же проблема с jackrabbit-standalone-2.12.2.jar. Если я добавлю его в проект, тогда возникнет проблема.
Алексеев Валерий

1
@MikeOx Я обновил некоторые инструменты Android, и в результате я получил две версии нескольких файлов jar, например, mockable-android-24.jar и mockable-android-25.jar. Удаление старых исправило эти ошибки сборки для меня.
Парвус

но тогда я не использую jar-файл, почему я сталкиваюсь с этой проблемой
Мистер Безумный,

15
Можете ли вы дать более подробное объяснение этого решения
Иван Милисавлевич

@IvanMilisavljevic Теперь вы можете использовать Gradle, а не JAR-файлы. developers.google.com/android/guides/setup#split
OneCricketeer

39

Я получил также ту же ошибку:

Ошибка: не удалось выполнить задачу ': 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: обработать 'команду' C: \ Program Files \ Java \ jdk1.8.0_60 \ bin \ java.exe '' с ненулевым значением выхода 1

хорошо я исправил это с помощью следующих шагов:

  1. Откройте build.gradle вашего приложения (не тот, что находится в корне проекта) и добавьте:

    android {
    //snippet
    //add this into your existing 'android' block
    
        dexOptions {
        javaMaxHeapSize "4g"
        }
    
    //snip
    }
  2. Попробуйте свою сборку еще раз.

Примечание: 4g - это 4 гигабайта, и это максимальный размер кучи для работы dex.


Спас мой день! Ура!
devhermluna

Лучшее ... я бродил часами .. спасибо!
MbaiMburu

33

НЕТ НЕОБХОДИМОСТИ ДЛЯ MULTIDEX, Я ПОВТОРЯЮ, НЕТ НЕОБХОДИМОСТИ ДЛЯ MULTIDEX


Позвольте мне уточнить: Multidex - это в основном инструмент, который поставляется с Android, и если вы установите его в значение true, приложения с> 64 000 методов могут компилироваться с использованием слегка измененного процесса сборки. Однако вам нужно использовать multidex только если ваша ошибка выглядит так:

Неполадки при записи: слишком много ссылок на поля: 131000; макс 65536. Вы можете попробовать использовать опцию --multi-dex.

или как это

Не удалось выполнить преобразование в формат Dalvik: невозможно выполнить dex: идентификатор метода отсутствует в [0, 0xffff]: 65536

Но это не тот случай, здесь! Проблема здесь (по крайней мере для меня) вызвана зависимостями вашего файла build.gradle.

РЕШЕНИЕ: конкретные зависимости, а не просто импортируйте целый раздел зависимостей!

Например, если вам нужна зависимость Play Services для местоположения, импортируйте ее только для местоположения.

ДЕЛАТЬ:

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

ЗАПРЕЩАЕТСЯ:

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

Другой проблемой, которая может быть причиной этого, может быть какая-то внешняя библиотека, которую вы используете, которая ссылается на предыдущую версию вашей зависимости. Выполните следующие действия в этом случае:

  1. Зайдите в SDK manager и установите все обновления для ваших зависимостей
  2. Убедитесь, что ваш файл build.gradle показывает последнюю версию. Чтобы получить последнюю версию, используйте эту ссылку: https://developers.google.com/android/guides/setup
  3. Отредактируйте вашу библиотеку (или установите обновленную версию, если она существует), чтобы ссылаться на последнюю версию

Я знаю, что этот вопрос старый, но мне нужно получить этот ответ, потому что использование multidex без какой-либо причины может вызвать ANR для вашего приложения! ТОЛЬКО используйте multidex, если вы уверены, что он вам нужен, и вы понимаете, что это такое.

Я сам часами пытался решить эту проблему без мультидекса, и я просто хотел поделиться своими выводами - надеюсь, это поможет


Brilliant! Работает отлично!
stoefln

1
Как вы знаете, какая конкретная зависимость вызывает проблему? Я добавил, com.facebook.android:audience-network-sdk:4.+и я не могу строить с тех пор.
Ciberman

Вы спасли мой день!
Роуэн

1
такой глупый ответ. если у вас много зависимостей, вам все равно понадобится multi dex. просто добавьте библиотеки kotlin, пару сервисов google ( com.google.android.gms:play-services-*:*), службы firebase, crashlytics, gson, androidx (библиотеки поддержки), cardview, recyclerview, android.material: материал. ЭТО НЕ ВОЗМОЖНО БЕЗ MULTI DEX (вам нравится capslock? Мне не нравится, поэтому, пожалуйста, не отвечайте на такие вопросы здесь в следующий раз ...)
user155

Некоторое тело здесь умное! Точно!, Это не мультидексная ошибка, мультидексная ошибка отличается, и это может быть из некоторых зависимостей. и @ user155, RUCHIR НЕ НЕСЕТ ОТВЕТСТВЕННОСТИ ЗА ВАШУ ПРОБЛЕМУ ЗАВИСИМОСТИ! и мне нравятся заглушки :)
Hossein

25

Добавьте multiDexEnabled true в ваш defaultConfig на уровне приложения gradle.

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

24

У меня была похожая проблема в моем приложении. Вот что я сделал.

1.Добавить это для build.gradle в модуль: приложение

multiDexEnabled = true

Таким образом, код будет выглядеть так:

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

Это сработало для меня. Надеюсь, это вам тоже поможет :)

В том же проекте я тоже использовал Firebase . Таким образом, включение multiDexEnabled позволяет решить другую проблему в Firebase для устройств Pre Lollipop . Некоторые классы FireBase не были идентифицированы. ( Невозможно получить поставщика com.google.firebase.provider ).
Метод решения, который объясняется здесь.


minifyEnable true дает мне исключение - ниже мой Вопрос stackoverflow.com/questions/51720018/… Пожалуйста, помогите мне с этим.
Навин

21

Я получил эту ошибку при обновлении сервисов Google play до 9.0 с 7.5

Ошибка с ниже:

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

Когда я изменился на

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

Там нет ошибки. Попробуй это


1
спасибо, я изменил версию для компиляции 'com.google.android.gms: play-services: 8.4.0' я думаю, что volley использует некоторые старые сервисы Google play, которые не совместимы с play-services:> 9.0
jai_b

3
Это было решением для меня. Проблема в том, что несколько сторонних модулей ссылаются на play-сервисы с разными версиями, так как же ожидать, что эти версии будут синхронизироваться все время? Очень странная архитектурная деталь.
Райан Х.

1
Вы не должны использовать это. Пожалуйста, выборочно скомпилируйте эти библиотеки. developers.google.com/android/guides/setup#split
OneCricketeer

14

После обновления до Android 3.4 я начал получать ошибку, перепробовал все вышеперечисленные решения.

Основной причиной проблемы было обновление Android Studio, включив мгновенный запуск .

Следовательно, одно из решений, которое вы можете попробовать, - это отключить Instant Run, если он включен для вас, исправил мою проблему.


1
Я была такая же проблема. Отключение Instant Run и включение его снова работало для меня.
Фог

1
Исправил мою проблему тоже. Имейте в виду - Instant Run полезен, поэтому я надеюсь, что скоро будет лучшее решение
SimonH

1
Ааааарг, они всегда включают это в обновлении, и это всегда вызывает так много проблем.
Оливер Диксон

1
Jep, это было причиной проблемы и для меня после того, как я включил Firebase в проект, отключение Instant Run наконец-то позволило мне собрать его, спасибо!
Starwave

1
Отключение мгновенного запуска помогло мне решить эту проблему. Не получил ошибку снова.
Уэсли Фрэнкс

11

Ну, я верю, что на вопрос ответили и его принимают. Но я собираюсь написать, что я сталкиваюсь и как я решил это.

Я получил также ту же ошибку:

Ошибка: не удалось выполнить задачу ': 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: обработать 'команду' C: \ Program Files \ Java \ jdk1.8.0_60 \ bin \ java.exe '' с ненулевым значением выхода 1

Мне не повезло применить все настройки и я добился успеха. Но когда я снова попытался отладить проект. На этот раз я получил три ошибки (в том числе выше):

Ошибка: предупреждение о виртуальной машине 64-разрядного сервера Java HotSpot (TM): CodeCache заполнен. Компилятор был отключен.

и

Ошибка: предупреждение виртуальной машины Java HotSpot (TM) 64-разрядного сервера: попробуйте увеличить размер кэша кода с помощью -XX: ReservedCodeCacheSize =

Так что я сделал? Я просто иду в Android Studio:

Файл> Неправильные кэши / перезапуск ..> Неправильный и перезапуск

Быстрая починка!

Дополнительное примечание:

Что я нашел в консоли Gradle:

: app: incrementalDebugTasks: app: prePackageMarkerForDebug: app: fastDeployDebugExtractor: app: generateDebugInstantRunAppInfo: app: transformClassesWithDexForDebug Для запуска dex в процессе работы демону Gradle требуется большая куча. В настоящее время он имеет около 910 МБ. Для более быстрой сборки увеличьте максимальный размер кучи для демона Gradle до более чем 2048 МБ. Для этого установите org.gradle.jvmargs = -Xmx2048M в проекте gradle.properties. Для получения дополнительной информации см. Https://docs.gradle.org/current/userguide/build_environment.html : app: transformClassesWithDexForDebug FAILED

Подробнее об этом читайте здесь в блоге Oracle


9

Я только что написал этот код в gradle.properties, и теперь все в порядке

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

8
  1. Удалите фляги в своем gradle
  2. Синхронизировать это
  3. Скопируйте эту банку и синхронизируйте ее

Это сработало для меня.


Можете ли вы более конкретно указать, какие jar-файлы? Это jar-файлы внутри нашего проекта gradle/wrapper?
HendraWD

4
Не знаю, что с людьми, упоминающими "банки". Это ничего не объясняет.
трассировка

7

Это работало для меня только с использованием определенного сервиса.

Например, вместо использования:

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

Я использовал:

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


1
Тоже самое. Я решил проблему, заменив compile 'com.google.android.gms: play-services: 10.2.0' на compile 'com.google.android.gms: play-services-location: 10.2.0'
Сухбир

6

Я знаю, что это старый вопрос, но все же. Каждый раз, когда это происходит со мной, это потому, что я включил все библиотеки play-services. Просто измените play-services: xxx на play-service-: xxx в файле build.gradle (module)


6

Соль 1: В build.gradle:

defaultConfig {
    multiDexEnabled true
}

Очистите ваш проект и восстановите.

Соль 2: в local.propertiesдобавлении,

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

Соль 3

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

Еще добавьте все 3 в вашем приложении.


5

просто установив для multiDexEnabled значение true, все работало нормально.

    defaultConfig 
    {
        multiDexEnabled true     
    }

3

Я обновил jdk до 1.8.0_74, Android-studio до 2.1 превью 1 и добавил в файл приложения

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

2

У меня такая же проблема. Однажды программа работала отлично, а следующий - нет. Я проверил на Github изменения, которые я сделал. Для меня проблема была на build.gradle (Module: app) в зависимости:

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

Эта линия была той, которая вызывала проблему. После изменения приложение снова работало нормально


1
Нет другого шанса>
Аджай Пандья

1
Менять это на что?
Ручир Барония

1
Я стер его (я проверял это сейчас), и он продолжал работать
Сара Альберола

2

добавьте эту строку в свой build.gradle

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

4
Какую «строчку» вы здесь добавили?
OneCricketeer

2

В DefaultConfig Добавить multiDexEnabled = true

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

2

Таким образом, моя проблема не была решена путем добавления флага multiDexEnabled. Это на самом деле было там до получения сообщения об ошибке.

Что решило эту ошибку, так это то, что я использовал одну и ту же версию всех библиотек play-services. В одной библиотеке у меня было 11.8.0, но в приложении, которое использует библиотеку, я использовал 11.6.0, и это различие было причиной сообщения об ошибке.

Таким образом, вместо того, чтобы менять свои библиотеки на определенную версию, подобную предыдущим ответам, возможно, вы захотите проверить, что вы используете одну и ту же версию повсюду, так как смешивание версий явно не рекомендуется в Android Studio предупреждениями.


2

После долгих усилий я просто добавил ниже учетные данные, и мне это удалось

1) файл app-> 'proguard-rules.pro'

-ignorewarnings

-keep class * {
    public private *;
}

2) А также добавлено в app -> build.gradle file

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

По умолчанию Android Studio имеет максимальный размер кучи 1280 МБ. Если вы работаете над большим проектом или в вашей системе много оперативной памяти, вы можете повысить производительность, увеличив максимальный размер кучи для процессов Android Studio, таких как ядро ​​IDE, демон Gradle и демон Kotlin.

Если вы используете 64-разрядную систему с ОЗУ не менее 5 ГБ, вы также можете вручную настроить размеры кучи для своего проекта. Для этого выполните следующие действия:

Нажмите Файл> Настройки в строке меню (или Android Studio> Настройки в macOS). Нажмите «Внешний вид и поведение»> «Настройки системы»> «Настройки памяти».

Для получения дополнительной информации нажмите

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

введите описание изображения здесь


1

Просто измените сервисы Google Play в Gradle (модульное приложение) с 9.xx на более низкую версию 8.4.0 для меня


Это признак того, что все остальные версии Служб Google Play, которые вы используете, не совпадают.
OneCricketeer


1

Если после обновления сервисов Google Play 9.8.0 вы столкнулись с проблемой, добавьте это в свои зависимости:

`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

Это случилось со мной даже на отладочных сборках, и я просто очистил все папки сборок уровня модуля и уровня проекта, и это сработало, да, просто так.


У меня сработало только сейчас.
WillC

1

Для тех, кто все еще использует VS-TACO и имеет эту проблему. Это происходит из-за несоответствия версий файлов JAR.

Вам все еще нужно добавить исправления в build.gradleфайл в platforms\androidпапке:

 defaultConfig {
        multiDexEnabled true 
 }

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

Лучше сделать в build-extras.gradleфайле (который автоматически связывается с файлом build.gradle) все остальные ваши изменения, если они есть, и удалить все в platforms/androidпапке, но оставить там только build-extras.gradleфайл. Тогда просто скомпилируйте.


1

Ни один из этих ответов не работал для меня. Я использую Android studio 3.4.1.

Мне удалось создать проект, но Android-студия показала эту ошибку, когда собиралась развернуть его на мобильном устройстве. Оказывается, это ошибка «мгновенных пробежек».

Следуйте этому ответу: https://stackoverflow.com/a/42695197/3197467


0

Я действительно не знаю как, но ошибка исчезла после того, как я все это сделал:

1

Удалить implementation 'com.google.android.gms:play-services:12.0.1'

И добавить

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, измените расположение JDK в структуре проекта

3

Удалить папку сборки в моем проекте

4

Очистить и восстановить проект

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.