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
}
aemre
источник
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.

PN10
источник
Спас мой день! Ура!
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
}
Mwongera808
источник
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 ).
Метод решения, который объясняется здесь.

Thilina Kj
источник
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'

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

Kalaivanan
источник
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, если он включен для вас, исправил мою проблему.

devDeejay
источник
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

fWd82
источник
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)

KostasKol
источник
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 в вашем приложении.

Crime_Master_GoGo
источник
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 предупреждениями.

kriztho
источник
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

Я исправил мой, я добавил в свой проект > приложение > libs android volley.jar, и моя проблема была решена

MarJose
источник
Вам не нужен файл JAR. compile 'com.android.volley:volley:1.0.0' developer.android.com/training/volley/index.html
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

Keivan
источник
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

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

Кё Хуу
источник