Android- Kesalahan: Eksekusi gagal untuk tugas ': aplikasi: transformClassesWithDexForRelease'


191

Masalahnya adalah saya bisa menjalankan aplikasi saya ketika saya mengubah ke debugmode tetapi gagal ketika saya beralih ke releasemode.

Pengecualian:

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

Ketika saya menjalankan perintah build gradle dengan stacktrace maka inilah yang saya dapatkan

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

saya menggunakan

  • Android Studio 2.0 Beta 6
  • Versi Java: Java (TM) SE Runtime Environment (build 1.8.0_73-b02)
  • Versi Gradle: com.android.tools.build:gradle:.0.0-beta6
  • Dan saya telah mengaktifkan Multidex

File build.gradle saya

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'

}

Tampaknya saya bisa membuat rilis build saya berfungsi jika saya menghapusnya minifyEnabled true. Kenapa begitu, apakah ada cara lain untuk menyelesaikannya


bisakah Anda memposting file build.gradle aplikasi Anda?
Harisewak

@Harisewak saya telah memperbarui pertanyaan, Silakan lihat sekarang
Sheraz Ahmad Khilji

Ya @Sheraz Anda benar bahwa beralih minifyEnabled ke false menyelesaikan masalah. Saya membaca ini di doc: 'Anda harus mengaktifkan minifyEnabled untuk mengaktifkan penyusutan kode, dan kemudian shrinkResources untuk mengaktifkan penyusutan sumber daya. Jika Anda belum pernah menggunakan minifyEnabled, pastikan Anda mengaktifkannya sebelum juga menambahkan shrinkResources, karena Anda mungkin harus mengedit file proguard-rules.pro Anda untuk memastikan metode apa pun yang Anda akses dengan refleksi dll terdaftar sebagai aturan di dalamnya. file '( tools.android.com/tech-docs/new-build-system/resource-shrinking ). Lihat apakah ini masalahnya.
Harisewak

1
@Harisewak masih tidak menyelesaikan masalah jika saya menjalankan tugas dengan debug maka saya mendapatkan kesalahan iniUncaught 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

Saya memiliki masalah yang sama dengan proyek saya. Jika saya menggunakan com.android.tools.build:gradle:1.3.0, saya dapat mengkompilasi. Segera setelah saya menggunakan 2.0.0 itu memberi saya masalah yang sama
Santacrab

Jawaban:


185

saya memperbaikinya hanya kode ini.

properti lokal

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

dan Anda harus melakukan ini pada gradle

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

    multiDexEnabled true //important
}

4
"local.properties" apakah itu nama file atau nilai konfigurasi? Di mana (misalnya: di folder mana) ia berada di dalam proyek?
Ulysses Alves

1
File local.properties berjalan di level root proyek. jika Anda memiliki masalah tentang multiDex -> developer.android.com/studio/build/multidex.html
aemre

Saya baru saja memasukkan multiDexEnabled true di build.gradle saya dan keajaiban telah selesai Terima kasih.
Marcelo Gumiero

Saya tidak tahu apa artinya semua ini, tetapi itu berhasil untuk saya!
DaveNOTDavid

Pada API <21, multiDexEnabledtanpa memperpanjang Applicationkelas dari MultiDexApplicationakan mengarah ke NoClassDefFoundErrors.
Miha_x64

82

Jika Anda membuat multiDexEnabled = truekonfigurasi default aplikasi, Anda akan mendapatkan hasil yang diinginkan.

defaultConfig {
    minSdkVersion 14
    targetSdkVersion 22
    multiDexEnabled = true
}

Itu bukan satu-satunya langkah untuk memungkinkan Multidex. Dan Anda hanya membutuhkannya ketika Anda melihatnya DexException. developer.android.com/studio/build/multidex.html
OneCricketeer

45

Bagi saya, masalah itu diselesaikan setelah saya dihapus jarfile dari proyek saya. tampaknya salah satu jarfile di dalam proyek saya menggunakan versi yang lebih lama google play services.


masalah yang sama dengan jackrabbit-standalone-2.12.2.jar. Jika saya menambahkannya ke proyek maka masalah muncul.
Alexeev Valeriy

1
@MikeOx Saya memperbarui beberapa alat Android, dan sebagai hasilnya saya berakhir dengan dua versi beberapa file jar, misalnya mockable-android-24.jar dan mockable-android-25.jar. Menghapus yang lama memperbaiki kesalahan build ini untuk saya.
parvus

