Mediathek für die Veröffentlichung vorbereiten

Auf dieser Seite werden die Attribute und Optionen beschrieben, die erforderlich sind, um das Projekt Android-Bibliothek für die Veröffentlichung mit dem Android-Gradle-Plug-in (AGP) vorzubereiten. Auch wenn du einige dieser Eigenschaften bereits zu Beginn der Erstellung deiner Bibliothek festgelegt hast, solltest du 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 genau mit dem Stammklassenpaket der Bibliothek übereinstimmen, um Verwechslungen zu vermeiden, wenn Nutzer reguläre Klassen aus der Bibliothek und deren 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:

Cool

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

Kotlin

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

Der Namespace ist eine für Entwickler sichtbare Property der Bibliothek. Er hängt nicht mit der Anwendungsidentität zusammen, die mit dem Attribut applicationId festgelegt wird.

In früheren Versionen von AGP konnten 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 deiner Mediathek. minSdkVersion sollte die Mindestversion von Android widerspiegeln, die von deinem Code unterstützt wird.

Beachten Sie bei der Auswahl eines minSdkVersions Folgendes:

  • Eine niedrige minSdkVersion ermöglicht 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 App kann weiterhin auf einer Android-Version ausgeführt werden, die niedriger ist, als aufgrund einer Bibliotheksabhängigkeit erforderlich ist – wenn die Bibliothek für die Hauptfunktion der App nicht unbedingt erforderlich ist. Dazu müssen vor dem Aufrufen der Bibliothek Laufzeitprüfungen durchgeführt werden. Setze den minSdkVersion deiner Mediathek deshalb so niedrig ein, dass sie in Anwendungen eingebettet und nach Möglichkeit aufgerufen werden kann, um mehr Nutzer zu erreichen.

  • Wenn Sie für minSdkVersion einen hohen Wert auswählen, können Anwendungen die Bibliothek möglicherweise nicht einschließen.

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

  • Wenn du einen hohen minSdkVersion auswählst, werden App-Entwickler möglicherweise aufgefordert, die Sicherheitschecks für die Manifestzusammenführung zu deaktivieren, was später im Build-Prozess zu Problemen führt.

    Da durch die Manifestzusammenführung verhindert wird, dass App-Projekte Bibliotheken mit einem höheren minSdkVersion als die App selbst einschließen, können App-Entwickler die Sicherheitschecks der Manifestzusammenführung deaktivieren, um Build-Fehler zu minimieren. Dadurch besteht jedoch das Risiko echter Inkompatibilitätsprobleme im Downstream.

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

    In diesen Fällen wird durch die Auswahl eines hohen minSdkVersion sichergestellt, dass der Code ausgeführt werden kann. Alternativ können Sie das automatisierte Verhalten deaktivieren, damit die Anwendung die Ausführung der Bibliothek aktivieren kann, nachdem die richtigen Prüfungen durchgeführt wurden.

Wenn du Einbettungen in Apps zulassen möchtest, verwende die Annotation RequiresApi in deiner 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 Informationen 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 Archive-Datei (AAR) verpackt. AAR-Metadaten bestehen aus Attributen, mit denen AGP Bibliotheken nutzen kann. Wenn Ihre Bibliothek von 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. Dies gibt den minimalen compileSdk an, der von verwendenden Projekten verwendet werden kann. Wenn Ihre Bibliothek Manifesteinträge oder Ressourcen enthält, die neuere Plattformattribute verwenden, müssen Sie diesen Wert festlegen.

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

Cool

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

Kotlin

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

Wenn Sie minCompileSdk an mehreren Stellen festlegen, priorisiert Gradle die Speicherorte der 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, hat productFlavors{} Vorrang und minCompileSdk wird auf 30 gesetzt.

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

Test-Befestigungen aktivieren

Test-Fixierungen werden häufig verwendet, um den zu testenden Code einzurichten oder die Tests einer Komponente zu erleichtern. Ab Version 7.1 kann AGP neben Anwendungs- und dynamischen Feature-Projekten auch Test-Kits für Bibliotheksprojekte erstellen.

Wenn Sie eine Bibliothek veröffentlichen, die andere nutzen können, sollten Sie Test-Fixer für Ihre API erstellen. Test-Fixierungen können in der Datei build.gradle auf Modulebene aktiviert werden:

Cool

android {
  testFixtures {
    enable = true
  }
}

Kotlin

android {
  testFixtures {
    enable = true
  }
}

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

Weitere Informationen findest du in der Gradle-Dokumentation zur Verwendung von Test-Fixierungen.