Mediathek für die Veröffentlichung vorbereiten

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

Namespace auswählen

Android-Bibliotheken müssen einen Namespace deklarieren, damit beim Kompilieren ihrer Ressourcen eine eindeutige R-Klasse generiert werden kann. Dieser Namespace sollte dem Paket der Stammklasse der Bibliothek entsprechen, um Verwirrung zu vermeiden, wenn Nutzer reguläre Klassen aus der Bibliothek und der 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 entwicklerorientierte Eigenschaft der Bibliothek. Sie steht nicht im Zusammenhang mit der Anwendungsidentität, die mit der Property applicationId festgelegt wird.

In früheren Versionen von AGP konnten sowohl die applicationId-Property (für eine App) als auch die namespace-Property (für eine Bibliothek) mit dem package-Attribut 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 beim Veröffentlichen Ihrer Bibliothek. Die minSdkVersion sollte die Mindestversion von Android widerspiegeln, die von Ihrem Code unterstützt werden kann.

Beachten Sie bei der Auswahl eines minSdkVersion die folgenden Aspekte:

  • Wenn Sie einen niedrigen minSdkVersion auswählen, kann Ihre Bibliothek in der Regel weiter verbreitet 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 die für eine Bibliotheksabhängigkeit erforderliche Version, wenn die Bibliothek nicht für die Kernfunktionen der App erforderlich ist. Dazu müssen Laufzeitprüfungen durchgeführt werden, bevor die Bibliothek aufgerufen wird. Legen Sie minSdkVersion für Ihre Bibliothek daher 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 auswählen, kann es sein, dass die Bibliothek nicht in Anwendungen eingebunden wird.

    Der Manifest-Merger, ein Schritt in AGP, der Manifestdateien aus der App und ihren Abhängigkeiten zusammenführt, erzwingt, dass keine Abhängigkeiten eine höhere minSdkVersion als die App haben.

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

    Da durch das Zusammenführen von Manifesten verhindert wird, dass App-Projekte Bibliotheken mit einer höheren minSdkVersion als die App selbst enthalten, deaktivieren App-Entwickler möglicherweise die Sicherheitsprüfungen des Zusammenführens von Manifesten, um Build-Fehler zu minimieren. Dies birgt jedoch das Risiko, dass es später zu echten Inkompatibilitätsproblemen kommt.

  • In Sonderfällen, in denen das Manifest einer Bibliothek einen Broadcast-Receiver oder einen anderen Mechanismus enthält, durch den der Code automatisch ausgelöst wird, kann es erforderlich sein, einen hohen minSdkVersion auszuwählen.

    In diesen Fällen sorgt eine hohe minSdkVersion dafür, dass Code ausgeführt werden kann. Alternativ können Sie das automatisierte Verhalten deaktivieren, damit die App die Bibliothek nach den entsprechenden Prüfungen ausführen kann.

Wenn Sie das Einbetten 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 Anmerkungen zur Verbesserung von API-Code und APIs finden Sie unter Codeüberprüfung mit Anmerkungen verbessern.

Metadaten für automatisch angewendete Empfehlungen einrichten

Eine Android-Bibliothek wird in Form einer AAR-Datei (Android Archive) verpackt. AAR-Metadaten bestehen aus Eigenschaften, die AGP beim Verwenden von Bibliotheken unterstützen. Wenn Ihre Bibliothek von einer inkompatiblen Konfiguration verwendet wird und AAR-Metadaten eingerichtet sind, wird den Nutzern eine Fehlermeldung angezeigt, die ihnen hilft, das Problem zu beheben.

Wählen Sie einen Wert für „minCompileSdk“ aus.

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

Weitere Informationen dazu, wie Gradle Einstellungen priorisiert, wenn Code und Ressourcen kombiniert werden, finden Sie unter Mit Quellsets erstellen.

Test-Fixtures aktivieren

Test-Fixtures werden häufig verwendet, um den zu testenden Code einzurichten oder die Tests einer Komponente zu erleichtern. Ab Version 7.1 kann AGP Test-Fixtures für Bibliotheksprojekte sowie für Anwendungs- und Dynamic-Feature-Projekte erstellen.

Wenn Sie eine Bibliothek für andere veröffentlichen, sollten Sie Test-Fixtures für Ihre API erstellen. Test-Fixtures 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 finden Sie in der Gradle-Dokumentation zur Verwendung von Test-Fixtures.