Preparare la raccolta per il rilascio

In questa pagina vengono descritte le proprietà e le opzioni necessarie per preparare il tuo progetto della libreria Android per la pubblicazione utilizzando il plug-in Android Gradle (AGP). Anche se hai impostato alcune di queste proprietà all'inizio della creazione della biblioteca, consulta le seguenti indicazioni per ottimizzare le impostazioni.

Scegli uno spazio dei nomi

Le librerie Android devono dichiarare uno spazio dei nomi per poter generare una classe R univoca quando le risorse vengono compilate. Questo spazio dei nomi deve corrispondere esattamente al pacchetto della classe principale della libreria per evitare confusione quando gli utenti importano classi regolari dalla libreria e dalla relativa classe R.

A partire da AGP 7.0, puoi impostare lo spazio dei nomi nel file build.gradle dell'app, come mostrato nell'esempio di codice seguente:

Groovy

android {
  namespace = 'com.example.library'
}

Kotlin

android {
  namespace = "com.example.library"
}

Lo spazio dei nomi è una proprietà della libreria rivolta agli sviluppatori. Non è correlata all'identità dell'applicazione, che viene impostata utilizzando la proprietà applicationId.

Nelle versioni precedenti di AGP, sia la proprietà applicationId (per un'app) sia la proprietà namespace (per una libreria) potevano essere impostate utilizzando l'attributo package del manifest, il che generava confusione.

Scegli un valore minSdkVersion

La scelta di un minSdkVersion per la tua raccolta è un aspetto importante della pubblicazione. minSdkVersion dovrebbe riflettere la versione minima di Android che il tuo codice può supportare.

Tieni presente i seguenti aspetti nella scelta di un minSdkVersion:

  • In genere, la scelta di un valore minSdkVersion basso consente una distribuzione più ampia della tua libreria.

    In genere, il codice di una libreria non viene eseguito a meno che l'app non lo chiami esplicitamente. Un'app può comunque essere eseguita su una versione di Android inferiore a quella richiesta da una dipendenza della libreria, se la libreria non è essenziale per la funzionalità di base dell'app, eseguendo controlli di runtime prima di chiamare la libreria. Pertanto, imposta minSdkVersion della tua raccolta su un valore sufficientemente basso da poter essere incorporato nelle app e chiamato, se possibile, per raggiungere un maggior numero di utenti.

  • La scelta di un valore minSdkVersion elevato potrebbe impedire alle applicazioni di includere la raccolta.

    L'unione dei manifest, ovvero un passaggio in AGP che unisce i file manifest dall'app e dalle sue dipendenze, impone che nessuna dipendenza abbia un valore minSdkVersion superiore a quello dell'app.

  • La scelta di un valore minSdkVersion elevato potrebbe indurre gli sviluppatori di app a disattivare i controlli di sicurezza per l'unione del manifest, causando problemi in un secondo momento nella procedura di compilazione.

    Poiché l'unione manifest impedisce ai progetti di app di includere raccolte con un valore minSdkVersion superiore a quello dell'app stessa, gli sviluppatori di app potrebbero disattivare i controlli di sicurezza dell'unione manifest per ridurre al minimo gli errori di compilazione. Tuttavia, questo rischia di veri problemi di incompatibilità a valle.

  • La scelta di un valore minSdkVersion elevato potrebbe essere necessaria in casi speciali in cui il manifest di una raccolta include un ricevitore di trasmissione o un altro meccanismo tramite il quale il codice viene attivato automaticamente.

    In questi casi, la scelta di un valore minSdkVersion elevato garantisce l'esecuzione del codice. In alternativa, puoi disattivare il comportamento automatico in modo che l'app possa attivare l'esecuzione della libreria dopo aver eseguito i controlli corretti.

Per consentire l'incorporamento nelle app, utilizza l'annotazione RequiresApi nella libreria per indicare ai chiamanti che devono eseguire i controlli di runtime. Android Lint utilizza le informazioni RequiresApi per le sue ispezioni. Per altre risorse sull'utilizzo delle annotazioni per migliorare il codice e le API, consulta Migliorare l'ispezione del codice con le annotazioni.

Configurare i metadati dell'applicazione automatica dei consigli (AAR)

Una libreria Android è pacchettizzata sotto forma di file Archivio Android (AAR). I metadati AAR sono costituiti da proprietà che aiutano AGP a utilizzare le librerie. Se la tua libreria viene utilizzata da una configurazione incompatibile e sono configurati i metadati AAR, agli utenti viene mostrato un messaggio di errore per aiutarli a risolvere il problema.

Scegli un valore minCompileSdk

A partire dalla versione 4.1, AGP supporta minCompileSdk. Indica il valore minimo compileSdk che i progetti di consumo possono utilizzare. Se la tua libreria contiene voci manifest o risorse che utilizzano attributi della piattaforma più recenti, devi impostare questo valore.

Il valore minCompileSdk può essere impostato nei blocchi defaultConfig{}, productFlavors{} e buildTypes{} nel file build.gradle a livello di modulo:

Alla moda

android {
  defaultConfig {
    aarMetadata {
      minCompileSdk = 29
    }
  }
  productFlavors {
    foo {
      ...
      aarMetadata {
        minCompileSdk = 30
      }
    }
  }
}

Kotlin

android {
  defaultConfig {
    aarMetadata {
      minCompileSdk = 29
    }
  }
  productFlavors {
    register("foo") {
      ...
      aarMetadata {
        minCompileSdk = 30
      }
    }
  }
}

Se imposti minCompileSdk in più posizioni, Gradle dà la priorità alle posizioni delle impostazioni come segue durante il processo di compilazione:

  1. buildTypes{}

  2. productFlavors{}

  3. defaultConfig{}

Nell'esempio precedente, in cui minCompileSdk è definito sia in defaultConfig{} che in productFlavors{}, viene data la priorità a productFlavors{} e minCompileSdk è impostato su 30.

Per scoprire di più su come Gradle dà la priorità alle impostazioni quando combina codice e risorse, consulta Eseguire il build con set di origini.

Attiva i test case

I fixture di test vengono comunemente utilizzati per configurare il codice in fase di test o semplificare i test di un componente. A partire dalla versione 7.1, AGP può creare attrezzatura di test per progetti di libreria, oltre a progetti di applicazioni e funzionalità dinamiche.

Quando pubblichi una libreria per l'utilizzo da parte di altri, valuta la possibilità di creare impianti di test per l'API. I test case possono essere attivati nel file build.gradle a livello di modulo:

Groovy

android {
  testFixtures {
    enable = true
  }
}

Kotlin

android {
  testFixtures {
    enable = true
  }
}

Quando attivi i dispositivi di test, Gradle crea automaticamente un set di origine src/testFixtures in cui puoi scrivere quelli di test.

Per ulteriori informazioni, consulta la documentazione di Gradle sull'utilizzo degli impianti di test.