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 Sie einige dieser Eigenschaften bereits beim Erstellen der Bibliothek festgelegt haben, sollten Sie sich die folgenden Hinweise zur Optimierung Ihrer Einstellungen ansehen.

Namespace auswählen

Android-Bibliotheken müssen einen Namespace deklarieren, damit beim Kompilieren ihrer Ressourcen eine eindeutige R-Klasse generiert werden kann. Dieser Name muss dem Stammklassenpaket der Bibliothek möglichst genau entsprechen, um Verwechslungen 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 build.gradle-Datei der App 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 Eigenschaft der Bibliothek. Sie hat nichts mit der Anwendungsidentität zu tun, die mit der Property applicationId festgelegt wird.

In früheren Versionen von AGP konnten sowohl die applicationId-Eigenschaft (für eine App) als auch die namespace-Eigenschaft (für eine Bibliothek) mit dem Attribut package des Manifests festgelegt werden, was zu Verwirrung führte.

minSdkVersion-Wert auswählen

Die Auswahl einer minSdkVersion für Ihre Bibliothek ist ein wichtiger Aspekt der Veröffentlichung Ihrer Bibliothek. Die minSdkVersion sollte der Mindestversion von Android entsprechen, die Ihr Code unterstützen kann.

Beachten Sie bei der Auswahl eines minSdkVersions Folgendes:

  • Wenn Sie einen niedrigen minSdkVersion auswählen, kann Ihre Bibliothek in der Regel breiter verteilt werden.

    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 einen hohen Wert für minSdkVersion auswählen, wird die Bibliothek möglicherweise nicht in Anwendungen einbezogen.

    Bei der Manifest-Dateienzusammenführung, einem Schritt in AGP, werden Manifestdateien aus der App und ihren Abhängigkeiten zusammengeführt. Dabei wird sichergestellt, dass keine Abhängigkeiten eine höhere minSdkVersion als die App haben.

  • Wenn du einen hohen Wert für 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. Dies birgt jedoch das Risiko echter Inkompatibilitätsprobleme.

  • 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 kann der Code ausgeführt werden, wenn Sie eine hohe minSdkVersion auswählen. 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 Sie das Einbetten in Apps zulassen möchten, verwenden Sie die Anmerkung RequiresApi in Ihrer Bibliothek, um die Aufrufer darauf hinzuweisen, dass sie Laufzeitprüfungen durchführen müssen. AndroidLint verwendet die RequiresApi-Informationen für seine Prüfungen. Weitere Informationen zur Verwendung von Anmerkungen zum Optimieren Ihres API-Codes und Ihrer APIs finden Sie unter Codeprüfung mit Anmerkungen verbessern.

AAE-Metadaten einrichten

Eine Android-Bibliothek wird in Form einer Android-Archivdatei (AAR) verpackt. AAR-Metadaten bestehen aus Eigenschaften, die das Verwenden von Bibliotheken durch AGP unterstützen. Wenn Ihre Bibliothek von einer inkompatiblen Konfiguration verwendet wird und AAR-Metadaten eingerichtet sind, wird Nutzern eine Fehlermeldung angezeigt, die ihnen bei der Behebung des Problems helfen soll.

Wert für „minCompileSdk“ 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 für minCompileSdk kann in den Blöcken defaultConfig{}, productFlavors{} und buildTypes{} in der Datei build.gradle auf Modulebene festgelegt werden:

Groovy

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 so:

  1. buildTypes{}

  2. productFlavors{}

  3. defaultConfig{}

Im vorherigen Beispiel, in dem minCompileSdk sowohl in defaultConfig{} als auch in productFlavors{} definiert ist, hat productFlavors{} Priorität 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-Fixtures aktivieren

Test-Fixierungen werden häufig verwendet, um den zu testenden Code einzurichten oder die Tests einer Komponente zu erleichtern. Ab Version 7.1 können mit AGP nicht nur Test-Fixtures für Anwendungs- und dynamische Feature-Projekte, sondern auch für Bibliotheksprojekte erstellt werden.

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

Groovy

android {
  testFixtures {
    enable = true
  }
}

Kotlin

android {
  testFixtures {
    enable = true
  }
}

Wenn Sie Test-Fixtures aktivieren, erstellt Gradle automatisch ein src/testFixtures-Quellset, in dem Sie Test-Fixtures schreiben können.

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