com.android.build.transform.api.TransformException


158

내 앱에서 Google 로그인을 통합하려고하는데 다음 라이브러리를 추가했습니다.

compile 'com.google.android.gms:play-services-identity:8.1.0'
compile 'com.google.android.gms:play-services-plus:8.1.0'

또한 이것을 빌드 빌드 gradle에 추가하십시오.

classpath 'com.google.gms:google-services:1.4.0-beta3'

또한 앱 빌드 gradle에 플러그인을 추가하십시오.

apply plugin: 'com.google.gms.google-services'

그런 다음 필요한 권한을 추가하지만 앱을 실행하려고 할 때이 오류가 발생했습니다.

    Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
    com.android.build.transform.api.TransformException: com.android.ide.common.process.ProcessException: 
    org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0\bin\java.exe'' finished with non-zero exit value 2

답변:


312

multiDexEnabled trueapp build.gradle 파일에 추가 하십시오.

 defaultConfig {
    multiDexEnabled true
}

편집하다:

스티브의 대답을 먼저 시도하십시오 . 자주 발생하거나 첫 번째 단계가 도움 multiDexEnabled이 되지 않은 경우 . 더 깊이 파고 싶어하는 사람들에게는 몇 가지 비슷한 문제가 있습니다 (더 많은 답변이 있음).

: app : dexDebug ExecException이 0이 아닌 종료 값 2로 완료되었습니다.

오류 : ': app : dexDebug'작업에 대한 실행이 실패했습니다. com.android.ide.common.process.ProcessException


3
나를 위해 일하지 않았다. Steve의 답변-청소가 트릭을 수행했습니다. 방금 AS1.5 Preview로 업그레이드했습니다.
Scott

6
공정하게하려면 항상 청소를 통해 문제를 해결할 수 있는지 확인해야합니다. 나는 이것이 청소를하지 않은 사람들에게 도움이 될 것이라고 확신한다.
JuliusScript

모두 나를 위해이 didnt 한 도움의 -하지만 결국 트릭 :처럼 다시 시작
마치에이 Boguta

이것들 중 어느 것도 나를 도와
주지 않았지만

1
또한 이 솔루션으로 뛰어 들기 전에 아래의 Grandt 's answer ( stackoverflow.com/a/33690032/1617737 )를 확인하는 것이 좋습니다.
ban-geoengineering

146

주의해야 할 또 다른 것은

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

그것은 모든 플레이 서비스를 가져 오며, 단일 덱스 APK의 65535 방법 제한을 초과하는 데는 Hello World가 필요합니다.

