Android- Lỗi: Thực thi không thành công cho nhiệm vụ ': app: TransformClassWithDexForRelease'


191

Vấn đề là tôi có thể chạy ứng dụng của mình khi tôi chuyển sang debugchế độ nhưng nó không thành công khi tôi chuyển sang releasechế độ.

Ngoại lệ:

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

Khi tôi chạy lệnh xây dựng gradle với stacktrace thì đây là những gì tôi nhận được

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

tôi đang dùng

  • Android Studio 2.0 Beta 6
  • Phiên bản Java: Java (TM) Môi trường thời gian chạy SE (bản dựng 1.8.0_73-b02)
  • Phiên bản lớp: com.android.tools.build:gradle:2.0.0-beta6
  • Và tôi đã kích hoạt Multidex

Tập tin build.gradle của tôi

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'

}

Có vẻ như tôi có thể làm cho bản phát hành của tôi hoạt động nếu tôi gỡ bỏ minifyEnabled truenó. Tại sao vậy, có cách nào khác để giải quyết nó


bạn có thể đăng tập tin build.gradle của ứng dụng không?
Harisewak

@Harisewak tôi đã cập nhật câu hỏi, xin hãy xem ngay bây giờ
Sheraz Ahmad Khilji

Có @Sheraz, bạn đã đúng khi chuyển minifyEnables sang false giải quyết vấn đề. Tôi đã đọc điều này trong doc: 'bạn phải kích hoạt minifyEnables để bật thu hẹp mã, sau đó thu nhỏ nguồn để bật thu hẹp tài nguyên. Nếu bạn chưa sử dụng minifyEnables, hãy đảm bảo rằng bạn đã làm việc đó trước khi thêm thu nhỏ, vì bạn có thể phải chỉnh sửa tệp proguard-rules.pro của mình để đảm bảo mọi phương thức bạn truy cập bằng phản xạ, v.v. tập tin '( tools.android.com/tech-docs/new-build-system/resource-shrinking ). Xem nếu đây là trường hợp.
Harisewak

1
@Harisewak nó vẫn không giải quyết được vấn đề nếu tôi chạy tác vụ với gỡ lỗi thì tôi gặp lỗi nàyUncaught translation error: com.android.dx.cf.code.SimException: com.android.dx.rop.cst.CstMethodRef cannot be cast to com.android.dx.rop.cst.CstInterfaceMethodRef
Sheraz Ahmad Khilji

Tôi có cùng một vấn đề với dự án của tôi. Nếu tôi sử dụng com.android.tools.build:gradle:1.3.0, tôi có thể biên dịch. Ngay khi tôi sử dụng 2.0.0, nó cũng gây ra vấn đề tương tự
Santacrab

Câu trả lời:


185

tôi đã sửa nó chỉ mã này.

địa phương

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

và bạn nên làm điều này thay đổi trên lớp

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

    multiDexEnabled true //important
}

4
"local.properIES" là tên tệp hoặc giá trị cấu hình? Trường hợp (ví dụ: trong thư mục nào) nằm trong dự án?
Ulysses Alves

1
Tệp local.properIES đi ở cấp gốc của dự án. nếu bạn gặp vấn đề về multiDex -> developer.android.com/studio/build/multidex.html
aemre

Tôi vừa chèn multiDexEnables true vào build.gradle của tôi và điều kỳ diệu đã được thực hiện. Cảm ơn bạn.
Marcelo Gumiero

Tôi không biết tất cả những điều này có nghĩa là gì, nhưng nó hiệu quả với tôi!
DaveNOTDavid

Trên API <21, multiDexEnabledkhông mở rộng Applicationlớp từ MultiDexApplicationsẽ dẫn đến NoClassDefFoundErrors.
Miha_x64

82

Nếu bạn thực hiện multiDexEnabled = truetrong defaultConfig của ứng dụng, bạn sẽ nhận được kết quả mong muốn.

