Android Studio: Android Gradle Plug-in führt semantische Versionierung ein
Das Release von AGP 7.0 bedeutet für Entwickler, dass ab jetzt nur neue Major-Versionen die API-Kompatibilität brechen. Version 7 ist derzeit im Alphastadium.
- Silke Hahn
Gemeinsam mit der Canary-Version von Android Studio Arctic Fox (Punktrelease 2020.3.1) ist die Ausgabe 7.0 des Android Gradle Plug-in (AGP) als Alpha erschienen. Das Team hinter Android Studio hat die semantische Versionierung in die Entwicklung des Plug-ins neu eingeführt und entkoppelt die AGP-Versionierung von der Android-Studio-Versionsnummer.
Semantische Versionierung, abgestimmt auf Gradle
Für Android-Entwickler bedeutsam ist die Botschaft, dass künftig nur noch neue Hauptversionen die Kompatibilität mit bestehenden APIs beeinträchtigen dürfen. Breaking Changes sollen mindestens ein Jahr im Voraus bekannt sein und erhalten die Kennzeichnung als "deprecated" (veraltet). Bevor die alten APIs entfallen haben Entwickler dann ein Jahr Zeit, die Migration ihrer Plug-ins zur neuen API vorzunehmen.
Das Team beabsichtigt laut Google-Developer-Blog, neue Hauptversionen im Jahrestakt und abgestimmt auf den Releasezyklus des Build-Werkzeugs Gradle (für die Java Virtual Machine) herauszubringen. Version 7.0 von Gradle soll im Frühjahr 2021 erscheinen, das offizielle AGP 7.0 müsste dann im Schlepptau folgen. Die Angleichung an Gradle ist der Grund, wieso die Nummern 5 und 6 bei der Versionierung ausfallen und das Team direkt zu Version 7.0.0 übergeht. Die APIs von Gradle 7.x und AGP 7.x sollen kompatibel sein. Eine mögliche Aufwärtskompatibilität von AGP 7.x zu Gradle 8.x kann das Android-Team laut Blogeintrag nicht garantieren – das hängt davon ab, ob Gradle 8.x die vom Plug-in benötigten APIs weiter anbietet.
Android Studio und AGP weiterhin kompatibel
Android Studio und das Android Gradle Plug-in (AGP) sollen unverändert miteinander kompatibel sein. Stabile Versionen des AGP sollen auch mit neueren Versionen von Android Studio laufen. Seitens Programmiersprache sind derzeit noch alle Versionen ab Java 8 einsetzbar, offiziell gilt ab dem offiziellen Release (im ersten Halbjahr 2021) jedoch Java 11 als Mindestvoraussetzung. Das Android-Team rät Entwicklern, den Wechsel zu Java 11 vorzubereiten.
Einige APIs haben wichtige Änderungen erfahren: Die onVariants-
, onProperties
- und onVariantProperties
-Blöcke entfallen. Die Blöcke beforeVariants
und onVariants
ersetzen sie im neuen androidComponents
-Block. Beide können optional einen VariantSelector
einsetzen, um die Anzahl der Varianten zu reduzieren, auf denen der Callback zur Ausführung kommt.
Weitere Änderungen an den APIs
Die Verschachtelung von Eigenschaften innerhalb vononVariants
entfällt laut Blogankündigung: Stattdessen ziehen ähnliche APIs bei androidComponents
ein, wo sie separate Blöcke für unitTest
und androidTest
verschachtelungsfrei ermöglichen. Zwei Klassen sind umbenannt, Variant
heißt jetzt VariantBuilder
– VariantProperties
hingegen heißt nun Variant
. Die erstgenannte Klasse kommt in der beforeVariants
-Phase zum Einsatz, die zweite lässt sich an den neuen onVariants
-Block übergeben. Das folgende Code-Beispiel demonstriert den Wechsel des onVariants
-Blocks zu beforeVariants
und verwendet dafür den VariantSelector
:
```
android {
…
//onVariants.withName("release") {
// ...
//}
…
}
androidComponents {
val release = selector().withBuildType("release")
beforeVariants(release) { variant ->
...
}
}
```
Benutzerdefinierte Anpassungen sollten Entwickler in einem Plug-in vornehmen, nicht direkt im Gradle-Build. Den Wechsel von onVariantProperties
zu onVariants
veranschaulicht folgende Code-Passage:
```
android {
...
//onVariantProperties {
// ...
//}
…
}
androidComponents.onVariants { variant ->
...
}
```
Einsatz stabiler APIs empfohlen
Die APIs sollen laut Entwicklerteam mit AGP 7.0 stabil sein, Urheber von Plug-ins sollten ihre Werke bis zum Releasetermin zu den neuen androidComponents
migrieren. Durch den Einsatz ausschließlich stabiler APIs lässt sich der Migrationsdruck vermeiden. Weitere Details lassen sich der Ankündigung von AGP 7.0 (Alpha) im Google Developer Blog entnehmen. Parallel dazu ist im selben Blog die Ankündigung von Androic Studio Arctic Fox greifbar, die ebenfalls das Plug-in streift. Die gemeinsamen Release Notes können Interessierte bei Android Studio einsehen.
(sih)