필요한 서비스 만 항상 지정하십시오 (예 :

compile 'com.google.android.gms:play-services-identity:8.3.0'
compile 'com.google.android.gms:play-services-plus:8.3.0'
compile 'com.google.android.gms:play-services-gcm:8.3.0'

10
너는 최고야! 이것은 내 문제를 해결했습니다. 많은 솔루션에서 언급했듯이 재건은 도움이되지 않습니다. 언급했듯이 Google Play 서비스 라이브러리에는 많은 하위 구성 요소가 있으며, 말한대로 하나씩 가져와야합니다. 다시 한번 감사드립니다!
Ivan Caravanio

2
지난 며칠 동안이 문제가 발생했습니다. 필요한 것만 골랐다 고 생각했습니다. 그러나 낮고 보라, 몇 시간을 보았을 때 나는 원하는 모든 것이 play-services-ads 일 때 모든 play-services를 가져오고있었습니다. gradle 의존성 사람들을 확실히 확인하십시오!
MCLLC

@ A.Grandt Ivan이 답변에 제공 한 링크 를 추가 할 수 있습니까? 여기에는 모든 하위 구성 요소의 이름 목록이 포함되어 있으며 모두가 수행해야 할 다음 단계이기 때문에 답의 일부 여야합니다.
Murmel

137

방금 프로젝트를 정리 한 후 성공적으로 빌드했습니다.


4
감사! 완벽하게 작동합니다! 내 프로젝트가 65K 방법 제한 (멀티 덱스가 필요함)에 도달하지 못했기 때문에 받아 들인 대답은 이상합니다.
Louis CAD

4
그렇습니다, 청소는 갈 길이었습니다. AS 1.4
Felipe Caldas

라이브러리 모듈이있는 경우 프로젝트 전체에서 모든 모듈을 정리하여 작동 시키십시오. 개별 모듈 만 청소할 수 없었습니다. 전체 프로젝트를 청소하십시오.
Akh

다른 사람이 프로젝트를 청소하는 방법을 알려줄 수 있습니까? 나는 많은 "조합"을 시도했지만 아무것도 작동하지 않습니다. 나는 모두가 "깨끗하다"고 말하지만 어떻게 해야할지 모르겠다. 고마워.
Alberto Rubio

AS 툴바의 빌드> 프로젝트 정리에서 @AlbertoRubio
Chantell Osejo

23

이 오류는 프로젝트에 새로운 방법을 추가했을 때 나타납니다. 나는 65k 메소드 한계에 가깝다는 것을 알았고 프로젝트를 도울 수 있다면 multiDex 지원을 사용하고 싶지 않았습니다.

:app:transformClassesForDexForDebug작업에 사용 가능한 메모리를 늘려서 해결했습니다 . 에 javaMaxHeapSize 를 지정 하여이 작업을 수행 했습니다 gradle.build.

gradle.build

android {
    ...
    dexOptions {
        javaMaxHeapSize "4g" //specify the heap size for the dex process
    }
}

이 문제에 대한 다른 일반적인 솔루션으로 성공하지 못한 후에 이것을 시도했습니다.

  • 프로젝트 실행 clean
  • 프로젝트에서 /app/build/build디렉토리를 수동으로 삭제
  • Gradle Cache 무효화 및 Android Studio 재시작

오류

오류 : 태스크> ': app : transformClassesWithDexForDebug'에 대한 실행이 실패했습니다. com.android.build.api.transform.TransformException : com.android.ide.common.process.ProcessException : org.gradle.process.internal.ExecException : Process 'command'/Library/Java/JavaVirtualMachines/jdk1.8.0_45. jdk / Contents / Home / bin / java ''가 0이 아닌 종료 값 1로 완료되었습니다.

참고 : DEX 작업에 사용 가능한 메모리를 늘리면 메모리 링크 가 낮은 시스템에서 성능 문제가 발생할 수 있습니다 .


이것은 최대 힙 크기를 지정하여 문제를 해결할 것입니다. Maurice
Zeyad Assem

8

또한 Android Studio 1.5.1 및 gradle 1.5.0에서 비슷한 문제에 직면했습니다. 내 앱의 build.gradle 파일에 자동으로 추가 될 수있는 종속성에서 원하지 않는 라이브러리를 제거해야합니다. 하나는 'com.google.android.gms : play-services : 8.4.0'입니다. 따라서 모범 사례의 경우 광고 포함과 같은 특정 재생 서비스 라이브러리 만 포함 시키십시오.

dependencies {
    compile 'com.google.android.gms:play-services-ads:8.4.0'
}

이기는 하지만

defaultConfig {
    multiDexEnabled true
}

이렇게하면 문제가 해결되지만 gradle 콘솔에 많은 메모가 제공되어 빌드 중에 다른 실제 문제를 찾는 것이 혼란 스럽습니다.


내 Google API 사용량을 play-services-maps로 좁히는 것이 트릭이었습니다. 다음은 play-services API의 다양한 구성 요소에 대한 Google의 공식 분석입니다. developers.google.com/android/guides/…
jperl

4

당신은 안드로이드 의 문서를 볼 수 있습니다

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.0"

    defaultConfig {
        ...
        minSdkVersion 14
        targetSdkVersion 21
        ...

        // Enabling multidex support.
        multiDexEnabled true
    }
    ...
}

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

Manifest.xml

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

3

AS 1.5.1을 사용하고 있으며 동일한 문제가 발생했습니다. 그러나 프로젝트를 청소하는 것만으로는 효과가 없으므로 무언가를 시도했습니다.

  • 깨끗한 프로젝트
  • AS를 다시 시작
  • 프로젝트 동기화

이것은 나와 함께 일했기 때문에 이것이 도움이되기를 바랍니다.


3
64k Dex 방법 한계를 초과 한 프로젝트의 경우 이는 의미가 없습니다.
IgorGanapolsky


2

제 경우에는 모든 Google Play 서비스 확장 프로그램이 다음과 같은 버전이 아니기 때문에 예외가 발생했습니다.

 compile 'com.google.android.gms:play-services-plus:9.8.0'
 compile 'com.google.android.gms:play-services-appinvite:9.8.0'
 compile 'com.google.android.gms:play-services-analytics:8.3.0'

이것을 이것을 바꿀 때 효과가있었습니다.

compile 'com.google.android.gms:play-services-plus:9.8.0'
 compile 'com.google.android.gms:play-services-appinvite:9.8.0'
 compile 'com.google.android.gms:play-services-analytics:9.8.0'

1
나는 모든 해답을 찾아하지 않았고 내가 당신을 보지 못했다, 그래서 ... 나는 것을 발견 나중에 시간에 대한 내 사건을했다 : /
denispyr

2

다음으로 해결했습니다.

멀티 덱스를 구성 했습니다

build.gradle에서 다음 파일을 추가해야합니다.

