2014-11-24 1 views
47

Dopo l'aggiornamento a AS 1.0 RC 1 e plug-in 0.14.4 ho problemi con la parte di rinomanza del mio build.gradle:Impossibile trovare la proprietà 'outputFile' su com.android.build.gradle.internal.api.ApplicationVariantImpl

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

tiri ora:

Error:(78, 0) Could not find property 'outputFile' on com.and[email protected]67e7625f. 

e anche io non può saltare alla ApplicationVariantImpl classe di guardare come la proprietà potrebbe essere stato rinominato. Qualcuno conosce soluzioni alternative per questo?

+0

dove si definisce defaultConfig? – jonney

risposta

83

provare questo

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

questo problema effettivamente risolto, inoltre ho dovuto impostare classpath 'com.android.tools.build:gradle:0.14.2' nel file android.gradle – Noya

+0

@Khalid Dove metterlo? –

+0

All'interno del blocco '' android'' del tuo script, c'è un blocco '' buildTypes''. All'interno di questo puoi avere blocchi per qualsiasi configurazione di build. Nel mio caso, il codice risiede all'interno di '' release''. – Chris

21

Più completo:

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

ha ancora errori mentre sono su android studio 1.2beta, plugin gradle 1.0.1 – fifth

+0

Qual è il messaggio di errore? – Chris

+0

uguale a questa domanda, Impossibile trovare la proprietà 'outputFile' su com.android.build.gradle.internal.api.ApplicationVariantImpl – fifth

5

O dove c'è una sola variante:

def apk = outputs[0].outputFile 

Ins tead di

def apk = variant.outputFile 
6

Ciò può verificarsi per diversi motivi:

1.) Prima come è stato detto prima da @Khalidov, provare

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

2.) secondo tentativo modificare tutti gli altri plugin.

Per esempio ho avuto questo problema per Spoon, che si è risolta con l'aggiornamento Spoon fino a:

classpath 'com.stanfy.spoon:spoon-gradle-plugin:0.14.1' 
0

sono riuscito a risolvere nel modo seguente:

antiche:

buildTypes { 
libertação { 

    runProguard false // esta linha tem que ser mudado 

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

}

nuovo:

buildTypes { 
libertação { 

    minifyEnabled false // nova versão 

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

}

modificati nel file di buil.gradle del progetto, come descritto in questo post di ruan65 Error:(26, 0) Gradle DSL method not found: 'runProguard()'

e dopo modificare anche questa linea:

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

}

come si diceva lassù. Mi ha sistemato!

+0

Spiega la tua risposta – adao7000