com.android.build.transform.api.TransformException


158

Sto cercando di integrare Google accedi, nella mia app ho aggiunto queste librerie:

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

Aggiungilo anche al grado di compilazione del progetto:

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

Aggiungi anche plug-in al livello di compilazione dell'app:

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

quindi aggiungere le autorizzazioni necessarie ma quando provo a eseguire la mia app, ho ricevuto questo errore:

    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

Risposte:


312

Prova ad aggiungere multiDexEnabled trueal file build.gradle dell'app.

 defaultConfig {
    multiDexEnabled true
}

MODIFICARE:

Prova prima la risposta di Steve . Nel caso in cui si verifichi frequentemente o il primo passo non ha aiutato multiDexEnabledpotrebbe aiutare. Per chi ama scavare più a fondo ecco un paio di problemi simili (con più risposte):

: app: dexDebug ExecException terminata con un valore di uscita diverso da zero 2

Errore: esecuzione non riuscita per l'attività ': app: dexDebug'. com.android.ide.common.process.ProcessException


3
Non ha funzionato per me. Risposta di Steve: la pulizia ha funzionato. Sono appena passato all'anteprima di AS1.5
Scott,

6
Per essere onesti dovresti sempre verificare se un problema può essere risolto pulendo. Sono convinto che questo aiuterà coloro a cui la pulizia non ha funzionato.
JuliusScript,

entrambi non mi hanno aiutato, ma riavviare AS alla fine ha fatto il trucco :)
Maciej Boguta,

nessuno di questi mi ha aiutato, ma ha iniziato a funzionare dopo che ho riavviato AS
Maciej Boguta,

1
Vorrei anche consigliare di controllare la risposta di A Grandt, di seguito ( stackoverflow.com/a/33690032/1617737 ) prima di iniziare con questa soluzione.
divieto di geoingegneria il

146

Un'altra cosa da tenere d'occhio è che non si usa

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

Ciò importerà TUTTI i servizi di gioco e ci vorrà solo poco più di un mondo per superare il limite del metodo 65535 di un singolo APK dex.

Specifica sempre solo i servizi di cui hai bisogno, ad esempio:

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
Sei il migliore! Questo ha risolto il mio problema. La ricostruzione non aiuta nel mio caso, come indicato in molte delle soluzioni. Come hai detto, la libreria di Google Play Services ha molti sottocomponenti e dovrebbero essere importati come hai detto tu, uno per uno. Mille grazie ancora!
Ivan Caravanio,

2
Ho avuto questo problema negli ultimi due giorni. Pensavo di aver scelto solo ciò di cui avevo bisogno. Ma, a bassa voce, dopo ore di ricerca stavo importando tutti i servizi di gioco quando tutto ciò che volevo era pubblicità di servizi di gioco. Sicuramente controlla le tue dipendenze di livello persone!
MCLLC,

@ A.Grandt potresti aggiungere il link che Ivan ha dato alla tua risposta? Contiene un elenco di nomi di tutti i sottocomponenti e dovrebbe far parte della risposta, poiché è il prossimo passo che tutti devono compiere.
Murmel,

137

Ho dovuto solo pulire il mio progetto e successivamente è stato realizzato con successo.


4
Grazie! Funziona perfettamente! La risposta accettata sarebbe strana poiché il mio progetto è lungi dal raggiungere il limite del metodo 65K (che richiederebbe il multidex).
Louis CAD

4
Sì, la pulizia era la strada da percorrere. AS 1.4
Felipe Caldas,

Se hai moduli di libreria, pulisci tutti i moduli in tutto il progetto per farlo funzionare. La pulizia dei singoli moduli non ha funzionato per me. Pulisci TUTTO il progetto.
Akh,

Qualcuno può dirmi come posso pulire il progetto? Ho provato molte "combinazioni" e niente funziona. Vedo che tutti dicono "pulito", ma non so come. Grazie.
Alberto Rubio,

@AlbertoRubio, sotto Build> Clean Project nella barra degli strumenti AS.
Chantell Osejo,

23

Questo errore ha iniziato a comparire per me quando ho aggiunto alcuni nuovi metodi al mio progetto. Sapevo che non ero vicino al limite del metodo 65k e non volevo abilitare il supporto multiDex per il mio progetto se potevo aiutarlo.

L'ho risolto aumentando la memoria disponibile per l' :app:transformClassesForDexForDebugattività. L'ho fatto specificando javaMaxHeapSize in gradle.build.

gradle.build

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

Ho provato questo dopo non aver avuto successo con altre soluzioni comuni a questo problema:

  • Esecuzione di un progetto clean
  • Eliminazione manuale delle directory /app/builde /builddal mio progetto
  • Annullamento della cache dei gradi e riavvio di Android Studio

Errore

Errore: esecuzione non riuscita per l'attività> ': 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 / Sommario / Home / bin / java '' terminato con valore di uscita diverso da zero 1

Nota: aumentando la memoria disponibile per l'operazione DEX può causare problemi di prestazioni sui sistemi con memoria inferiore - Link .


Questo ha funzionato per me, solo per specificare la dimensione massima dell'heap risolverà il problema, grazie Maurice
Zeyad Assem,

8

Ho anche riscontrato problemi simili in Android Studio 1.5.1 e Gradle 1.5.0. Devo solo rimuovere le librerie indesiderate dalle dipendenze che possono essere aggiunte automaticamente nel file build.gradle della mia app. Uno era: compilare "com.google.android.gms: play-services: 8.4.0". Quindi, per le migliori pratiche, cerca di includere solo la libreria di servizi di riproduzione specifici come solo per gli annunci

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