defaultConfig {
    minSdkVersion 14
    targetSdkVersion 22
    multiDexEnabled = true
}

Đó không phải là bước duy nhất để cho phép Multidex. Và bạn chỉ cần nó khi bạn nhìn thấy một DexException, dù sao. developer.android.com/studio/build/multidex.html
OneCricketeer

45

Đối với tôi, vấn đề đã được giải quyết sau khi tôi xóa jartệp khỏi dự án của mình. có vẻ như một trong các jartệp trong dự án của tôi đã sử dụng phiên bản cũ hơn google play services.


cùng một vấn đề với jackrabbit-độc lập-2.12.2.jar. Nếu tôi thêm nó vào dự án thì vấn đề sẽ tăng lên.
Alexeev Valeriy

1
@MikeOx Tôi đã cập nhật một số công cụ Android và kết quả là tôi đã kết thúc với hai phiên bản của một vài tệp jar, ví dụ: mockable-android-24.jar và mockable-android-25.jar. Loại bỏ những cái cũ đã sửa những lỗi xây dựng này cho tôi.
parvus

nhưng tôi không sử dụng bất kỳ tập tin jar nào thì tại sao tôi lại phải đối mặt với vấn đề này
Ông Mad

15
Bạn có thể vui lòng cung cấp thêm chi tiết giải thích cho giải pháp này
Ivan Milisavljevic

@IvanMilisavljevic Bạn có thể sử dụng Gradle ngay bây giờ, không phải các tệp JAR. developers.google.com/android/guides/setup#split
OneCricketeer

39

Tôi cũng đã nhận được lỗi tương tự:

Lỗi: Thực thi không thành công cho nhiệm vụ ': app: TransformClassWithDexForDebug'. com.android.build.api.transform.TransformException: java.lang. tổ chức

Tôi đã sửa lỗi này với sự giúp đỡ của các bước sau:

  1. Mở build.gradle của ứng dụng của bạn (không phải ứng dụng trong thư mục gốc của dự án) và thêm:

    android {
    //snippet
    //add this into your existing 'android' block
    
        dexOptions {
        javaMaxHeapSize "4g"
        }
    
    //snip
    }
  2. Hãy thử xây dựng lại.

Lưu ý: 4g là 4 Gigabyte và đây là kích thước heap tối đa cho hoạt động của dex.


Cứu ngày của tôi! Chúc mừng!
devhermluna

Điều tốt nhất ... Tôi đã đi lang thang trong nhiều giờ..cảm ơn!
M BạchMburu

33

KHÔNG CẦN CHO MULTIDEX, TÔI REPEAT, KHÔNG ĐƯỢC YÊU CẦU CHO MULTIDEX


Để tôi giải thích: Multidex về cơ bản là một công cụ đi kèm với Android và nếu bạn đặt nó thành đúng, các ứng dụng có> 64.000 phương thức có thể biên dịch bằng quy trình xây dựng thay đổi một chút. Tuy nhiên, bạn chỉ cần sử dụng multidex nếu lỗi của bạn trông như thế này:

sự cố viết đầu ra: Quá nhiều tài liệu tham khảo trường: 131000; tối đa là 65536. Bạn có thể thử sử dụng tùy chọn --multi-dex.

hoặc như thế này

Chuyển đổi sang định dạng Dalvik không thành công: Không thể thực thi dex: ID phương thức không ở [0, 0xffff]: 65536

Nhưng đó không phải là trường hợp ở đây! Vấn đề ở đây (đối với tôi ít nhất) đang được gây ra bởi sự phụ thuộc của tệp build.gradle của bạn.

GIẢI PHÁP: Sử dụng các phụ thuộc cụ thể, không chỉ nhập toàn bộ phần phụ thuộc!

Ví dụ: nếu bạn cần phụ thuộc Dịch vụ Play cho vị trí, chỉ nhập nó cho vị trí.

LÀM:

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

KHÔNG:

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

