2017-10-26 5 views
0

In der vorherigen Version von Gradle habe ich solchen Code wie unten für die Generierung von outputFileName für meine Release apk.Variante Api Android in Gradle 4.1

applicationVariants.all { variant -> 
     variant.outputs.each { output -> 
      output.outputFile = new File(outputPathName) 
     } 
    } 

Aber nach dem letzten Gradle Update funktioniert dieser Code nicht. Ich habe auf der offiziellen migrierenden Dokumente zu lesen, dass ich meinen Code ändern:

android.applicationVariants.all { variant -> 
    variant.outputs.all { 
     outputFileName = "${variant.name}-${variant.versionName}.apk" 
    } 
} 

Und das funktioniert nicht. Dieser Code erstellt nur den Pfad im Verzeichnis /home/pugman/AndroidStudioProjects/clickerapp/app/build/outputs/apk/release. Ich habe auch diesen Text gelesen:

"Allerdings kompliziertere Aufgaben, die den Zugriff auf outputFile-Objekte erfordern, funktionieren nicht mehr. Das liegt daran, dass variantenspezifische Aufgaben nicht mehr während der Konfigurationsphase erstellt werden von seinen Ausgaben im Voraus, aber es bedeutet auch schnellere Konfigurationszeiten. "

Bedeutet dies, dass obige Methode nicht funktioniert?

+0

posten Sie Ihre volle 'build.gradle' –

Antwort

1

Wie Sie gesagt haben, gibt die official migration docs an, dass in 3.0.0 bahnbrechende Änderungen eingeführt wurden. Nachdem dies gesagt wurde, sagt es auch klar:

Es funktioniert immer noch für einfache Aufgaben, wie die APK Namen während Kompilierzeit Ändern

Und in der Tat hat es :) Aber ich vermute, dass Sie Mache wahrscheinlich etwas falsches in deinem build.gradle. Wie auch immer, feststellen, dass sie applicationVariants mit android im Beispiel Präfix:

android.applicationVariants.all { variant -> 
    variant.outputs.all { 
     outputFileName = "${variant.name}-${variant.versionName}.apk" 
    } 
} 

Aber wird das Präfix nicht erforderlich, es sei denn Sie außerhalb der Schließung android sind, zB:

android { 
    compileSdkVersion 26 
    buildToolsVersion '26.0.2' 
    // More stuff here... 
} 

android.applicationVariants.all { variant -> 
    variant.outputs.all { 
     outputFileName = "${variant.name}-${variant.versionName}.apk" 
    } 
} 

Wenn diese doesn Lösen Sie das Problem dann am wahrscheinlichsten nicht wo Sie in Ihrem build.gradle.

Verwandte Themen