tetapi saya tidak menggunakan file jar lalu mengapa saya menghadapi masalah ini
Tn. Gila

15
Bisakah Anda memberikan penjelasan lebih rinci untuk solusi ini
Ivan Milisavljevic

@IvanMilisavljevic Anda dapat menggunakan Gradle sekarang, bukan file JAR. developers.google.com/android/guides/setup#split
OneCricketeer

39

Saya juga menerima kesalahan yang sama:

Kesalahan: Eksekusi gagal untuk tugas ': 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.ccess.Process: org.gradle.process.internal.ExecException: Proses 'perintah' C: \ Program Files \ Java \ jdk1.8.0_60 \ bin \ java.exe '' selesai dengan nilai keluar bukan nol 1

baik saya memperbaiki ini dengan bantuan langkah-langkah berikut:

  1. Buka build.gradle aplikasi Anda (bukan yang ada di root proyek) dan tambahkan:

    android {
    //snippet
    //add this into your existing 'android' block
    
        dexOptions {
        javaMaxHeapSize "4g"
        }
    
    //snip
    }
  2. Coba bangun lagi.

Catatan: 4g adalah 4 Gigabytes dan ini adalah ukuran heap maksimum untuk operasi dex.


Selamatkan hari saya! Bersulang!
devhermluna

Yang terbaik ... Saya sudah berkeliaran selama berjam-jam..terimakasih!
MbaiMburu

33

TIDAK PERLU MULTIDEX, SAYA ULANGI, TIDAK MEMBUTUHKAN UNTUK MULTIDEX


Izinkan saya menguraikan: Multidex pada dasarnya adalah alat yang dilengkapi dengan Android, dan jika Anda menyetelnya menjadi true, aplikasi dengan> 64.000 metode dapat dikompilasi menggunakan proses pembuatan yang sedikit diubah. Namun Anda hanya perlu menggunakan multidex jika kesalahan Anda terlihat seperti ini:

output penulisan masalah: Terlalu banyak referensi bidang: 131000; maks adalah 65536. Anda dapat mencoba menggunakan opsi --multi-dex.

atau seperti ini

Konversi ke format Dalvik gagal: Tidak dapat menjalankan dex: ID metode tidak dalam [0, 0xffff]: 65536

Tapi bukan itu masalahnya di sini! Masalahnya di sini (bagi saya setidaknya) disebabkan oleh dependensi file build.gradle Anda.

SOLUSI: Manfaatkan dependensi spesifik — jangan hanya mengimpor seluruh bagian dependensi!

Misalnya, jika Anda memerlukan ketergantungan Layanan Play untuk lokasi, hanya impor untuk lokasi.

MELAKUKAN:

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

JANGAN LAKUKAN:

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

Masalah lain yang dapat menyebabkan ini mungkin semacam perpustakaan eksternal yang Anda gunakan, yaitu referensi versi sebelumnya dari ketergantungan Anda. Ikuti langkah-langkah ini dalam hal ini:

  1. Pergi ke manajer SDK, dan instal pembaruan apa pun ke dependensi Anda
  2. Pastikan file build.gradle Anda menunjukkan versi terbaru. Untuk mendapatkan versi terbaru, gunakan tautan ini: https://developers.google.com/android/guides/setup
  3. Edit perpustakaan Anda (atau instal versi yang diperbarui jika ada), untuk referensi versi terbaru

Saya tahu pertanyaan ini sudah lama, tetapi saya perlu mendapatkan jawaban ini di luar sana, karena menggunakan multidex tanpa alasan berpotensi menyebabkan PPA untuk aplikasi Anda! HANYA gunakan multidex jika Anda yakin Anda membutuhkannya, dan Anda mengerti apa itu.

Saya sendiri menghabiskan waktu berjam-jam untuk mencoba menyelesaikan masalah ini tanpa multidex, dan saya hanya ingin membagikan temuan saya — semoga ini membantu


Cemerlang! Bekerja dengan sempurna!
stoefln

1
Bagaimana Anda tahu ketergantungan spesifik mana yang menyebabkan masalah? Saya telah menambahkan com.facebook.android:audience-network-sdk:4.+dan saya tidak dapat membangun sejak saat itu.
Ciberman

