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 build зі 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 Runtime Environment (збірка 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 Я оновив питання, погляньте на нього зараз
Шераз Ахмад Хілджи

Так @Sheraz, ви праві, що перехід minifyEnabled на помилковий вирішує проблему. Я читаю це в документі: 'вам потрібно включити 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, це створює мені таку ж проблему
Сантакраб

Відповіді:


185

я виправив це саме цей код.

локальні.властивості

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

і вам слід зробити це, змінюючи градули

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 = truedefaultConfig програми, ви отримаєте бажаний результат.

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. Видалення старих виправляло ці помилки побудови для мене.
parvus

але я не використовую жодного файлу jar, то чому я стикаюся з цією проблемою
Містер Mad

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: \ програмні файли \ 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. Спробуйте створити його ще раз.

Примітка: 4 г - 4 гігабайти, і це максимальний розмір купи для роботи dex.


Врятував мій день! Ура!
devhermluna

Найкраще ... Я блукав довкола годинами ... дякую!
MbaiMburu

33

НЕ ПОТРІБНА МУЛЬТИДЕКС, Я ПОВТОРЮВАТИСЯ, НЕ ПОТРІБНА ДЛЯ MULTIDEX


Дозвольте мені пояснити: Multidex - це в основному інструмент, який постачається з Android, і якщо встановити його як істинне, програми з> 64000 методами можуть компілювати за допомогою трохи зміненого процесу збирання. Однак вам потрібно використовувати мультидекс, лише якщо ваша помилка виглядає так:

проблеми з написанням виводу: Забагато посилань на поля: 131000; max - 65536. Ви можете спробувати скористатися опцією --multi-dex.

або як це

Помилка перетворення у формат Dalvik: неможливо виконати dex: ідентифікатор методу не в [0, 0xffff]: 65536

Але це не так! Проблема тут (для мене якнайменше) викликана залежностями вашого файлу build.gradle.

РІШЕННЯ: Використовуйте конкретні залежності - не просто імпортуйте цілий розділ залежностей!

Наприклад, якщо вам потрібна залежність від Служб Play для розташування, імпортуйте її лише для місцезнаходження.

ДО:

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

НЕ:

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

Інша проблема, яка може викликати це, може бути якоюсь зовнішньою бібліотекою, яку ви використовуєте, тобто посиланням на попередню версію вашої залежності. Виконайте такі дії в цьому випадку:

  1. Перейдіть до менеджера SDK та встановіть будь-які оновлення залежностей
  2. Переконайтеся, що ваш файл build.gradle містить останню версію. Щоб отримати останню версію, скористайтеся цим посиланням: https://developers.google.com/android/guides/setup
  3. Відредагуйте свою бібліотеку (або встановіть оновлену версію, якщо така існує), щоб послатись на останню версію

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

Я сам витратив години, намагаючись вирішити цю проблему без мультидекса, і просто хотів поділитися своїми висновками - сподіваюся, що це допоможе


Блискуче! Працює чудово!
stoefln

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

Ти врятував мій день!
Роуан

1
така дурна відповідь. якщо у вас багато залежностей, вам все одно знадобиться мультидекс. просто додайте бібліотеки kotlin, пару служб google ( com.google.android.gms:play-services-*:*), служби Firebase, катастрофіку, gson, androidx (бібліотеки підтримки), перегляд карт, рециркулятор, android.material: material. НЕ МОЖЛИВО БЕЗ
МНОГО ДЕКСУ

Якесь тіло тут розумне! Точно так !, його багатопотокова помилка, помилка мультидекса є різною, і це може бути залежно від деяких залежностей. and @ user155, RUCHIR НЕ ВІДПОВІДАЄ ЗА ПРОБЛЕМУ ВАШИХ ЗАВДАНЬ! І мені подобаються капсули :)
Hossein

25

Додайте multiDexEnabled true у налаштуванняхConfig на рівні програми 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/… Будь ласка, допоможіть мені у цьому.
Naveen

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" Я думаю, що залп використовує старі сервіси Google Play, які не сумісні з послугами play:> 9.0
jai_b

