Carica la tua raccolta

Per concedere l'accesso alla tua libreria, devi scegliere un repository. In questa pagina vengono illustrate le considerazioni relative alla scelta di un tipo di repository e viene spiegato come creare una pubblicazione utilizzando il plug-in di pubblicazione Maven.

Prima di caricare la raccolta, assicurati di aver preparato la raccolta per il release e configurato eventuali varianti della pubblicazione o dispositivi di test necessari.

Scegli un tipo di repository

Le librerie vengono pubblicate come file AAR. Questi file contengono codice compilato sotto forma di bytecode e librerie native, un manifest Android e risorse. Il pacchetto stesso non dichiara alcuna identità, versione o dipendenza da altre librerie.

Fornire AAR tramite un repository è in genere la best practice, piuttosto che distribuire direttamente gli AAR. Aiuta gli utenti a capire meglio da dove proviene la libreria, anziché dover gestire un file name.aar senza dettagli importanti, come la versione. Quando esegui l'upgrade a una versione più recente di una libreria, utilizza un repository per assicurarti che vengano aggiunte solo le dipendenze richieste della versione più recente, in modo che gli utenti non debbano aggiornare manualmente le dipendenze.

L'utilizzo di un repository per pubblicare la raccolta offre diversi vantaggi:

  • Gradle può aggiungere automaticamente le dipendenze della tua libreria al grafico delle dipendenze.
  • Gradle può garantire che una singola versione della tua libreria sia inclusa nel grafico delle dipendenze, risolvendo i conflitti se la libreria è inclusa in modo transitivo più volte con versioni diverse.
  • Il plug-in Android per Gradle (AGP) può eseguire il deprovisioning in modo più efficiente se la tua libreria utilizza funzionalità del linguaggio Java 8 o versioni successive, riducendo i tempi di creazione per gli utenti.
  • La tua raccolta può usare la pubblicazione delle varianti e includere funzionalità come gli apparecchi di prova.

La distribuzione diretta dell'AAR non fornisce all'utente informazioni relative all'identità, alla versione o alle dipendenze della libreria. Quando pubblichi in un repository, la distribuzione viene gestita da un file separato che fa parte del meccanismo del repository. Per i repository Maven, questo è il file POM. Di conseguenza, ti consigliamo vivamente di pubblicare librerie utilizzando i repository anziché distribuire manualmente i file AAR.

Tipi di repository

Esistono tre tipi di repository:

  • I repository online senza costi, come Maven Central, consentono a chiunque di caricare e scaricare librerie.
  • I repository privati, con accesso tramite accesso, consentono la distribuzione controllata delle librerie private.
  • I repository locali basati su cartelle consentono la distribuzione delle librerie tramite download manuale.

L'utilizzo di repository locali basati su cartelle è molto simile a fornire agli utenti un link per il download manuale dell'AAR o a inviare l'AAR via email. La differenza principale è che non stai inviando solo l'AAR, ma anche le informazioni aggiuntive su identità, versione e dipendenze.

Devi distribuire un file ZIP del repository basato su cartelle contenente il tuo AAR più i metadati. Gli utenti possono quindi estrarre i contenuti del file, aggiungerli al loro progetto e indicarvi Gradle. Da quel momento in poi, gli utenti possono dichiarare una dipendenza dalla libreria utilizzando le coordinate Maven, come se la libreria si trovasse in un repository online, e trarre vantaggio da tutti i vantaggi indicati in precedenza.

Crea la pubblicazione

Pubblicazione mediante il plug-in Gradle Maven Publish. Il plug-in Maven Publish ti consente di dichiarare pubblicazioni e repository e crea attività per pubblicare queste pubblicazioni nei repository. Queste pubblicazioni utilizzano un'istanza SoftwareComponent creata dal plug-in che gestisce la build, che potrebbe essere AGP o il plug-in java-library.

Tieni presente che quando esegui il plug-in Maven Publish con AGP, i componenti software non vengono creati direttamente quando viene applicato il plug-in. Vengono invece creati durante il passaggio di callback di afterEvaluate(). Di conseguenza, la pubblicazione che seleziona il componente software deve essere configurata anche durante il passaggio afterEvaluate().

Il seguente snippet di codice del file build.gradle a livello di modulo crea una pubblicazione per una determinata variante creata con singleVariant() o multipleVariants():

Trendy

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"])
      }
    }
  }
}

Nell'esempio precedente, il nome del componente (components.release) si basa sul nome assegnato a singleVariant() o multipleVariants().

Dopo aver dichiarato una pubblicazione, devi creare un repository di destinazione.

Pubblica in un repository locale

La pubblicazione su un repository locale è molto simile a quella su un repository remoto, ad eccezione della dichiarazione del repository. Leggi la sezione precedente per scoprire come pubblicare in un repository remoto per creare una pubblicazione che pubblichi la o le varianti desiderate. Quindi crea un repository locale:

Trendy

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")
    }
  }
}

Viene creata un'attività denominata publishReleaseToMyRepoRepository, composta dal nome della pubblicazione e dal nome del repository. Esegui questa attività per generare il repository nella località specificata. In questo esempio, il repository viene generato all'interno della cartella di build del progetto, in una directory repo.

Se vuoi generare automaticamente un file ZIP del repository, utilizza il seguente codice:

Trendy

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")
}

Questo codice crea un'attività Zip denominata generateRepo che consuma i contenuti dell'attività di pubblicazione e li comprime, garantendo che le voci ZIP siano in una cartella di primo livello denominata mylibrary. L'output si trova in build/distributions.