Bibliothek hochladen

Wenn Sie Zugriff auf Ihre Bibliothek gewähren möchten, müssen Sie ein Repository auswählen. Auf dieser Seite werden die Überlegungen zur Auswahl eines Repository-Typs erläutert. Außerdem erfahren Sie, wie Sie eine Publikation mit dem Maven Publish-Plug-in erstellen.

Bevor du deine Bibliothek hochlädst, solltest du sie für die Veröffentlichung vorbereitet und alle erforderlichen Publikationsvarianten oder Test-Befestigungen konfiguriert haben.

Repository-Typ auswählen

Bibliotheken werden als AAR-Dateien veröffentlicht. Diese Dateien enthalten kompilierten Code als Bytecode und native Bibliotheken, ein Android-Manifest und Ressourcen. Das Paket selbst deklariert keine Identität, Version oder Abhängigkeiten von anderen Bibliotheken.

Im Allgemeinen hat sich die Bereitstellung automatisch angewendeter Empfehlungen über ein Repository bewährt, anstatt AAE direkt zu verteilen. Nutzer können so besser nachvollziehen, woher die Bibliothek stammt, anstatt mit einer name.aar-Datei ohne wichtige Details wie die Version zu arbeiten. Verwenden Sie beim Upgrade auf eine neuere Version einer Bibliothek ein Repository, damit nur die erforderlichen Abhängigkeiten der neueren Version hinzugefügt werden. So müssen Nutzer Abhängigkeiten nicht manuell aktualisieren.

Die Verwendung eines Repositorys zum Veröffentlichen Ihrer Bibliothek bietet mehrere Vorteile:

  • Gradle kann die Abhängigkeiten Ihrer Bibliothek automatisch der Abhängigkeitsgrafik hinzufügen.
  • Gradle kann dafür sorgen, dass eine einzelne Version Ihrer Bibliothek in das Abhängigkeitsdiagramm aufgenommen wird. Dadurch werden Konflikte gelöst, wenn Ihre Bibliothek mehrfach in verschiedenen Versionen enthalten ist.
  • Das Android Gradle-Plug-in (AGP) kann effizienteres Entsugaren ausführen, wenn Ihre Bibliothek Java 8- oder höher-Sprachfunktionen verwendet, wodurch die Build-Zeit für Ihre Nutzer verkürzt wird.
  • Ihre Bibliothek kann die Veröffentlichung von Varianten verwenden und Funktionen wie Test-Displays enthalten.

Durch die direkte Verteilung von automatisch angewendeten Empfehlungen erhalten Nutzer keine Informationen über die Identität, die Version oder die Abhängigkeiten Ihrer Bibliothek. Bei der Veröffentlichung in einem Repository erfolgt die Verteilung über eine separate Datei, die Teil des Repository-Mechanismus ist. Bei Maven-Repositories ist dies die POM-Datei. Daher wird dringend empfohlen, Bibliotheken mithilfe von Repositories zu veröffentlichen, anstatt AAR-Dateien manuell zu verteilen.

Arten von Repositories

Es gibt drei Arten von Repositories:

  • Mit kostenlosen Online-Repositories wie Maven Central kann jeder Bibliotheken hoch- und herunterladen.
  • Private Repositories mit Zugriff über Anmeldung ermöglichen die kontrollierte Verteilung privater Bibliotheken.
  • Lokale, ordnerbasierte Repositories ermöglichen die Verteilung von Bibliotheken durch manuelle Downloads.

Die Verwendung lokaler, ordnerbasierter Repositories ist vergleichbar mit der Bereitstellung eines Links zum manuellen Herunterladen des AAE für Ihre Nutzer oder dem Senden von AAE per E-Mail. Der Hauptunterschied besteht darin, dass nicht nur AAE gesendet wird, sondern auch zusätzliche Informationen zu Identität, Version und Abhängigkeiten.

Sie verteilen eine ZIP-Datei des ordnerbasierten Repositorys, das Ihre automatisch angewendeten Empfehlungen und die Metadaten enthält. Ihre Nutzer können dann den Inhalt der Datei extrahieren, sie ihrem Projekt hinzufügen und Gradle darauf verweisen. Ab diesem Zeitpunkt können die Nutzer mithilfe von Maven-Koordinaten eine Abhängigkeit von der Bibliothek deklarieren, als wäre die Bibliothek in einem Online-Repository, und profitieren von allen zuvor genannten Vorteilen.

