web-dev-qa-db-fra.com

Impossible de trouver la propriété 'outputFile' sur com.Android.build.gradle.internal.api.ApplicationVariantImpl

Après la mise à jour vers AS 1.0 RC 1 et le plug-in 0.14.4, je rencontre des problèmes pour renommer une partie de mon build.gradle:

applicationVariants.all { variant ->
            def file = variant.outputFile
            variant.outputFile = new File(file.parent, file.name.replace(".apk", "-" + defaultConfig.versionName + ".apk"))
        }

jette maintenant:

Error:(78, 0) Could not find property 'outputFile' on com.Android.build.gradle.internal.api.ApplicationVariantImpl_Decorated@67e7625f.

de plus, je ne peux pas accéder à la classe ApplicationVariantImpl pour voir comment la propriété a pu être renommée. Quelqu'un connaît les solutions de contournement?

48
ligi

essaye ça

applicationVariants.all { variant ->
    variant.outputs.each { output ->
        def file = output.outputFile
        output.outputFile = new File(file.parent, file.name.replace(".apk", "-" + defaultConfig.versionName + ".apk"))
    }
}
83
Oleg Khalidov

De manière plus complète:

applicationVariants.all { variant ->
    variant.outputs.each  { output ->
        output.outputFile = new File(output.outputFile.parent, output.outputFile.name.replace(".apk", "-" + defaultConfig.versionName + ".apk"))
    }
}
21
Chris

Cela peut se produire pour plusieurs raisons:

1.) D'abord comme l'a dit @Khalidov , essayez

applicationVariants.all { variant ->
    variant.outputs.each { output ->
        output.outputFile = ...
    }
}

2.) Deuxième essai, mettez à jour tous les autres plugins. 

Par exemple, j'ai eu ce problème pour Spoon , résolu par la mise à jour Spoon jusqu'à: 

classpath 'com.stanfy.spoon:spoon-gradle-plugin:0.14.1'
6
cosic

Ou s'il n'y a qu'une seule variante:

def apk = outputs[0].outputFile

Au lieu de

def apk = variant.outputFile
5
Ollie C

Assurez-vous d’exécuter la dernière version de Gradle (pas le plugin, changez-le vous-même).

Vérifiez votre gradle-wrapper.properties. Êtes-vous en cours d'exécution grade 2.1?

Plus d'informations sur la compatibilité: http://tools.Android.com/tech-docs/new-build-system/version-compatibility

1
Pedro Loureiro

J'ai réussi à résoudre comme suit:

vieux:

buildTypes { 
libertação {

    runProguard false  // esta linha tem que ser mudado

    proguardFiles getDefaultProguardFile ( 'Android.txt proguard-' ),  'proguard-rules.pro' 
} 

}

nouveau:

buildTypes { 
libertação {

    minifyEnabled false  // nova versão

    proguardFiles getDefaultProguardFile ( 'Android.txt proguard-' ),  'proguard-rules.pro' 
} 

}

édité dans le fichier buil.gradle de votre projet comme décrit dans ce message de ruan65 Erreur: (26, 0) Méthode DSL de Gradle introuvable: 'runProguard ()'

et après édition aussi cette ligne:

applicationVariants . all { variant -> 
variant . outputs . each { output -> 
    def file = output . outputFile 
    output . outputFile =  new  File ( file . parent , file . name . replace ( ".apk" ,  "-"  + defaultConfig . versionName +  ".apk" )) 
} 

}

comme il a été dit là-haut… .. Cela m'a réglé!

0
Williaan Lopes