Gradle fallisce con " metodo ambiguo overloading per il metodo java.io.File # < init > "

? L&#233;o Lam @ | Original: StackOverFlow
---

Quando gradle build il mio progetto ing, sto ottenendo questo errore :

GUASTO : Costruire riuscita con un'eccezione .

Dove : build ' / build.gradle App ' linea : 45

Che cosa è andato storto : è verificato un problema di valutazione del progetto ' : metodo App'.Ambiguous sovraccarico per il metodo   java.io.File # . Impossibile risolvere quale metodo invocare per   [ null, java.lang.String classe ] a causa di prototipi sovrapposizione   tra : [ java.lang.String classe, classe java.lang.String ]   [ class java.io.File, classe java.lang.String ]

Detta linea è il primo proguardFile regola :

buildTypes {
    release {
        debuggable false
        jniDebugBuild false
        signingConfig signingConfigs.(System.getenv("SIGNING_CONFIG") ?: "release")
        runProguard true
        proguardFile getDefaultProguardFile('proguard-android-optimize.txt')
        proguardFile 'proguard-rules.txt'
    }
}

Non ho alcun file local.properties, né ha aperto il progetto in Android Studio .

Cosa c'è di sbagliato con il mio progetto ? Come posso risolvere questo errore ?

---

Top 5 Risposta

1L&#233;o Lam @

Ciò è dovuto al Gradle non essere in grado di trovare la posizione SDK, e failling quindi quando si fa qualcosa che ha bisogno l'SDK di Android, come ottenere il percorso del file Proguard predefinito .

In realtà, questo è ciò che vi dirà Gradle se si commento temporaneamente fuori quella linea :

SDK posizione non trovato . Definire posizione con sdk.dir nel file local.properties o con una variabile d'ambiente ANDROID_HOME .

You can fix it:

Definendo la posizione SDK in local.properties : basta aggiungere sdk.dir=/path/to/sdk per quel file .

Impostando la posizione SDK in variabile d'ambiente ANDROID_HOME : è sufficiente impostare la variabile d'ambiente aggiungendo ANDROID_HOME=/path/to/sdk prima gradle .

Esempio : ANDROID_HOME=/path/to/sdk gradle build .

Quando si utilizza un sistema di controllo di versione, è perfettamente bene per impostare il percorso locale nel proprio local.properties, come impostare manualmente la variabile d'ambiente ogni volta che è necessario utilizzare Gradle sarebbe fastidioso . Basta fare in modo di controllare, non nel vostro repository .

2igraczech @

Lo sto facendo ogni giorno, creando local.properties emettendo seguente comando ( -p è percorso al mio file manifesto, t è l'obiettivo attuale ) :

android project update -p . -t android-19

In caso di Gradle Builds :

android project update .p ./YourApp/src/main/ -t android-19
cp ./YourApp/src/main/local.properties ./local.properties # or ln if you feel so