Mediathek für die Veröffentlichung vorbereiten

Auf dieser Seite werden die Attribute und Optionen beschrieben, die Sie benötigen, um Ihr Android-Bibliotheksprojekt für die Veröffentlichung mit dem Android Gradle-Plug-in (AGP) vorzubereiten. Auch wenn Sie einige dieser Attribute bereits zu Beginn der Bibliothek festgelegt haben, sollten Sie die folgenden Hinweise zur Optimierung der Einstellungen lesen.

Namespace auswählen

Android-Bibliotheken müssen einen Namespace deklarieren, damit sie beim Kompilieren ihrer Ressourcen eine eindeutige R-Klasse generieren können. Dieser Namespace sollte dem Stammklassenpaket der Bibliothek entsprechen, um Verwirrung zu vermeiden, wenn Nutzer reguläre Klassen aus der Bibliothek und ihrer R-Klasse importieren.

Ab AGP 7.0 können Sie den Namespace in der Datei build.gradle der Anwendung festlegen, wie im folgenden Codebeispiel gezeigt:

Groovig

android {
  namespace = 'com.example.library'
}

Kotlin

android {
  namespace = "com.example.library"
}

Der Namespace ist eine entwicklerseitige Eigenschaft der Bibliothek. Sie steht in keinem Zusammenhang mit der Anwendungsidentität, die mit dem Attribut applicationId festgelegt wird.

In früheren Versionen von AGP konnte sowohl das Attribut applicationId (für eine App) als auch das Attribut namespace (für eine Bibliothek) mit dem Attribut package des Manifests festgelegt werden, was zu Verwirrung geführt hat.

minSdkVersion-Wert auswählen

Die Auswahl eines minSdkVersion für deine Mediathek ist ein wichtiger Aspekt beim Veröffentlichen der Mediathek. minSdkVersion sollte die Mindestversion von Android widerspiegeln, die von deinem Code unterstützt wird.

Beachten Sie bei der Auswahl von minSdkVersion die folgenden Überlegungen:

  • Wenn du einen niedrigen minSdkVersion auswählst, erreichst du in der Regel eine breitere Verteilung deiner Bibliothek.

    Der Code einer Bibliothek wird in der Regel nur ausgeführt, wenn die App ihn explizit aufruft. Eine Anwendung kann weiterhin auf einer Android-Version ausgeführt werden, die niedriger ist als für eine Bibliotheksabhängigkeit erforderlich, wenn die Bibliothek nicht für die Hauptfunktion der App erforderlich ist. Dazu werden vor dem Aufruf der Bibliothek Laufzeitprüfungen durchgeführt. Setzen Sie den minSdkVersion Ihrer Bibliothek daher so niedrig ein, dass sie in Anwendungen eingebettet und nach Möglichkeit aufgerufen werden kann, um mehr Nutzer zu erreichen.

  • Wenn Sie einen hohen minSdkVersion auswählen, kann die Bibliothek möglicherweise nicht von Anwendungen aufgenommen werden.

    Die Manifestzusammenführung, ein Schritt in AGP, bei dem Manifestdateien aus der Anwendung und aus ihren Abhängigkeiten zusammengeführt werden, erzwingt, dass keine Abhängigkeiten einen höheren minSdkVersion als die Anwendung haben.

  • Wenn Sie einen hohen Wert für minSdkVersion auswählen, werden App-Entwickler möglicherweise aufgefordert, die Sicherheitschecks für die Manifestzusammenführung zu deaktivieren, wodurch später im Build-Prozess Probleme auftreten.

    Da die Manifestzusammenführung Anwendungsprojekte daran hindert, Bibliotheken mit einem höheren minSdkVersion als die Anwendung selbst aufzunehmen, können App-Entwickler die Sicherheitschecks der Manifestzusammenführung deaktivieren, um Build-Fehler zu minimieren. Dies birgt jedoch das Risiko echter Kompatibilitätsprobleme im Downstream.

  • Die Auswahl eines hohen minSdkVersion kann in speziellen Fällen erforderlich sein, wenn das Manifest einer Bibliothek einen Broadcast-Empfänger oder einen anderen Mechanismus enthält, durch den sein Code automatisch ausgelöst wird.

    In diesen Fällen sorgt die Auswahl eines hohen minSdkVersion dafür, dass der Code ausgeführt werden kann. Alternativ können Sie das automatisierte Verhalten deaktivieren, sodass die Anwendung die Ausführung der Bibliothek aktivieren kann, nachdem sie die richtigen Prüfungen durchgeführt hat.

