Avviso di Gradle: variante.getOutputFile () e variant.setOutputFile () sono deprecate

Sto utilizzando la seguente configuration semplificata in un progetto di applicazioni Android.

android { compileSdkVersion 20 buildToolsVersion "20.0.0" defaultConfig { minSdkVersion 8 targetSdkVersion 20 versionCode 1 versionName "1.0.0" applicationVariants.all { variant -> def file = variant.outputFile def fileName = file.name.replace(".apk", "-" + versionName + ".apk") variant.outputFile = new File(file.parent, fileName) } } } 

Ora che ho aggiornato il plugin di Gradle a v.0.13.0 e Gradle a v.2.1. si visualizzano le seguenti avvertenze:

  • Vista riciclatore con richiesta image volley (richiesta di cancellazione)
  • DataPicker si blocca in samsung con android 5.0
  • Android MapActivity sul movimento della mappa
  • I servizi di Google Play sono obsoleti. Richiede 4030500 ma ha trovato 3266132
  • Rimuovi lo background nero nella window di dialogo personalizzata
  • Il pool di connessione non è stato in grado di concedere una connessione al thread
  •  WARNING [Project: :MyApp] variant.getOutputFile() is deprecated. Call it on one of variant.getOutputs() instead. WARNING [Project: :MyApp] variant.setOutputFile() is deprecated. Call it on one of variant.getOutputs() instead. WARNING [Project: :MyApp] variant.getOutputFile() is deprecated. Call it on one of variant.getOutputs() instead. WARNING [Project: :MyApp] variant.setOutputFile() is deprecated. Call it on one of variant.getOutputs() instead. 

    Come posso riscrivere lo script Groovy per eliminare gli avvisi di deprecazione?

  • Google firma non funziona dopo la pubblicazione nel negozio di giochi
  • Utilizzando Android TrustStore per aSmack in Android 4+ (ICS)
  • Utilizza RecyclerView all'interno di ScrollView con l'altezza dell'elemento di riciclaggio flessibile
  • android submit la richiesta utilizzando json e get risposta da java
  • java.lang.OutOfMemoryError - BitmapFactory.decode (strPath)
  • Come sincronizzare i dati tra i dispositivi in ​​Wi-Fi
  • 3 Solutions collect form web for “Avviso di Gradle: variante.getOutputFile () e variant.setOutputFile () sono deprecate”

    Basandosi sulla risposta di Larry Schiefer puoi cambiare lo script in qualcosa di simile:

     android { applicationVariants.all { variant -> variant.outputs.each { output -> def outputFile = output.outputFile if (outputFile != null && outputFile.name.endsWith('.apk')) { def fileName = outputFile.name.replace('.apk', "-${versionName}.apk") output.outputFile = new File(outputFile.parent, fileName) } } } } 

    Lo snippet di codice completo sembra quello:

     // Customize generated apk's name with version number applicationVariants.all { variant -> variant.outputs.each { output -> def outputFile = output.outputFile if (outputFile != null && outputFile.name.endsWith('.apk')) { def manifestParser = new com.android.builder.core.DefaultManifestParser() def fileName = outputFile.name.replace(".apk", "-DEBUG-" + manifestParser.getVersionName(android.sourceSets.main.manifest.srcFile) + ".apk") output.outputFile = new File(outputFile.parent, fileName) } } } 

    L'API di output della variante di creazione è cambiata nell'ultimo plugin di Gradley di Android. Ora consente più file (o directory) di output, per questo questo metodo è stato contrassegnato come deprecato. Se invece utilizzi variant.outputs , ti darà una Collection che puoi poi iterare su e get each file di output. Dovresti verificare che l'object di file non sia nullo e che corrisponda ai criteri (ad esempio, ha un'estensione ".apk"). Quindi puoi creare un nuovo object File e aggiungerlo all'output all'interno della raccolta.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.