Kamu menyelamatkan hariku!
Rowan

1
jawaban yang bodoh. jika Anda memiliki banyak dependensi, Anda tetap membutuhkan multi dex. cukup tambahkan perpustakaan kotlin, beberapa layanan google ( com.google.android.gms:play-services-*:*), layanan firebase, crashlytics, gson, androidx (perpustakaan dukungan), cardview, recyclerview, android.material: material. TIDAK MUNGKIN TANPA MULTI DEX (Anda suka capslock? Saya tidak, jadi tolong jangan jawab pertanyaan seperti itu di lain waktu ...)
user155

Ada yang pintar di sini! Tepat !, bukan kesalahan multidex, kesalahan multidex berbeda, dan bisa dari beberapa dependensi. dan @ user155, RUCHIR TIDAK BERTANGGUNG JAWAB ATAS MASALAH PEMBELIAN ANDA! Dan saya suka capslocks :)
Hossein

25

Tambahkan multiDexEnabled true di Konfigurasi default Anda di tingkat aplikasi gradle.

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

24

Saya memiliki masalah serupa di aplikasi saya. Inilah yang saya lakukan.

1. tambahkan ini untuk build.gradle di module: app

multiDexEnabled = true

Jadi kodenya akan seperti:

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

Ini berhasil untuk saya. Semoga ini bisa membantu Anda juga :)

Dalam proyek yang sama saya juga menggunakan Firebase . Jadi memungkinkan multiDexEnabled membiarkan masalah lain di Firebase untuk perangkat Pre Lollipop . Beberapa kelas FireBase tidak diidentifikasi. ( Tidak dapat memperoleh penyedia com.google.firebase.provider ).
Metode untuk menyelesaikan yang dijelaskan di sini.


minifyEnable true memberi saya pengecualian - Di bawah ini adalah Pertanyaan saya, stackoverflow.com/questions/51720018/… Tolong bantu saya dengan ini.
Naveen

21

Saya mendapat kesalahan ini ketika meningkatkan layanan Google play ke 9.0 dari 7.5

Ada kesalahan dengan di bawah ini:

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

Ketika saya berubah menjadi

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

Tidak ada kesalahan. Coba ini


1
terima kasih saya telah mengubah versi untuk mengkompilasi 'com.google.android.gms: play-services: 8.4.0' saya pikir volley menggunakan beberapa layanan Google play lama yang tidak kompatibel dengan layanan play:> 9.0
jai_b

3
Ini solusi untuk saya. Masalahnya adalah bahwa beberapa modul pihak ketiga mereferensikan layanan bermain dengan versi yang berbeda jadi bagaimana diharapkan bahwa versi ini akan disinkronkan sepanjang waktu? Detail arsitektur yang sangat aneh.
Ryan H.

1
Anda seharusnya tidak menggunakan ini. Harap kompilasi pustaka tersebut secara selektif. developers.google.com/android/guides/setup#split
OneCricketeer

14

Setelah memperbarui ke Android 3.4, saya mulai mendapatkan kesalahan, mencoba semua solusi di atas.

Akar penyebab masalahnya adalah, memperbarui Android Studio mengaktifkan Instant Run .

Karenanya, salah satu solusi yang dapat Anda coba adalah Menonaktifkan Instant Run, jika itu diaktifkan untuk Anda, memperbaiki masalah saya.


1
Saya memiliki masalah yang sama. Menonaktifkan Instant Run dan mengaktifkannya kembali bekerja untuk saya.
Fogh

1
Atasi masalah saya juga. Pikiran Anda - Instant Run berguna jadi saya harap ada perbaikan yang lebih baik segera
SimonH

1
Aaaaarg mereka selalu mengaktifkan ini pada pembaruan dan selalu menyebabkan banyak masalah.
Oliver Dixon

1
Jep, ini adalah penyebab masalah bagi saya juga setelah memasukkan Firebase ke dalam proyek, menonaktifkan Instant Run akhirnya membuat saya membangunnya, terima kasih!
Starwave

1
Menonaktifkan menjalankan Instan berfungsi untuk saya dengan masalah ini. Tidak mendapatkan kesalahan lagi.
wesley franks

11

Yah, saya percaya pertanyaan itu dijawab dan diterima. Tetapi saya akan menulis apa yang saya hadapi dan bagaimana saya menyelesaikannya.