Publikation erstellen

Verwenden Sie für die Veröffentlichung das Gradle Maven Publish-Plug-in. Mit dem Maven Publish-Plug-in können Sie Publikationen und Repositories deklarieren und Aufgaben zum Veröffentlichen dieser Publikationen in den Repositories erstellen. Diese Publikationen nutzen eine SoftwareComponent-Instanz, die vom Plug-in erstellt wird, das den Build erstellt. Das kann das Plug-in AGP oder java-library sein.

Wenn Sie das Maven Publish-Plug-in mit AGP ausführen, werden die Softwarekomponenten nicht direkt beim Anwenden des Plug-ins erstellt. Sie werden stattdessen im Callback-Schritt afterEvaluate() erstellt. Daher muss die Publikation, in der die Softwarekomponente ausgewählt wird, auch während des Schritts afterEvaluate() konfiguriert werden.

Mit dem folgenden Code-Snippet der Datei build.gradle auf Modulebene wird eine Publikation für eine bestimmte Variante erstellt, die mit singleVariant() oder multipleVariants() erstellt wurde:

Groovig

publishing {
  publications {
    release(MavenPublication) {
      groupId = 'com.my-company'
      artifactId = 'my-library'
      version = '1.0'

      afterEvaluate {
        from components.release
      }
    }
  }
}

Kotlin

publishing {
  publications {
    register<MavenPublication>("release") {
      groupId = "com.my-company"
      artifactId = "my-library"
      version = "1.0"

      afterEvaluate {
        from(components["release"])
      }
    }
  }
}

Im vorherigen Beispiel basiert der Name der Komponente (components.release) auf dem Namen, der singleVariant() oder multipleVariants() zugewiesen wurde.

Nachdem Sie eine Publikation deklariert haben, müssen Sie ein Ziel-Repository erstellen.

In einem lokalen Repository veröffentlichen

Die Veröffentlichung in einem lokalen Repository ähnelt der Veröffentlichung in einem Remote-Repository, mit Ausnahme der Repository-Deklaration. Im vorherigen Abschnitt erfahren Sie, wie Sie eine Publikation in einem Remote-Repository veröffentlichen, um eine Publikation zu erstellen, in der die gewünschte(n) Variante(n) veröffentlicht wird. Erstellen Sie dann ein lokales Repository:

Groovig

publishing {
  publications {
    release(MavenPublication) {
      ...
    }
  }
  repositories {
    maven {
      name = 'myrepo'
      url = "${project.buildDir}/repo"
    }
  }
}

Kotlin

publishing {
  publications {
    register<MavenPublication>("release") {
      ...
    }
  }
  repositories {
    maven {
      name = "myrepo"
      url = uri("${project.buildDir}/repo")
    }
  }
}

Dadurch wird eine Aufgabe mit dem Namen publishReleaseToMyRepoRepository erstellt, die aus dem Namen der Publikation und dem Namen des Repositorys besteht. Führen Sie diese Aufgabe aus, um das Repository am angegebenen Speicherort zu generieren. In diesem Beispiel wird das Repository im Build-Ordner des Projekts in einem repo-Verzeichnis generiert.

Wenn Sie automatisch eine ZIP-Datei des Repositorys generieren möchten, können Sie dies mit dem folgenden Code tun:

Groovig

tasks.register('generateRepo', Zip) {
  def publishTask = tasks.named('publishReleasePublicationToMyrepoRepository')
  from publishTask.map { it.getRepository().getUrl() }
  into 'mylibrary'
  archiveFileName.set('mylibrary.zip')
}

Kotlin

tasks.register<Zip>("generateRepo") {
  val publishTask = tasks.named(
    "publishReleasePublicationToMyrepoRepository",
    PublishToMavenRepository::class.java)
  from(publishTask.map { it.repository.url })
  into("mylibrary")
  archiveFileName.set("mylibrary.zip")
}

Mit diesem Code wird eine Zip-Aufgabe namens generateRepo erstellt, die den Inhalt der Veröffentlichungsaufgabe verarbeitet und komprimiert. Dabei wird sichergestellt, dass sich die ZIP-Einträge in einem Ordner auf oberster Ebene namens mylibrary befinden. Die Ausgabe befindet sich unter build/distributions.