Một vấn đề khác có thể gây ra điều này có thể là một loại thư viện bên ngoài bạn đang sử dụng, đó là tham chiếu phiên bản trước của sự phụ thuộc của bạn. Thực hiện theo các bước sau trong trường hợp đó:

  1. Chuyển đến trình quản lý SDK và cài đặt mọi bản cập nhật cho các phụ thuộc của bạn
  2. Đảm bảo rằng tệp build.gradle của bạn hiển thị phiên bản mới nhất. Để có phiên bản mới nhất, hãy sử dụng liên kết này: https://developers.google.com/android/guides/setup
  3. Chỉnh sửa thư viện của bạn (hoặc cài đặt phiên bản cập nhật nếu có), để tham khảo phiên bản mới nhất

Tôi biết câu hỏi này đã cũ, nhưng tôi cần phải có câu trả lời này, vì sử dụng multidex mà không có lý do nào có thể gây ra ANR cho ứng dụng của bạn! CHỈ sử dụng multidex nếu bạn chắc chắn rằng bạn cần nó và bạn hiểu nó là gì.

Bản thân tôi đã dành hàng giờ cố gắng để giải quyết vấn đề này mà không cần multidex, và tôi chỉ muốn chia sẻ những phát hiện của mình. Hy vọng điều này sẽ giúp


Xuất sắc! Hoạt động hoàn hảo!
stoefln

1
Làm thế nào để bạn biết phụ thuộc cụ thể gây ra vấn đề? Tôi đã thêm com.facebook.android:audience-network-sdk:4.+và tôi không thể xây dựng kể từ đó.
Ciberman

Bạn đã cứu ngày của tôi!
Rowan

1
như một câu trả lời ngu ngốc nếu bạn có nhiều phụ thuộc, bạn sẽ cần multi dex. chỉ cần thêm thư viện kotlin, một vài dịch vụ của google (com.google.android.gms:play-services-*:* ), dịch vụ firebase, crashlytics, gson, androidx (thư viện hỗ trợ), cardview, recyclerview, android.m Liệu: liệu. NÓ KHÔNG CÓ
KHẢ NĂNG

Một số cơ thể là thông minh ở đây! Chính xác!, Nó không phải lỗi multidex, lỗi multidex là khác nhau, và nó có thể là từ một số phụ thuộc. và @ user155, Ruchir LÀ KHÔNG CHỊU TRÁCH NHIỆM CHO PHỤ THUỘC vấn đề của bạn và tôi như capslocks :)!
Hossein

25

Thêm multiDexEnabled true trong defaultConfig của bạn ở cấp ứng dụng gradle.

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

24

Tôi đã có vấn đề tương tự trong ứng dụng của tôi. Đây là những gì tôi đã làm.

1. thêm cái này cho build.gradle trong module: app

multiDexEnabled = true

Vì vậy, mã sẽ như sau:

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

Điều này làm việc cho tôi. Hy vọng điều này cũng giúp bạn :)

Trong cùng một dự án tôi cũng đang sử dụng Firebase . Vì vậy, việc kích hoạt multiDexEnables cho phép một vấn đề khác trong Firebase cho các thiết bị Pre Lollipop . Một số lớp FireBase không được xác định. ( Không thể nhận nhà cung cấp com.google.firebase.provider ).
Phương pháp để giải quyết được giải thích ở đây.


minifyEnable true cung cấp cho tôi ngoại lệ - Dưới đây là Câu hỏi của tôi, stackoverflow.com/questions/51720018/ đá Hãy giúp tôi với điều này.
Naveen

21

Tôi đã gặp lỗi này khi nâng cấp dịch vụ Google play lên 9.0 từ 7.5

Có lỗi với bên dưới:

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

Khi tôi đổi thành

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

Không có lỗi. Thử cái này


1
cảm ơn tôi đã thay đổi phiên bản để biên dịch 'com.google.android.gms: play-services: 8.4.0' tôi nghĩ rằng bóng chuyền sử dụng một số dịch vụ chơi cũ của Google không tương thích với dịch vụ chơi:> 9.0
jai_b