Saya juga menerima kesalahan yang sama:

Kesalahan: Eksekusi gagal untuk tugas ': 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.ccess.Process: org.gradle.process.internal.ExecException: Proses 'perintah' C: \ Program Files \ Java \ jdk1.8.0_60 \ bin \ java.exe '' selesai dengan nilai keluar bukan nol 1

Saya tidak beruntung menerapkan semua pengaturan dan mendapatkan kesuksesan. Tetapi ketika saya mencoba untuk debug proyek lagi. Kali ini saya mendapat Tiga Kesalahan (termasuk di atas):

Kesalahan: Java HotSpot (TM) 64-Bit Server VM peringatan: CodeCache penuh. Kompiler telah dinonaktifkan.

dan

Kesalahan: Peringatan Java HotSpot (TM) 64-Bit Server VM: Coba tambah ukuran cache kode menggunakan -XX: ReservedCodeCacheSize =

Jadi apa yang saya lakukan? Saya hanya pergi ke Android Studio:

File> Cache / Restart Tidak Valid ..> Valid & Restart

Perbaiki Cepat!

Catatan ekstra:

Apa yang saya temukan di Gradle Console:

: app: incrementalDebugTasks: app: prePackageMarkerForDebug: app: fastDeployDebugExtractor: app: generateDebugInstantRunAppInfo: app: transformClassesWithDexForDebug Untuk menjalankan dex dalam proses, daemon Gradle membutuhkan tumpukan yang lebih besar. Saat ini memiliki sekitar 910 MB. Untuk build yang lebih cepat, tambah ukuran heap maksimum untuk daemon Gradle hingga lebih dari 2048 MB. Untuk melakukan ini, atur org.gradle.jvmargs = -Xmx2048M di project gradle.properties. Untuk informasi lebih lanjut, lihat https://docs.gradle.org/current/userguide/build_environment.html : app: transformClassesWithDexForDebug GAGAL

Baca Lebih Lanjut di sini di Oracle Blog


9

Saya baru saja menulis kode ini ke dalam gradle.properties dan tidak apa-apa sekarang

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

8
  1. Hapus file jar di gradle Anda
  2. Sinkronkan
  3. Salin tabung itu dan sinkronkan

Ini berhasil untuk saya.


Bisakah Anda lebih spesifik file jar yang mana? Apakah ini file jar di dalam proyek kami gradle/wrapper?
HendraWD

4
Tidak tahu ada apa dengan orang yang menyebut "toples". Itu tidak menjelaskan apa pun.
Lacak

7

Itu bekerja untuk saya hanya menggunakan layanan tertentu.

Misalnya alih-alih digunakan:

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

Saya menggunakan:

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


1
Sama disini. Saya memecahkan masalah dengan mengganti kompilasi 'com.google.android.gms: play-services: 10.2.0' dengan kompilasi 'com.google.android.gms: play-services-location: 10.2.0'
Sukhbir

6

Saya tahu ini pertanyaan lama, tapi tetap saja. Setiap kali ini terjadi pada saya, itu karena saya sudah memasukkan semua perpustakaan layanan bermain. Cukup ubah play-service: xxx ke play-service-: xxx di file build.gradle (module)


6

Sol 1: Dalam build.gradle:

defaultConfig {
    multiDexEnabled true
}

Bersihkan proyek Anda dan bangun kembali.

Sol 2: di local.propertiestambahkan,

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

Sol 3

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

Lain-lain tambahkan semua 3 di aplikasi Anda.


5

hanya mengatur multiDexEnabled ke true berfungsi dengan baik.

    defaultConfig 
    {
        multiDexEnabled true     
    }

3

Saya telah memperbarui jdk ke 1.8.0_74, Android-studio ke 2.1 pratinjau 1 dan menambahkan ke file Aplikasi

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

2

Saya memiliki masalah yang sama. Suatu hari program itu bekerja dengan sempurna, dan yang berikut tidak. Saya memeriksa Github perubahan yang saya buat. Bagi saya masalahnya ada di build.gradle (Module: app) di dependensi:

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

Baris inilah yang menyebabkan masalah. Setelah mengubahnya aplikasi berjalan dengan benar lagi


1
Tidak Bekerja Kesempatan Lain>
Ajay Pandya

1
Mengubahnya menjadi apa?
Ruchir Baronia