Um das Einbetten in Anwendungen zuzulassen, verwenden Sie die Annotation RequiresApi in Ihrer Bibliothek, um die Aufrufer darauf hinzuweisen, dass sie Laufzeitprüfungen ausführen müssen. Android Lint verwendet die RequiresApi-Informationen für seine Inspektionen. Weitere Ressourcen zur Verwendung von Annotationen zur Verbesserung des API-Codes und der APIs finden Sie unter Codeprüfung mit Annotationen verbessern.

AAE-Metadaten einrichten

Eine Android-Bibliothek wird in Form einer Android-Archivdatei (AAR) verpackt. AAR-Metadaten bestehen aus Attributen, die AGP bei der Nutzung von Bibliotheken helfen. Wenn Ihre Bibliothek mit einer inkompatiblen Konfiguration genutzt wird und AAR-Metadaten eingerichtet sind, erhalten Nutzer eine Fehlermeldung, um das Problem zu beheben.

minCompileSdk-Wert auswählen

Ab Version 4.1 unterstützt AGP minCompileSdk. Gibt den Mindestwert für compileSdk an, den Projekte, die Daten verarbeiten, verwenden können. Wenn deine Bibliothek Manifesteinträge oder Ressourcen enthält, die neuere Plattformattribute verwenden, musst du diesen Wert festlegen.

Der Wert minCompileSdk kann in den Blöcken defaultConfig{}, productFlavors{} und buildTypes{} in der Datei build.gradle auf Modulebene festgelegt werden:

Groovig

android {
  defaultConfig {
    aarMetadata {
      minCompileSdk = 29
    }
  }
  productFlavors {
    foo {
      ...
      aarMetadata {
        minCompileSdk = 30
      }
    }
  }
}

Kotlin

android {
  defaultConfig {
    aarMetadata {
      minCompileSdk = 29
    }
  }
  productFlavors {
    register("foo") {
      ...
      aarMetadata {
        minCompileSdk = 30
      }
    }
  }
}

Wenn du minCompileSdk an mehreren Stellen festlegst, priorisiert Gradle die Speicherorte für die Einstellungen während des Build-Prozesses:

  1. buildTypes{}

  2. productFlavors{}

  3. defaultConfig{}

Im vorherigen Beispiel, in dem minCompileSdk sowohl in defaultConfig{} als auch in productFlavors{} definiert ist, wird productFlavors{} priorisiert und minCompileSdk auf 30 festgelegt.

Weitere Informationen dazu, wie Gradle Einstellungen beim Kombinieren von Code und Ressourcen priorisiert, finden Sie unter Mit Quellsätzen erstellen.

Test-Befestigungen aktivieren

Test-Anpassungen werden in der Regel verwendet, um den zu testenden Code einzurichten oder die Tests einer Komponente zu ermöglichen. Ab Version 7.1 kann AGP zusätzlich zu Anwendungs- und dynamischen Funktionen auch Test-Fixes für Bibliotheksprojekte erstellen.

Wenn Sie eine Bibliothek zur Nutzung durch andere veröffentlichen, sollten Sie Test-Displays für Ihre API erstellen. Test-Displays können in der Datei build.gradle auf Modulebene aktiviert werden:

Groovig

android {
  testFixtures {
    enable = true
  }
}

Kotlin

android {
  testFixtures {
    enable = true
  }
}

Wenn Sie Test-Displays aktivieren, erstellt Gradle automatisch einen src/testFixtures-Quellsatz, in den Sie Test-Displays schreiben können.

Weitere Informationen finden Sie in der Gradle-Dokumentation zur Verwendung von Test-Displays.