2016-05-28 66 views
20

我正在将我的项目从eclipse移动到Android Studio。运行我的应用程序时,出现以下错误。无法找到任何解决方案。我也启用了multidex。错误:android studio中的任务':app:transformClassesWithDexForDebug'的执行失败

Error:Execution failed for task ':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.7.0_79\bin\java.exe'' finished with non-zero exit value 1

也是我gradle这个文件是低于

apply plugin: 'com.android.application' 
android { 
compileSdkVersion 23 
buildToolsVersion "23.0.3" 
defaultConfig { 
    applicationId "com.myapp" 
    minSdkVersion 9 
    targetSdkVersion 21 
    multiDexEnabled true 
}buildTypes { 
    release { 
     minifyEnabled true 
     proguardFiles getDefaultProguardFile('proguard- android.txt'), 'proguard-project.txt', 'proguard-google-api-client.txt' 
    } 
    } 
} 
dependencies { 
compile 'com.android.support:support-v4:23.4.0' 
compile 'com.google.android.gms:play-services:+' 
compile 'com.google.http-client:google-http-client-gson:1.20.0' 
compile 'com.google.code.gson:gson:2.1' 
compile 'com.android.support:appcompat-v7:23.4.0' 
compile files('libs/activation.jar') 
compile files('libs/additionnal.jar') 
compile files('libs/android-support-v7-cardview.jar') 
compile files('libs/android-support-v7-recyclerview.jar') 
compile files('libs/commons-logging-1.1.1.jar') 
compile 'com.google.api-client:google-api-client:1.18.0-rc' 
compile 'com.google.api-client:google-api-client-android:1.18.0-rc' 
compile 'com.google.api-client:google-api-client-appengine:1.18.0-rc' 
compile 'com.google.http-client:google-http-client:1.18.0-rc' 
compile 'com.google.http-client:google-http-client-android:1.18.0-rc' 
compile 'com.google.http-client:google-http-client-appengine:1.18.0-rc' 
compile 'com.google.oauth-client:google-oauth-client:1.18.0-rc' 
compile 'com.google.oauth-client:google-oauth-client-appengine:1.18.0-rc' 
compile files('libs/google-api-client-gson-1.18.0-rc.jar') 
compile files('libs/google-api-client-jackson2-1.18.0-rc.jar') 
compile files('libs/google-api-client-java6-1.18.0-rc.jar') 
compile files('libs/google-api-client-servlet-1.18.0-rc.jar') 
compile files('libs/google-http-client-jackson2-1.18.0-rc.jar') 
compile files('libs/google-http-client-jdo-1.18.0-rc.jar') 
compile files('libs/google-oauth-client-java6-1.18.0-rc.jar') 
compile files('libs/google-oauth-client-jetty-1.18.0-rc.jar') 
compile files('libs/google-oauth-client-servlet-1.18.0-rc.jar') 
compile files('libs/GraphView-4.0.1.jar') 
compile files('libs/httpclient-4.0.1.jar') 
compile files('libs/httpcore-4.0.1.jar') 
compile files('libs/jackson-core-2.1.3.jar') 
compile files('libs/jetty-6.1.26.jar') 
compile files('libs/jetty-util-6.1.26.jar') 
compile files('libs/jsr305-1.3.9.jar') 
compile files('libs/jxl.jar') 
compile files('libs/mail.jar') 
compile files('libs/transaction-api-1.1.jar') 
} 
+1

