我得到执行异常和大堆错误

Posted

技术标签:

【中文标题】我得到执行异常和大堆错误【英文标题】:i get executionexception and large heap error 【发布时间】:2017-08-01 16:19:10 【问题描述】:

要加快构建速度,请将 Gradle 守护程序的最大堆大小增加到 3072 MB 以上。

要在进程中运行 dex,Gradle 守护进程需要更大的堆。

为此,请在项目 gradle.properties 中设置 org.gradle.jvmargs=-Xmx3072M。 它目前大约有 989 MB。

更多信息请见https://docs.gradle.org/current/userguide/build_environment.html 错误:任务 ':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: Process 'command 'C:\Program Files\Java\jdk1.8.0_102\bin\java.exe'' 以非零退出值 1 结束 :app:transformClassesWithDexForDebug 失败

build.gradle

apply plugin: 'com.android.application'

android 
    compileSdkVersion 24
    buildToolsVersion "24.0.2"

    defaultConfig 
        applicationId "videoplayer.avkinfosoft.com.videoplayer"
        minSdkVersion 11
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
        multiDexEnabled  true
    
    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
    
    dexOptions 
        javaMaxHeapSize "2g"
    
    packagingOptions
            
                pickFirst 'META-INF/license.txt'
                exclude 'META-INF/DEPENDENCIES'
                exclude 'META-INF/NOTICE'
                exclude 'META-INF/LICENSE'
                exclude 'META-INF/LICENSE.txt'
                exclude 'META-INF/NOTICE.txt'
            
    productFlavors 
    


dependencies 
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.2.1'
    compile 'com.android.support:design:24.2.1'
    compile 'com.android.support:support-v4:24.2.1'
    compile 'com.google.firebase:firebase-ads:9.4.0'

gradle.propties

项目范围的 Gradle 设置。

IDE(例如 Android Studio)用户: 通过 IDE 配置的 Gradle 设置将覆盖 此文件中指定的任何设置。

有关如何配置构建环境的更多详细信息,请访问 http://www.gradle.org/docs/current/userguide/build_environment.html

指定用于守护进程的 JVM 参数。 该设置对于调整内存设置特别有用。 默认值:-Xmx10248m -XX:MaxPermSize=256m org.gradle.jvmargs=-Xmx1024m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

配置后,Gradle 将以孵化并行模式运行。 此选项应仅用于解耦项目。更多详情,请访问 http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects org.gradle.parallel=true

org.gradle.jvmargs=-Xmx1024m

org.gradle.daemon=true

配置后,Gradle 将以孵化并行模式运行。 此选项应仅用于解耦项目。更多详情,请访问

http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects org.gradle.parallel=true

org.gradle.configureondemand=true

manifest.xml

<application
    android:allowBackup="true"
    android:icon="@drawable/logo"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:theme="@style/AppTheme"
    tools:replace="android:theme,android:icon">

修改后出错

    dexOptions 
        javaMaxHeapSize "2g"
    

错误:错误:发生了致命异常。程序将退出。

错误:错误:发生了致命异常。程序将退出。

错误:错误:发生了致命异常。程序将退出。

错误:错误:无法创建 Java 虚拟机。

错误:错误:无法创建 Java 虚拟机。

错误:最大堆大小无效:-Xmx4g

错误:指定的大小超过了最大可表示大小。

欲了解更多信息,请参阅https://docs.gradle.org/current/userguide/build_environment.html

错误:任务 ':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: Process 'command 'C:\Program

Files\Java\jdk1.8.0_102\bin\java.exe'' 以非零退出值 1 结束

错误:错误:发生了致命异常。程序将退出。

错误:指定的大小超过了最大可表示大小。

错误:最大堆大小无效:-Xmx4g

错误:错误:无法创建 Java 虚拟机。

错误:指定的大小超过了最大可表示大小。

错误:最大堆大小无效:-Xmx4g

为此在项目 gradle.properties 中设置 org.gradle.jvmargs=-Xmx5120M。

错误:指定的大小超过了最大可表示大小。

错误:指定的大小超过了最大可表示大小。

错误:最大堆大小无效:-Xmx4g

错误:错误:无法创建 Java 虚拟机。 :app:transformClassesWithDexForDebug 失败

错误:错误:发生了致命异常。程序将退出。

错误:错误:无法创建 Java 虚拟机。

错误:最大堆大小无效:-Xmx4g

目前大约有 989 MB。

为了加快构建速度,请将 Gradle 守护程序的最大堆大小增加到 5120 MB 以上。

要在进程中运行 dex,Gradle 守护进程需要更大的堆。

【问题讨论】:

显示build.gradle 【参考方案1】:

您应该在build.gradle 部分添加javaMaxHeapSize

android 
compileSdkVersion //
buildToolsVersion //


dexOptions 
    javaMaxHeapSize "4g"

您可以访问以获取更多信息Android Gradle: What is javaMaxHeapSize “4g”?

【讨论】:

这条线的缺点是什么?你也能详细说明一下吗? 我在我的 gradle 中使用了这个,但没有任何类型的效果 @Manish 在问题部分发布您的build.gradle @Manish 阅读 ***.com/questions/37090135/… 我查看并点击该链接,但运行后在安装 apk 时显示此错误。【参考方案2】:

在应用程序标签的 MenifestFile 中添加 android:largeHeap="true"

【讨论】:

以上是关于我得到执行异常和大堆错误的主要内容,如果未能解决你的问题,请参考以下文章

Java错误和异常解析

得到json异常电话注册错误

有时发生错误的奇怪组

执行 .sql 文件时如何获取 oracle 错误

如何解决空数据库表上的乐观并发异常错误

SonarCOBOL插件执行错误