android {
...
   defaultConfig {
       ...
       // Enabling multidex support.
       multiDexEnabled true
       ...
   }
   dexOptions {
      incremental true
      maxProcessCount 4 // this is the default value
      javaMaxHeapSize "2g"
   }
...
}
dependencies {
...
   compile 'com.android.support:multidex:1.0.1'
...
}

local.properties에 다음을 추가하십시오.

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

그런 다음 Application 클래스에 Multidex도 추가해야합니다.

 public class MyApplication extends MultiDexApplication {

   @Override
   public void onCreate() {
       super.onCreate();
       //mas codigo
   }

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

Manifest.xml에 라인 코드를 추가하는 것을 잊지 마십시오

<application
    ...
    android:name=".MyApplication"
    ...
/>

이것으로 버그를 해결하기에 충분했습니다. 태스크 ': app : transformClassesWithDexForDebug에 대한 실행이 실패했습니다. javaMaxHeapSize "2g"를 사용하여 build.gradle을 확인하십시오. local.properties org.gradle.jvmargs = -Xmx2048m은 2 기가 바이트입니다.


2
영어로만 게시하십시오. 이것은 좋은 대답처럼 보입니다. 영어가 아니기 때문에 삭제하는 것이 부끄러운 일입니다.
Tunaki

1

git을 통해 이전 버전으로 롤백 할 때 동일한 문제가 발생했으며 해당 버전에는 타사 API의 이전 .jar 라이브러리가 있었고 어떤 이유로 동일한 SDK의 두 jar이 / libs 폴더에 있음이 밝혀졌습니다. .


1

먼저 APP FOLDER \ app \ build \ intermediates 중간 파일을 삭제하거나 프로젝트를 정리 한 다음 다시 빌드하십시오.

추가

multiDexEnabled true

defaultConfig {
        multiDexEnabled true
}

그것은 나를 위해 일한다


1

최신을 사용하도록 변경 하여이 문제를 해결했습니다. buildToolsVersion

android {
    //...
    buildToolsVersion '26.0.2' // change from '23.0.2'
    //...
}

1

위의 모든 것이 효과가 없다면 유용한 답변입니다.

앱 gradle 파일로 이동하여

올바른 버전 코드로 모든 종속성 버전이 언급되어 있는지 확인하십시오.(com.example.demo : +)와 같은 상대 값이 아닌

이전-구현 'com.google.api-client : google-api-client-android : +'

구현 후 'com.google.api-client : google-api-client-android : 1.30.0'


0

최신 gradle 버전 ie를 사용하는 경우 classpath 'com.android.tools.build:gradle:1.5.0' and classpath 'com.google.gms:google-services:1.4.0-beta3'SDK 관리자에서 최신 지원 저장소를 업데이트하고 전체 프로젝트를 다시 빌드하십시오.


0

cordova 플러그인에 대한이 참조를 추가해야하는 경우 plugin.xml 파일에 다음 행을 추가하십시오.

<framework src="com.android.support:support-v4:+" />

0

다른 종속성에 동일한 jar이 있으면이 빌드 오류가 발생합니다.

예를 들면 다음과 같습니다.

compile('com.a.b:library1');
compile('com.c.d:library2');

"library1"및 "library2"에 이름 xxx.jar이 같은 jar 이 있으면 이러한 오류가 발생합니다.



0

나는 gradle에서 두 개의 png와 빌드 번호를 변경했으며 이제 이것을 얻습니다. 청소 및 재시작이 도움이되지 않았습니다. Instant Run을 비활성화하면 문제가 해결되었습니다. YMMV


0

나는 동일한 옵션을 가지고 있었고 Instant run을 끄 자마자 내 API16 장치에서 잘 작동했지만 API24 장치에서는 Instant run에서 잘 작동했습니다.

희망이 같은 문제가있는 사람에게 도움이되기를 바랍니다.


0

빌드-빌드 유형 편집-속성 탭-빌드 유형 버전으로 이동하여 버전 23.0.1로 다운 그레이드하십시오. 확인을 클릭하십시오. 이것은 안드로이드 스튜디오 1.5에서 작동합니다. 그것은 나를 위해 일했다.


0

쓰기 응답은 gradle에 넣고 defaultConfig {multiDexEnabled true} 다음 매니페스트 android : name = "android.support.multidex.MultiDexApplication"의 응용 프로그램 이름을 입력하십시오 .


0

이 코드는 문제를 해결

defaultConfig {
        multiDexEnabled true
}

Google 로그인을 구현하는 가장 쉬운 방법은 다음과 같습니다. google sign in android

또한 시도

dexOptions {
        javaMaxHeapSize "4g" 
    }

서비스마다 다른 버전 번호를 유지하십시오.


0

나는 다음을 추가 하여이 문제를 해결했다 build.gradle.

defaultConfig {
    multiDexEnabled true
}

에서 local.properties,

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

의존성 언급 :

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

청소하고 재건하십시오.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.