2014-11-10 16 views
57

Mi è toccato il seguente errore di generazione quando cerco di sincronizzare il mio progetto:Errore build gradle Android: (9, 0) Metodo DSL non trovato: 'compile()'.

Error:(9, 0) Gradle DSL method not found: 'compile()' 
Possible causes:The project 'AlexTest' may be using a version of Gradle that does not contain the method. 
The build file may be missing a Gradle plugin. 
link: Apply Gradle plugin 

ho cercato di applicare ogni singolo plug Gradle mi si collegano al suddetto collegamento sul fondo, ma lo stesso problema, quindi concludo che il primo errore è la causa.

Ecco il file build.gradle per AlexTest (la directory del progetto):

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.13.2' 
     compile 'com.google.android.gms:play-services:6.1.11' 
     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
    } 
} 

Credo che sia stato il file Gradle che stava avendo problemi con. Ma non sono sicuro di quale metodo si riferisca a.

Anche qui è la gradle-wrapper.properties cui anche riferiti a:

#Mon Nov 10 01:06:12 PST 2014 
distributionBase=GRADLE_USER_HOME 
distributionPath=wrapper/dists 
zipStoreBase=GRADLE_USER_HOME 
zipStorePath=wrapper/dists 
distributionUrl=https\://services.gradle.org/distributions/gradle-2.1-all.zip 

forse la versione Gradle nella distributionUrl deve corrispondere a quella della dipendenza?

Ho anche un file di build.gradle nella directory stessa applicazione - 1 di livello inferiore, anche se non credo che è quello che si riferiva a, ma qui è:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 20 
    buildToolsVersion "21.1.1" 

    defaultConfig { 
     applicationId "com.snappiesticker.alextest" 
     minSdkVersion 16 
     targetSdkVersion 20 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      runProguard false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.google.android.gms:play-services:6.1.+' 
} 
+0

Possibile duplicato di [Metodo DSL non gradato trovato: 'compile()'!] (Http://stackoverflow.com/questions/24730117/unsupported-gradle-dsl-method-found-compile) – naXa

risposta

77

I have tried applying every single gradle plugin they link me to in that link on the bottom, yet same issue, so I conclude that the first error is the cause.

corretto.

Here is the build.gradle file for AlexTest (the project directory):

Si noterà che questo file contiene un commento di codice:

// NOTE: Do not place your application dependencies here; they belong 
    // in the individual module build.gradle files 

Rimuovere la riga compile 'com.google.android.gms:play-services:6.1.11' da quel file. Lasciare lo compile 'com.google.android.gms:play-services:6.1.+' che si ha nell'altro file build.gradle.

La chiusura dependencies in buildscript è solo per i plugin Gradle. La chiusura di livello superiore dependencies, trovata nel file build.gradle del modulo, è destinata alle dipendenze dell'applicazione.

+1

Anche in questo caso devo ringraziare tu, CommonsWare. Mi hai imparato di più su Android di qualsiasi libro o persona singola abbia mai avuto. – Warpzit

+0

In breve: RTFM :) [Non l'ho fatto.] – noego

+2

@elron: Se ti fa sentire meglio, IIRC, il sistema di plugin Gradle viene revisionato, quindi spero che alla fine il sistema dual-'buildscript' essere riparato È seriamente confuso spiegare alla gente, "sì, è necessario modificare' buildscript', ma non solo * any * 'buildscript', ma piuttosto * right *' buildscript'. – CommonsWare

3

Basta aggiungere dichiarazione foolwoing nelle vostre dipendenze

apply plugin: 'jetty'

1

Ciao a tutti per me è stato un "paio di giorni che consumano lavoro" per rendere la mia applicazione run in Android Studio (ho migrato da Eclipse e aveva anche questo problema). Alla fine ho trovato questo modo molto semplice.

  1. Crea cartella libs sotto src/main/java/è App/java/libs nel riquadro sinistro.
  2. Copia e incolla tutti i tuoi barattoli esterni qui.
  3. Passare al riquadro sinistro e fare clic con il pulsante destro del mouse sull'app, quindi fare clic su Apri Impostazioni modulo
  4. Apparirà la finestra Struttura del progetto.
  5. Quindi passare alla scheda Dipendenze. Fase finale: aggiungi tutti i tuoi vasi situati in App/java/libs (li troverai in src/main/java/libs) uno per uno.

Questo è tutto Divertitevi.

1

dichiarare le dipendenze nel file di build.gradle del modulo, non in build.gradle di file di AlexTest

enter image description here

12

Sega riferisce che il problema si è verificato per altri motivi, ma questo ha risolto per me.

Se si effettua tutti i cambiamenti nella struttura del progetto (Android Studio) e premere OK, Gradle saranno sincronizzati, ma questo tipo di sincronizzazione, se il blocco di dipendenza ha qualcosa come:

questo blocco rimarrà in questo modo dopo la sincronizzazione:

un modo per risolvere il problema è quello di inserire un'interruzione di riga di rimanere come era prima la sincronizzazione cronologia o mettere un punto e virgola tra le due affermazioni.

Spero che aiuti.

+0

Le "dipendenze multiple che si fondono in una riga" sono successe in qualche modo tra lo sviluppo di un giorno e l'avvio del successivo Tutti gli errori erano vaghi e inutili. tutto bene, buon lavoro! – JakeSteam

Problemi correlati