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.

In Pocket speichern vorlesen Druckansicht

(Bild: Arthur_Shevtsov/Shutterstock.com)

Lesezeit: 4 Min.
Von
  • Silke Hahn
Inhaltsverzeichnis

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.

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 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.

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 VariantBuilderVariantProperties 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 ->
      ... 
}

```

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)