3
Đây là giải pháp cho tôi. Vấn đề là một số mô-đun của bên thứ ba tham chiếu các dịch vụ chơi với các phiên bản khác nhau, vậy làm thế nào để các phiên bản này được đồng bộ hóa mọi lúc? Chi tiết kiến ​​trúc rất kỳ lạ.
Ryan H.

1
Bạn không nên sử dụng này. Vui lòng chọn lọc biên dịch các thư viện. developers.google.com/android/guides/setup#split
OneCricketeer

13

Sau khi cập nhật lên Android 3.4, tôi bắt đầu gặp lỗi, đã thử tất cả các giải pháp trên.

Nguyên nhân cốt lõi của vấn đề là, cập nhật Android Studio đã kích hoạt Instant Run .

Do đó, một trong những giải pháp bạn có thể thử là Vô hiệu hóa Instant Run, nếu nó được kích hoạt cho bạn, đã khắc phục vấn đề của tôi.


1
Tôi gặp vấn đề tương tự. Vô hiệu hóa Instant Run và cho phép nó hoạt động trở lại với tôi.
Fogh

1
Đã sửa vấn đề của tôi quá. Hãy nhớ rằng - Instant Run rất hữu ích vì vậy tôi hy vọng sẽ sớm khắc phục tốt hơn
SimonH

1
Tuy nhiên, họ luôn kích hoạt tính năng này trên bản cập nhật và nó luôn gây ra rất nhiều vấn đề.
Oliver Dixon

1
Jep, đây cũng là nguyên nhân gây ra sự cố cho tôi sau khi đưa Firebase vào dự án, vô hiệu hóa Instant Run cuối cùng cũng cho phép tôi xây dựng nó, cảm ơn!
Starwave

1
Vô hiệu hóa chạy ngay lập tức làm việc cho tôi với vấn đề này. Không nhận được lỗi một lần nữa.
wesley franks

11

Vâng, tôi tin rằng câu hỏi đã được trả lời và được chấp nhận. Nhưng tôi sẽ viết những gì tôi phải đối mặt và cách tôi giải quyết nó.

Tôi cũng đã nhận được lỗi tương tự:

Lỗi: Thực thi không thành công cho nhiệm vụ ': app: TransformClassWithDexForDebug'. com.android.build.api.transform.TransformException: java.lang. tổ chức

Tôi đã không may mắn khi áp dụng tất cả các cài đặt và đã thành công. Nhưng khi tôi cố gắng gỡ lỗi dự án một lần nữa. Lần này tôi nhận được Ba Lỗi (bao gồm cả ở trên):

Lỗi: Cảnh báo máy chủ 64-bit Java HotSpot (TM): CodeCache đã đầy. Trình biên dịch đã bị vô hiệu hóa.

Lỗi: Cảnh báo máy chủ 64-bit Java HotSpot (TM): Thử tăng kích thước bộ đệm mã bằng cách sử dụng -XX: ReservedCodeCacheSize =

Vậy tôi đã làm gì? Tôi chỉ đến Android Studio:

Tệp> Bộ nhớ cache không hợp lệ / Khởi động lại ..> Không hợp lệ & Khởi động lại

Khắc phục nhanh!

Ghi chú thêm:

Những gì tôi tìm thấy trong Bảng điều khiển Gradle:

: app: augementalDebugT task: app: prePackageMarkerForDebug: app: fastDeployDebugExtractor: app: createdDebugInstantRunAppInfo: app: TransformClassWithDexForDebug Để chạy dex trong tiến trình, cấp độ lớn hơn. Nó hiện có khoảng 910 MB. Để xây dựng nhanh hơn, hãy tăng kích thước heap tối đa cho daemon Gradle lên hơn 2048 MB. Để thực hiện điều này, hãy đặt org.gradle.jvmargs = -Xmx2048M trong gradle.properies của dự án. Để biết thêm thông tin, hãy xem https://docs.gradle.org/civerse/userguide/build_en môi.html : app: TransformClassWithDexForDebug FAILED