Sebbene

defaultConfig {
    multiDexEnabled true
}

questo risolverà anche il problema, ma fornisce molte note nella console Gradle, il che rende confuso trovare gli altri problemi reali durante la compilazione


Restringere il mio utilizzo di google api a play-services-maps ha funzionato. Ecco la suddivisione ufficiale di Google dei vari componenti nell'API dei servizi di gioco: developers.google.com/android/guides/…
jperl

4

puoi vedere la documentazione di Android

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

Sto usando AS 1.5.1 e ho riscontrato lo stesso problema. Ma pulire il progetto non lo farà, quindi ho provato qualcosa.

  • progetto pulito
  • riavvia AS
  • Sincronizza progetto

Questo ha funzionato con me, quindi spero che questo aiuti.


3
Ciò sarebbe inutile per i progetti che hanno superato il limite del metodo Dex 64k.
IgorGanapolsky,

3

Nel mio caso cambio buildToolsVersion da "24" a "23.0.2", risolvi il problema.


2

Nel mio caso l'eccezione si è verificata perché tutte le estensioni del servizio di Google Play non hanno la stessa versione di seguito

 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'

Ha funzionato quando l'ho cambiato in

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
Non ho cercato tutte le risposte e non ho visto le tue, quindi ... Ho scoperto che questo era il mio caso circa un'ora dopo: /
denispyr

2

L'ho risolto con il prossimo:

Ho configurato Multidex

In build.gradle devi aggiungere quello successivo.

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

Aggiungi il prossimo in local.properties

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

Successivamente, nella classe Applicazione è necessario aggiungere anche 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);
   }
}

Non dimenticare di aggiungere il codice di linea in Manifest.xml

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

Questo è quanto basta per risolvere il bug: Esecuzione non riuscita per l'attività ': app: transformClassesWithDexForDebug. Controlla molto bene in build.gradle con javaMaxHeapSize "2g" e local.properties org.gradle.jvmargs = -Xmx2048m sono di 2 gigabyte.


2
Si prega di pubblicare solo in inglese. Sembra una buona risposta, sarebbe un peccato che venga eliminato perché non è in inglese.
Tunaki,

1

Ho avuto lo stesso problema quando sono tornato alla vecchia versione tramite git, e quella versione aveva una precedente libreria .jar di un API di terze parti, e per qualche motivo si è scoperto che entrambi i jar dello stesso sdk, solo versioni diverse erano nella cartella / libs .


1

Prima elimina i file intermedi LA TUA CARTELLA APP \ app \ build \ intermediates OPPURE Pulisci il tuo progetto e poi ricostruisci.

Quindi aggiungere

multiDexEnabled true

vale a dire

defaultConfig {
        multiDexEnabled true
}

Per me è un lavoro


1

Ho risolto questo problema cambiando per usare l'ultima buildToolsVersion

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

1

Una risposta utile se tutto quanto sopra non ha funzionato per te.

Vai al file di valutazione dell'app,

Verifica che tutte le versioni di dipendenza siano menzionate con il codice di versione corretto anziché con qualsiasi valore relativo come (com.example.demo: +)

Precedente - implementazione "com.google.api-client: google-api-client-android: +"

Dopo - implementazione "com.google.api-client: google-api-client-android: 1.30.0"


0

Se si utilizza l'ultima versione gradle, ad esempio classpath 'com.android.tools.build:gradle:1.5.0' and classpath 'com.google.gms:google-services:1.4.0-beta3', provare ad aggiornare l'ultimo repository di supporto dal gestore SDK e ricostruire l'intero progetto.


0

Se è necessario aggiungere questo riferimento per il plug-in Cordova, aggiungere la riga successiva nel file plugin.xml.

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

0

Se le diverse dipendenze hanno lo stesso jar causano anche questo errore di compilazione.

Per esempio:

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

Se "library1" e "library2" hanno lo stesso jar chiamato xxx.jar, ciò comporterà tale errore.


0

Mi è successo a causa della perdita di memoria di Eclipse. Ho dovuto riavviare il mio computer.


0

Ho cambiato un paio di png e il numero di build nel livello e ora ho capito. Nessuna quantità di pulizia e riavvio ha aiutato. La disabilitazione di Instant Run l'ha risolto per me. YMMV


0

Avevo la stessa opzione e non appena ho spento Instant run, ha funzionato bene sul mio dispositivo API16, ma sul dispositivo API24 ha funzionato bene con Instant run.

Spero che questo aiuti qualcuno che ha lo stesso problema


0

Basta andare su Build - Modifica tipi di build - Scheda Proprietà - Build Type Version e esegui il downgrade alla versione 23.0.1. Clicca ok Funziona con Android Studio 1.5. Ha funzionato per me.


0

la risposta di scrittura è in graduale mettere defaultConfig {multiDexEnabled true} quindi il nome dell'applicazione in manifest android: name = "android.support.multidex.MultiDexApplication" vorrei che questa risposta fosse infernale per qualcuno


0

questo codice ha risolto il problema

defaultConfig {
        multiDexEnabled true
}

Per il modo più semplice per implementare google accedi visita: google accedi android

Prova anche

dexOptions {
        javaMaxHeapSize "4g" 
    }

Mantenere anche lo stesso numero di versione per servizi diversi.


0

Ho risolto questo problema aggiungendo: In build.gradle:

defaultConfig {
    multiDexEnabled true
}

in local.properties,

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

menzione dipendenza:

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

Pulisci e ricostruisci.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.