[Android java.exe完成非零退出值1]的可能重复(http://stackoverflow.com/questions/29045129/android-java-exe-finished-with-non-zero-exit-value -1) –

回答

4

这可能是由于以下原因:

  1. 内项目的jar文件之一是使用的谷歌游戏旧版本服务。

  2. 使用multiDexEnabled truedefaultconfig

  3. 要具体与您的相关性添加类。像

    编译 'com.google.android.gms:发挥服务,地图:8.4.0'

不喜欢编译'com.google.android.gms:play-services:+'

+0

尝试了这两个选项,仍然是相同的问题 – user1938357

+0

我更新了我的答案 –

4

请 这种添加到您的gradle这个文件

android { 
... 
defaultConfig { 
    ... 
    multiDexEnabled true 
    } 
} 

也可以增加你的gradle这个下面的依赖

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

或者其他选项是:在清单文件中,从应用程序标记中的multidex支持库中添加MultiDexApplication包。

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.android.multidex.myapplication"> 
    <application 
     ... 
     android:name="android.support.multidex.MultiDexApplication"> 
     ... 
    </application> 
</manifest> 
+0

试过这个,同样的问题仍然 – user1938357

+0

嘿,请试试这个。它对我有用 – Naina

48

Error:Execution failed for task ':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.7.0_79\bin\java.exe'' finished with non-zero exit value 1

上限误差occure由于很多原因的。所以我可以把这个错误发生的原因以及如何解决它。

原因1:类文件名的重复

SOLUTION:

当你的一些类文件的重构到一个库项目。到时候你写的类文件,所以,仔细检查的名称,你没有任何重复的名称

原因2:当你有大量的缓存内存

解决方案:

有时如果你有很多的缓存内存,那么这个错误发生,所以解决它。 转至File/Invalidate caches/Restart,然后选择Invalidate and Restart它将清除缓存内存。

原因3:当有内部错误或使用的Beta版本切换回稳定版本。

SOLUTION:

解决方案只是简单的去盖菜单,然后单击Clean Project和清洁点击Rebuild Project后。

原因4:当您对系统的内存配置较低时。

SOLUTION:

打开任务管理器,停止未使用的大多数在那个时候这样就释放了空间,解决OutOfMemory其他应用程序。

原因5:问题是您的方法数量已超过65K。

SOLUTION:

打开项目build.gradle文件添加

defaultConfig { 
     ... 
     multiDexEnabled true 
    } 

和依赖添加下面一行。

dependencies 
    { 
     compile 'com.android.support:multidex:1.0.0' 
    } 
+5

如果你已经添加multiDexEnabled true,那么REASON-2对你有帮助。谢谢@Ironman,它帮助我。 – Nils

+0

@Nils很高兴知道这一点。 – Ironman

+0

我如何找到方法数? –

1

我什么都试过,但还是这个错误不会去,直到我改变了我的JDK版本

我的JDK版本是7,当我将它更改为8后,错误消失了,如果没有其他的工作,您可以尝试它。

8

检查是否在您的的build.gradle(应用级)启用与否multidex下dependencies.if不一样的地方下面

dependecies{ 
multidexEnabled true 
} 

检查gradle.properties(应用级)。如果你看到下面的代码之前的线

#org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 

移除#,那么它应该是这样的

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 
+0

谢谢!这些解决方案帮助我! –

+0

这个解决方案也适用于我。谢谢 –

2

我已经试过这一个,它为我工作。 希望它也适用于其他人。

  1. 开放的build.gradle模块文件
  2. 降级您sdkversion从25到24或23
  3. 添加 'multiDexEnabled真正的'
  4. 评论这一行:编译“com.android.support:appcompat-v7 :25.1.0'(如果它在'依赖'中)
  5. 同步您的项目 并准备好去。

在这里我附上截图来解释事情。 Go through this steps

乐意帮忙。

谢谢。

1

的临时解决方案是下面将代码模块build.gradle中:

android { 
    aaptOptions.cruncherEnabled = false 
    aaptOptions.useNewCruncher = false 
} 

和同步的项目。

1

或者你可以尝试这个 -

Extend your Application class with MultiDexApplication instead of Application ! 
1

重复名称类别

class BackGroundTask extends AsyncTask<String, Void, Void> { 

class BackgroundTask extends AsyncTask<String, Void, Void> { 
-1

我的设置截图: image

感谢this post

只需在您的设置中关闭即时运行。您可以像我所显示的那样轻松搜索关键字“即时”,并且它会切换到您想要的窗口。

1

我已经尝试过这一个更多的项目,它为我工作。注意,解决方案可以配置你的应用程序的multidex:

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.1" 

    defaultConfig { 
      ... 
      minSdkVersion 9 
      targetSdkVersion 25 
    } 

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

dependencies { 
     compile 'com.android.support:support-v4:25.1.0' 
     compile 'com.google.android.gms:play-services:8.3.0' 
     ... 
} 
1

他完整的答案谢谢@Ironman,但是我要补充,根据我所面对的这个问题经历了我的解决方案。

在的build.gradle(模块:APP):

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

    ... 

    dexOptions { 
      javaMaxHeapSize "4g" 
     } 

    ... 

    defaultConfig { 
      multiDexEnabled true 
    } 

而且,把在gradle.properties以下文件:

org.gradle.jvmargs=-Xmx4096m -XX\:MaxPermSize\=512m -XX\:+HeapDumpOnOutOfMemoryError -Dfile.encoding\=UTF-8 

我应该提到,这些数字是对我的笔记本电脑配置(带16 GB RAM的MacBook Pro),因此请将它们编辑为您的配置。

相关问题