Đọc thêm về nó ở đây trên Blog của Oracle


9

Tôi vừa viết mã này vào gradle.properies và bây giờ nó ổn

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

8
  1. Xóa các tệp jar trong lớp của bạn
  2. Đồng bộ hóa nó
  3. Sao chép bình đó và đồng bộ hóa nó

Điều này làm việc cho tôi.


Bạn có thể cụ thể hơn các tập tin jar? Có phải các tập tin jar trong dự án của chúng tôi gradle/wrapper?
HendraWD

4
Không biết nó là gì khi mọi người nhắc đến "cái lọ". Điều đó không giải thích bất cứ điều gì.
Truy tìm

7

Nó làm việc với tôi chỉ bằng cách sử dụng một dịch vụ cụ thể.

Ví dụ thay vì sử dụng:

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

Tôi đã sử dụng:

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


1
Tương tự ở đây. Tôi đã giải quyết vấn đề bằng cách thay thế biên dịch 'com.google.android.gms: play-services: 10.2.0' bằng biên dịch 'com.google.android.gms: play-services-location: 10.2.0'
Sukhbir

6

Tôi biết đó là một chút của một câu hỏi cũ, nhưng vẫn còn. Mỗi khi điều này xảy ra với tôi, đó là vì tôi đã bao gồm tất cả các thư viện dịch vụ chơi. Chỉ cần thay đổi dịch vụ phát: xxx thành play-service-: xxx trong tệp build.gradle (mô-đun)


6

Sol 1: Trong build.gradle:

defaultConfig {
    multiDexEnabled true
}

Làm sạch dự án của bạn và xây dựng lại.

Sol 2: trong local.propertiesadd,

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

Sol 3

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

Khác thêm cả 3 trong ứng dụng của bạn.


5

chỉ cần đặt multiDexEnables thành đúng hoạt động tốt.

    defaultConfig 
    {
        multiDexEnabled true     
    }

3

Tôi đã cập nhật jdk lên 1.8.0_74, Android-studio lên 2.1 xem trước 1 và thêm vào tệp Ứng dụng

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

2

Tôi đã từng gặp vấn đề tương tự. Một ngày nọ, chương trình đã hoạt động hoàn hảo, và sau đó thì không. Tôi đã kiểm tra trên Github những thay đổi tôi đã thực hiện. Đối với tôi, vấn đề là ở build.gradle (Module: ứng dụng) trong phần phụ thuộc:

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

Dòng này là một trong những nguyên nhân gây ra vấn đề. Sau khi thay đổi, ứng dụng đã chạy lại


1
Không làm việc bất kỳ cơ hội nào khác>
Ajay Pandya

1
Thay đổi nó thành gì?
Ruchir Baronia

1
Tôi đã xóa nó (tôi đang kiểm tra nó ngay bây giờ) và nó vẫn hoạt động
Sara Alberola

2

thêm dòng này vào build.gradle

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

4
"Dòng" nào bạn đã thêm vào đây?
OneCricketeer

2

Trong DefaultConfig Thêm multiDexEnables = true

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

2

Vì vậy, tôi đã không được giải quyết bằng cách thêm cờ multiDexEnables. Nó thực sự đã ở đó trước khi nhận được thông báo lỗi.

Điều đã giải quyết lỗi cho tôi là đảm bảo rằng tôi đang sử dụng cùng một phiên bản của tất cả các thư viện dịch vụ chơi. Trong một thư viện tôi có 11.8.0 nhưng trong ứng dụng tiêu thụ thư viện tôi đã sử dụng 11.6.0 và sự khác biệt đó là nguyên nhân gây ra thông báo lỗi.