3
Це було рішенням для мене. Проблема полягає в тому, що кілька сторонніх модулів посилаються на ігрові сервіси з різними версіями, тож як очікується, що ці версії будуть синхронізуватися постійно? Дуже дивна архітектурна деталь.
Ryan H.

1
Ви не повинні цим користуватися. Будь ласка, вибірково складіть ці бібліотеки. developers.google.com/android/guides/setup#split
OneCricketeer

14

Після оновлення до Android 3.4 я почав отримувати помилку, спробував усі вищевказані рішення.

Основною причиною проблеми було те, що оновлення Android Studio дозволило миттєвий запуск .

Отже, одне з рішень, яке ви можете спробувати, - це відключення миттєвого запуску, якщо його ввімкнено для вас, вирішено мою проблему.


1
У мене було те саме питання. Відключення миттєвого запуску та його включення знову працювало на мене.
Фог

1
Виправлена ​​моя проблема. Зверніть увагу - Миттєвий запуск корисний, тож сподіваюся, що незабаром буде кращий виправлення
SimonH

1
Aaaaarg, вони завжди включають це в оновлення, і це завжди викликає так багато проблем.
Олівер Діксон

1
Джип, це було причиною проблеми і для мене після введення Firebase в проект, відключення Instant Run нарешті дозволяє мені будувати його, дякую!
Starwave

1
Відключення миттєвого запуску працювало для мене з цією проблемою. Не отримали помилку знову.
Wesley франки

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: \ програмні файли \ Java \ jdk1.8.0_60 \ bin \ java.exe '' завершено з нульовим значенням виходу 1

Мені не пощастило застосувати всі налаштування та отримав успіх. Але коли я спробував знову налагодити проект. Цього разу я отримав три помилки (включаючи вище):

Помилка: Попередження 64-бітного сервера VM-сервера Java HotSpot (TM): CodeCache заповнений. Компілятор вимкнено.

і

Помилка: попередження 64-бітного сервера VM для сервера Java HotSpot (TM): Спробуйте збільшити розмір кеш-коду за допомогою -XX: ReservedCodeCacheSize =

Так що я зробив? Я просто заходжу в Android Studio:

Файл> Недійсний кеш / Перезапуск ..> Недійсний та перезапуск

Швидке виправлення!

Додаткова примітка:

Що я знайшов у Gradle Console:

: app: incrementalDebugTasks: app: prePackageMarkerForDebug: app: fastDeployDebugExtractor: app: generatorDebugInstantRunAppInfo: app: transformClassesWithDexForDebug Щоб запустити dex в процесі, демону Gradle потрібна більша купа. Наразі він має приблизно 910 Мб. Для швидшого побудови збільште максимальний розмір купи демона Gradle до більш ніж 2048 МБ. Для цього встановіть org.gradle.jvmargs = -Xmx2048M в проекті gradle.properties. Для отримання додаткової інформації див https://docs.gradle.org/current/userguide/build_environment.html : додаток: transformClassesWithDexForDebug FAILED

Детальніше про це читайте тут у блозі Oracle



8
  1. Видаліть файли jar у вашому градусі
  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
Те ж саме. Я вирішив проблему, замінивши компілювати 'com.google.android.gms: play-services: 10.2.0' компіляцією 'com.google.android.gms: play-services-location: 10.2.0'
Сухбір,

6

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


6

Sol 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 на справжнє спрацювало чудово.

    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 (Модуль: додаток) в залежності:

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

Ця лінія була причиною проблеми. Після зміни програми додаток знову працював належним чином


1
Не працює жодного іншого шансу>
Ajay Pandya

1
Змінивши його на що?
Ruchir Baronia

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. В одній бібліотеці у мене було 11.8.0, але в додатку, який споживає бібліотеку, я використовував 11.6.0, і ця різниця була причиною повідомлення про помилку.

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


2

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

1) додаток-> файл 'proguard-rules.pro'

-ignorewarnings

-keep class * {
    public private *;
}

2) А також додано у файл app -> 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'
}

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.