构建APK时出现错误 - app:transformClassesWithDexForDebug

4

我看了这里的许多帖子,但仍然没有找到有效的解决方案。

当我想要生成APK文件时,出现以下主要错误:

Error:Execution failed for task ':app:transformClassesWithDexForDebug'. com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: 使用主类com.android.dx.command.Main执行java进程时出错, 参数为{--dex --num-threads=4 --multi-dex --main-dex-list C:\Users\ratik\Desktop\BUILDBOX\VOLUNTEER\STUDIO\app\build\intermediates\multi-dex\debug\maindexlist.txt --output C:\Users\ratik\Desktop\BUILDBOX\VOLUNTEER\STUDIO\app\build\intermediates\transforms\dex\debug\folders\1000\1f\main C:\Users\ratik\Desktop\BUILDBOX\VOLUNTEER\STUDIO\app\build\intermediates\transforms\jarMerging\debug\jars\1\1f\combined.jar}

还有一些其他错误,但只有有时才会出现,其中一些如下:

Error: at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)

Error: at com.android.dx.command.dexer.Main.processFileBytes(Main.java:723)

Error: at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)

Error:java.lang.OutOfMemoryError: GC overhead limit exceeded

我尝试的方法:

在build.gradle中:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"

    defaultConfig {
        applicationId "com.biif.volunteer"
        minSdkVersion 14
        targetSdkVersion 25
        multiDexEnabled true

        ndk {
            moduleName "player_shared"
        }

    }

    buildTypes {
        release {
            minifyEnabled false
            shrinkResources false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }


    }
    sourceSets.main {
        jni.srcDirs = []// <-- disable automatic ndk-build call
    }
}

dependencies {
    compile ('com.google.android.gms:play-services:+'){exclude module: 'support-v4'}
    compile files('libs/dagger-1.2.2.jar')
    compile files('libs/javax.inject-1.jar')
    compile files('libs/nineoldandroids-2.4.0.jar')
    compile files('libs/support-v4-19.0.1.jar')
    compile ('com.android.support:multidex:1.0.1')
}

在清单文件中

android:name="android.support.multidex.MultiDexApplication"

此外,我关闭了即时运行(在这里的一个线程中看到)。

什么都没有帮助:( 有任何想法吗?感谢大家的帮助 :)


实施后: compile 'com.google.android.gms:play-services:10.2.1' 我遇到了错误:Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'。
com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: android/support/v4/text/TextUtilsCompat.class
- mousik
1个回答

6

我在项目中包含了 gradle.properties 文件:

org.gradle.jvmargs=-Xmx10248m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

并且它可以正常工作。


这很有帮助,不过我在这里找到了Reto Meier关于Dex in Process的好文章链接。以防需要更多关于此内容的信息和深入解释。 - Nsubuga
@jcmore2 聪明的回答。谢谢。 - Nirmalsinh Rathod

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接