1
Saya menghapusnya (saya sedang memeriksanya sekarang) dan terus bekerja
Sara Alberola

2

tambahkan baris ini di build.gradle

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

4
"Baris" mana yang Anda tambahkan di sini?
OneCricketeer

2

Dalam DefaultConfig Tambahkan multiDexEnabled = true

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

2

Jadi, milik saya tidak terselesaikan dengan menambahkan flag multiDexEnabled. Sebenarnya ada di sana sebelum mendapatkan pesan kesalahan.

Apa yang menyelesaikan kesalahan untuk saya adalah memastikan saya menggunakan versi yang sama dari semua perpustakaan layanan bermain. Di satu perpustakaan saya punya 11.8.0 tetapi di aplikasi yang mengkonsumsi perpustakaan saya menggunakan 11.6.0 dan perbedaan itulah yang menyebabkan pesan kesalahan.

Jadi, alih-alih mengubah pustaka Anda ke versi tertentu seperti jawaban sebelumnya, mungkin Anda ingin memeriksa Anda menggunakan versi yang sama di seluruh karena pencampuran versi secara eksplisit dihambat oleh Android Studio oleh peringatan.


2

Setelah banyak usaha saya hanya menambahkan kredensial di bawah ini dan saya berhasil

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

-ignorewarnings

-keep class * {
    public private *;
}

2) Dan juga ditambahkan dalam aplikasi -> file 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

Secara default, Android Studio memiliki ukuran heap maksimum 1280MB. Jika Anda mengerjakan proyek besar, atau sistem Anda memiliki banyak RAM, Anda dapat meningkatkan kinerja dengan meningkatkan ukuran tumpukan maksimum untuk proses Android Studio, seperti IDE inti, daemon Gradle, dan daemon Kotlin.

Jika Anda menggunakan sistem 64-bit yang memiliki setidaknya 5 GB RAM, Anda juga dapat menyesuaikan ukuran tumpukan untuk proyek Anda secara manual. Untuk melakukannya, ikuti langkah-langkah ini:

Klik File> Pengaturan dari bilah menu (atau Android Studio> Preferensi pada macOS). Klik Penampilan & Perilaku> Pengaturan Sistem> Pengaturan Memori.

Untuk Info lebih lanjut klik

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

masukkan deskripsi gambar di sini


1

Cukup Ubah layanan google play secara gradle (aplikasi modul) dari 9.xx ke versi 8.4.0 yang lebih baik bagi saya


Ini adalah tanda bahwa semua versi Layanan Google Play lain yang Anda gunakan tidak cocok.
OneCricketeer


1

Jika Anda menghadapi masalah setelah memperbarui layanan google play 9.8.0 tambahkan ini ke dependensi Anda:

`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

Ini terjadi pada saya bahkan pada debug build dan baru saja membersihkan semua level modul dan folder build level proyek dan itu berhasil, ya begitu saja.


Bekerja untukku barusan.
WillC

1

Bagi mereka yang masih menggunakan VS-TACO dan memiliki masalah ini. Ini terjadi karena ketidakkonsistenan versi file jar.

Anda masih perlu menambahkan koreksi ke build.gradlefile di platforms\androidfolder:

 defaultConfig {
        multiDexEnabled true 
 }

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

Lebih baik melakukannya dalam build-extras.gradlefile (yang secara otomatis ditautkan ke file build.gradle) dengan semua perubahan Anda jika ada, dan hapus semua dalam platforms/androidfolder, tetapi tinggalkan hanya build-extras.gradlefile di sana . Lalu kompilasi saja.


1

Tidak satu pun dari jawaban ini yang berhasil untuk saya. Saya menggunakan Android studio 3.4.1.

Saya bisa membangun proyek tetapi Android studio menunjukkan kesalahan ini ketika saya akan menyebarkannya ke perangkat seluler. Ternyata itu adalah kesalahan "menjalankan instan".

Ikuti jawaban ini: https://stackoverflow.com/a/42695197/3197467


0

Saya benar-benar tidak tahu bagaimana tetapi bug hilang setelah saya melakukan semua ini:

1

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

Dan tambahkan

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

Perbarui git, jdk, ubah lokasi JDK dalam struktur Proyek

3

Hapus folder build di Proyek saya

4

Bersihkan dan bangun kembali Proyek

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.