29 votes

Gradle échoue avec "surcharge de méthode ambiguë pour la méthode java.io.File # <init> "

Lors de l' gradle building mon projet, j'obtiens cette erreur:

ÉCHEC: la construction échoue avec une exception.

  • Où:
    Construire le fichier App/construire.gradle ligne: 45

  • Ce qui s'est passé:
    Un problème est survenu l'évaluation de projet": App'.
    Ambigu la surcharge de méthode pour la méthode java.io.Fichier#.
    Ne peut pas résoudre la méthode à invoquer pour [null, classe java.lang.String] en raison du chevauchement des prototypes entre:
    [classe java.lang.Chaîne, de la classe java.lang.Chaîne]
    [classe java.io.Fichier de classe java.lang.Chaîne]

La ligne est la première proguardFile règle:

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

Je n'ai pas de local.properties le fichier, ni ouvert le projet dans Android Studio.

Quel est le problème avec mon projet? Comment puis-je corriger cette erreur?

52voto

Léo Lam Points 698

Cela est dû à Gradle ne pas être en mesure de trouver l'emplacement du SDK, et donc failling quand on fait quelque chose qui a besoin du SDK Android, tels que l'obtention de la valeur par défaut Proguard l'emplacement du fichier.

En fait, c'est ce que Gradle vous dira si vous avez temporairement en commentaire cette ligne:

Emplacement du SDK pas trouvé. Définir l'emplacement avec le sdk.dir dans le local.fichier de propriétés ou avec un ANDROID_HOME variable d'environnement.

Vous pouvez résoudre ce problème:

  • Par définition de l'emplacement du SDK en local.properties: il suffit d'ajouter sdk.dir=/path/to/sdk de ce fichier.

  • En définissant l'emplacement du SDK dans la variable d'environnement ANDROID_HOME: il vous suffit de définir la variable d'environnement par l'ajout d' ANDROID_HOME=/path/to/sdk avant gradle.

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

Lors de l'utilisation d'un système de contrôle de version, il est parfaitement bien pour définir l'emplacement localement dans votre propre local.properties, de régler manuellement la variable d'environnement à chaque fois que vous devez utiliser Gradle serait ennuyeux. Assurez-vous juste de ne pas vérifier dans votre référentiel.

0voto

igraczech Points 160

Je fais cela tous les jours, en créant local.properties en émettant la commande suivante (-p est le chemin vers mon fichier manifeste, -t est la cible actuelle):

 android project update -p . -t android-19
 

En cas de 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
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X