Auf dieser Seite werden die Eigenschaften und Optionen beschrieben, die Sie benötigen, um Ihr Android-Bibliotheksprojekt mit dem Android-Gradle-Plug-in (AGP) zur Veröffentlichung 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:
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 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 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 der Veröffentlichung Ihrer Bibliothek. Die minSdkVersion
sollte der Mindestversion von Android entsprechen, die Ihr Code unterstützen kann.
Beachten Sie bei der Auswahl einer minSdkVersion
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 auch auf einer Android-Version ausgeführt werden, die niedriger ist als die von einer Bibliothekabhängigkeit erforderliche Version, wenn die Bibliothek nicht für die Hauptfunktionen der App erforderlich ist. Dazu werden Laufzeitprüfungen durchgeführt, bevor die Bibliothek aufgerufen wird. Legen Sie daher den Wert für
minSdkVersion
Ihrer 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 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 Sie einen hohen Wert für
minSdkVersion
auswählen, deaktivieren App-Entwickler möglicherweise die Sicherheitsprüfungen für die Manifest-Dateizusammenführung, was später im Build-Prozess zu Problemen führen kann.Da die Manifest-Dateizusammenführung verhindert, dass App-Projekte Bibliotheken mit einer höheren
minSdkVersion
als die App selbst enthalten, können App-Entwickler die Sicherheitsprüfungen der Manifest-Dateizusammenführung deaktivieren, um Buildfehler zu minimieren. Dies birgt jedoch das Risiko von Inkompatibilitätsproblemen.Die Auswahl eines hohen
minSdkVersion
kann in Sonderfällen erforderlich sein, wenn das Manifest einer Bibliothek einen Broadcast-Empfänger oder einen anderen Mechanismus enthält, durch den der Code automatisch ausgelöst wird.In diesen Fällen sorgt eine hohe
minSdkVersion
dafür, dass der Code ausgeführt werden kann. Alternativ können Sie das automatische Verhalten deaktivieren, damit die App die Ausführung der Bibliothek nach den entsprechenden Prüfungen aktivieren kann.
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.
Metadaten für automatisch angewendete Empfehlungen 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 ist die Mindestanzahl von compileSdk
, die von Projekten verwendet werden kann. Wenn Ihre Bibliothek Manifesteinträge oder Ressourcen enthält, die neuere Plattformattribute nutzen, 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:
buildTypes{}
productFlavors{}
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 priorisiert, wenn Code und Ressourcen kombiniert werden, finden Sie unter Mit Quellsätzen erstellen.
Test-Fixtures aktivieren
Test-Fixtures werden häufig verwendet, um den zu testenden Code einzurichten oder die Tests einer Komponente zu vereinfachen. 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 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.