Vì vậy, thay vì thay đổi thư viện của bạn thành một phiên bản cụ thể như các câu trả lời trước đó, có thể bạn muốn kiểm tra xem bạn có đang sử dụng cùng một phiên bản hay không vì các phiên bản trộn được Android Studio khuyến khích rõ ràng.


2

Sau rất nhiều nỗ lực tôi chỉ cần thêm vào dưới thông tin và tôi đã thành công

1) tập tin ứng dụng-> 'proguard-rules.pro'

-ignorewarnings

-keep class * {
    public private *;
}

2) Và cũng được thêm vào trong ứng dụng -> tệp 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

Theo mặc định, Android Studio có kích thước heap tối đa là 1280MB. Nếu bạn đang làm việc trong một dự án lớn hoặc hệ thống của bạn có nhiều RAM, bạn có thể cải thiện hiệu suất bằng cách tăng kích thước heap tối đa cho các quy trình Android Studio, chẳng hạn như IDE lõi, daemon Gradle và daemon Kotlin.

Nếu bạn sử dụng hệ thống 64 bit có ít nhất 5 GB RAM, bạn cũng có thể điều chỉnh kích thước heap cho dự án của mình theo cách thủ công. Để làm đươc như vậy, hãy tuân theo những bước sau:

Bấm vào Tệp> Cài đặt từ thanh menu (hoặc Android Studio> Tùy chọn trên macOS). Nhấp vào Giao diện & Hành vi> Cài đặt hệ thống> Cài đặt bộ nhớ.

Để biết thêm thông tin bấm vào

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

nhập mô tả hình ảnh ở đây


1

Chỉ cần thay đổi dịch vụ google play theo lớp (ứng dụng mô-đun) từ 9.xx sang phiên bản thấp hơn 8.4.0 là phù hợp với tôi


Đây là dấu hiệu cho thấy tất cả các phiên bản Dịch vụ Google Play khác mà bạn sử dụng không khớp.
OneCricketeer


1

Nếu bạn đang gặp vấn đề sau khi cập nhật dịch vụ google play 9.8.0, hãy thêm điều này vào phần phụ thuộc của bạn:

`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

Điều này đã xảy ra với tôi ngay cả trên các bản dựng gỡ lỗi và chỉ xóa tất cả các thư mục xây dựng cấp độ mô-đun và cấp độ dự án và nó đã hoạt động, vâng như vậy.


Làm việc cho tôi ngay bây giờ.
WillC

1

Đối với những người vẫn sử dụng VS-TACO và có vấn đề này. Điều này xảy ra do sự không nhất quán phiên bản của một tệp jar.

Bạn vẫn cần thêm chỉnh sửa vào build.gradletệp trong platforms\androidthư mục:

 defaultConfig {
        multiDexEnabled true 
 }

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

Tốt hơn là nên thực hiện trong build-extras.gradletệp (tự động được liên kết với tệp build.gradle) với tất cả các thay đổi khác của bạn nếu có và xóa tất cả trong platforms/androidthư mục, nhưng chỉ để lại build-extras.gradletệp. Sau đó chỉ cần biên dịch.


1

Không có câu trả lời nào trong số này làm việc cho tôi. Tôi đang sử dụng Android studio 3.4.1.

Tôi đã có thể xây dựng dự án nhưng studio Android cho thấy lỗi này khi tôi sẽ triển khai nó lên thiết bị di động. Hóa ra đó là lỗi "chạy ngay lập tức".

Thực hiện theo câu trả lời sau: https://stackoverflow.com/a/42695197/3197467


0

Tôi thực sự không biết làm thế nào nhưng lỗi đã biến mất sau khi tôi thực hiện tất cả điều này:

1

xóa bỏ implementation 'com.google.android.gms:play-services:12.0.1'

Và thêm

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

Cập nhật git, jdk, thay đổi vị trí JDK trong cấu trúc Dự án

3

Xóa thư mục xây dựng trong Dự án của tôi

4

Làm sạch và xây dựng lại Dự án

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.