Mediathek für die Veröffentlichung vorbereiten

Auf dieser Seite werden die Properties und Optionen beschrieben, die erforderlich sind, um Ihr Android-Bibliotheksprojekt mit dem Android-Gradle-Plug-in (AGP) für die Veröffentlichung vorzubereiten. Auch wenn Sie einige dieser Properties bereits beim Erstellen Ihrer Bibliothek festgelegt haben, sollten Sie die folgenden Hinweise lesen, um Ihre Einstellungen zu optimieren.

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 sehr ähnlich sein, 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 Datei build.gradle der App festlegen, wie im folgenden Codebeispiel gezeigt:

Groovy

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 dem Attribut applicationId festgelegt wird.

In früheren Versionen des 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 führte.

Wählen Sie einen minSdkVersion-Wert aus

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

Beachten Sie bei der Auswahl eines minSdkVersion Folgendes:

  • Wenn du eine niedrige minSdkVersion auswählst, kann deine Bibliothek im Allgemeinen weiter verbreitet werden.

    Der Code einer Bibliothek wird in der Regel nur ausgeführt, wenn die App ihn explizit aufruft. Eine App kann auch auf einer Android-Version ausgeführt werden, die niedriger ist als die von einer Bibliotheksabhängigkeit erforderte Version, wenn die Bibliothek für die Kernfunktionen der App nicht unbedingt erforderlich ist. Dazu werden vor dem Aufruf der Bibliothek Laufzeitprüfungen durchgeführt. Lege daher den minSdkVersion-Wert deiner Bibliothek so niedrig fest, dass sie in Apps eingebettet und nach Möglichkeit aufgerufen werden kann, um mehr Nutzer zu erreichen.

  • Wenn Sie einen hohen minSdkVersion-Wert auswählen, kann es sein, dass Anwendungen die Bibliothek nicht einbinden können.

    Der Manifest-Merger, ein Schritt im AGP, bei dem Manifestdateien aus der App und ihren Abhängigkeiten zusammengeführt werden, sorgt dafür, dass keine Abhängigkeiten einen höheren minSdkVersion als die App haben.

  • Wenn Sie einen hohen minSdkVersion auswählen, werden App-Entwickler möglicherweise dazu veranlasst, die Sicherheitsprüfungen für die Manifestzusammenführung zu deaktivieren, was später im Build-Prozess zu Problemen führen kann.

    Da die Manifestzusammenführung verhindert, dass App-Projekte Bibliotheken mit einer höheren minSdkVersion als die App selbst enthalten, können App-Entwickler die Sicherheitsprüfungen der Manifestzusammenführung deaktivieren, um Build-Fehler zu minimieren. Dies birgt jedoch das Risiko, dass später echte Inkompatibilitätsprobleme auftreten.

  • 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 der Code automatisch ausgelöst wird.

    In diesen Fällen sorgt die Auswahl eines hohen minSdkVersion-Werts dafür, dass der Code ausgeführt werden kann. Alternativ können Sie das automatische Verhalten deaktivieren, damit die App die Bibliothek nach den entsprechenden Prüfungen ausführen kann.

Wenn Sie die Einbettung in Apps zulassen möchten, verwenden Sie die Annotation RequiresApi in Ihrer Bibliothek, um den Aufrufern mitzuteilen, dass sie Laufzeitprüfungen durchführen müssen. Android Lint verwendet die RequiresApi-Informationen für seine Prüfungen. Weitere Informationen zur Verwendung von Annotationen zur Verbesserung Ihres API-Codes und Ihrer APIs finden Sie unter Code-Inspektion mit Annotationen verbessern.

AAR-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 unterstützen. Wenn Ihre Bibliothek von einer inkompatiblen Konfiguration verwendet wird und AAR-Metadaten eingerichtet sind, wird Nutzern eine Fehlermeldung angezeigt, die ihnen hilft, das Problem zu beheben.

Wähle einen Wert für „minCompileSdk“ aus

Ab Version 4.1 unterstützt AGP minCompileSdk. Dies gibt die minimale compileSdk an, die von konsumierenden 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:

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, wird productFlavors{} priorisiert und minCompileSdk auf 30 gesetzt.

Weitere Informationen dazu, wie Gradle Einstellungen beim Kombinieren von Code und Ressourcen priorisiert, finden Sie unter Mit Source-Sets erstellen.

Testvorrichtungen aktivieren

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

Wenn Sie eine Bibliothek für andere veröffentlichen, sollten Sie Test-Fixtures für Ihre API erstellen. Testvorrichtungen 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-Source-Set, in dem Sie Test-Fixtures schreiben können.

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