Configura distribuzione condizionale

L'invio condizionale ti consente di impostare determinati requisiti di configurazione del dispositivo per scaricare automaticamente i moduli delle funzionalità durante l'installazione dell'app. Ad esempio, puoi configurare un modulo delle funzionalità che include disponibili per la realtà aumentata (AR) al momento dell'installazione dell'app per che supportano l'AR.

Questo meccanismo di invio al momento supporta il controllo del download di un modulo al momento dell'installazione dell'app in base alle seguenti configurazioni dei dispositivi:

Se un dispositivo non soddisfa tutti i requisiti specificati, il modulo non scaricati al momento dell'installazione dell'app. Tuttavia, la tua app potrebbe richiedere in un secondo momento scaricare il modulo on demand usando l'app Play Core l'SDK.

Prima di iniziare, assicurati di utilizzare Android Studio 3.5 o versioni successive. La le sezioni seguenti spiegano come aggiungere il supporto della consegna condizionale al tuo moduli delle funzionalità.

Aggiungi un nuovo modulo con opzioni di consegna condizionale

Il modo più semplice per creare un nuovo modulo di funzionalità con pubblicazione condizionale è la procedura guidata Nuovo modulo, come segue:

  1. Per aprire la finestra di dialogo Nuovo modulo, seleziona File > Nuovo > Nuovo modulo di sulla barra dei menu.
  2. Nella finestra di dialogo Nuovo modulo, seleziona Modulo di funzionalità dinamiche e fai clic su Avanti.
  3. Configura il modulo come faresti normalmente e fai clic su Avanti.
  4. Nella sezione Opzioni di download del modulo, completa quanto segue:

    1. Specifica il titolo del modulo utilizzando fino a 50 caratteri. La piattaforma utilizza questo titolo per identificare il modulo per gli utenti quando, ad esempio, confermando se l'utente vuole scaricare il modulo. Per questo motivo, il modulo di base dell'app deve includere il titolo del modulo come stringa di risorsa, che hai possono tradurre. Quando crei il modulo usando Android Studio, l'IDE aggiunge la risorsa di stringa al modulo di base per te e inserisce la seguente nel manifest del modulo delle funzionalità:

      <dist:module
          ...
          dist:title="@string/feature_title">
      </dist:module>
      
    2. Nel menu a discesa in Inclusione al momento dell'installazione, seleziona Solo includere il modulo al momento dell'installazione dell'app per i dispositivi con funzionalità specificate, che crea un modulo incluso nella tua app solo al momento dell'installazione dell'app dispositivi con determinate configurazioni che puoi specificare, ad esempio caratteristiche o paese. Android Studio inserisce i seguenti elementi nel manifest in modo da riflettere la tua scelta:

      <dist:module ... >
        <dist:delivery>
            <dist:install-time>
                <dist:conditions>
                    <!-- If you specify conditions, as described in the steps
                         below, the IDE includes them here. -->
                </dist:conditions>
            </dist:install-time>
        </dist:delivery>
      </dist:module>
      
    3. Se vuoi limitare il download automatico del modulo a determinati paesi, Un livello API minimo, fai clic su Fine per completare la creazione del modulo, quindi leggi la sezione su come specifica le condizioni in base al paese oppure livello API minimo. In caso contrario, fai clic su + funzionalità del dispositivo per aggiungere una funzionalità che un dispositivo richiede per scaricare il modulo al momento dell'installazione.

    4. Accanto a device-feature, seleziona una delle seguenti opzioni dalla menu a discesa e specifica il relativo valore:

      • Nome:consente di specificare un hardware o un software funzione richiesta da un dispositivo per scaricare il modulo all'indirizzo al momento dell'installazione. Le funzionalità supportate dalla pubblicazione condizionale sono uguali a quelle elencate come costanti FEATURE_* per PackageManager Se selezioni questa opzione, inizia a digitare qualsiasi parte del valore costante la funzionalità, come "bluetooth", nel campo accanto al menu a discesa e seleziona uno dei suggerimenti visualizzati.
      • Versione di OpenGL ES: ti consente di specificare una versione di OpenGL ES che richiede un dispositivo per scaricare il modulo al momento dell'installazione. Se seleziona questa opzione e inizia a digitare la versione, ad esempio "0x00030001", campo accanto al menu a discesa e seleziona uno dei suggerimenti che vengono visualizzate.
    5. Se vuoi aggiungere più condizioni in base alle funzionalità disponibili del dispositivo, Fai clic su + funzionalità del dispositivo per ogni condizione delle funzionalità del dispositivo che vuoi specificare.

    6. Seleziona la casella accanto a Fondazione se vuoi che questo modulo sia disponibile ai dispositivi con Android 4.4 (livello API 20) e versioni precedenti e inclusi APK multipli. Ciò significa che puoi abilitare il comportamento on demand per questo modulo e disattiva la fusione per ometterla dai dispositivi che non supportano scaricare e installare APK divisi. Android Studio inserisce il nel file manifest del modulo per riflettere la tua scelta:

      <dist:module ...>
          <dist:fusing dist:include="true | false" />
      </dist:module>
      
  5. Dopo aver configurato le opzioni di download del modulo, fai clic su Fine.

Tieni presente che il plug-in Android per Gradle non supporta l'esecuzione lint dai moduli di funzionalità dinamiche. Esecuzione del lint dal il modulo dell'applicazione corrispondente eseguirà lint sui relativi moduli di funzionalità dinamiche e includere tutti i problemi nel report Lint dell'app.

Aggiungere opzioni di pubblicazione condizionale a un modulo delle funzionalità esistente

Puoi aggiungere facilmente opzioni di consegna condizionale a una funzionalità esistente modulo tramite il manifest del modulo. Tuttavia, ti consigliamo di leggere innanzitutto compatibilità delle opzioni di consegna condizionale con altre le opzioni di pubblicazione che potresti avere già attivato.

Per iniziare, devi prima eseguire la migrazione del manifest al nuovo Elemento <dist:delivery>. Lo snippet di codice riportato di seguito mostra un esempio della versione sintassi:

<!-- This is the old syntax. -->
<dist:module
  dist:title="@string/feature_title" dist:onDemand="true">
  <dist:fusing dist:include="true"/>
</dist:module>

Le opzioni di pubblicazione riportate sopra sono ora specificate come segue.

<dist:module
  dist:title="@string/feature_title">
  <dist:delivery>
      <dist:on-demand/>
  </dist:delivery>
  <dist:fusing dist:include="true"/>
</dist:module>

Puoi quindi includere opzioni di consegna condizionale in base alle funzionalità del dispositivo come .

<dist:module
    dist:title="@string/feature_title">
    <dist:delivery>
      <dist:on-demand/>
      <dist:install-time>
        <dist:conditions>
          <!-- Requires that the device support AR to download the module at
          app install-time.  -->
          <dist:device-feature dist:name="android.hardware.camera.ar"/>
        </dist:conditions>
      </dist:install-time>
    </dist:delivery>
    <dist:fusing dist:include="true"/>
</dist:module>

Le sezioni seguenti descrivono altre opzioni di pubblicazione condizionale, ad esempio per paese o livello API minimo.

Compatibilità con altre opzioni di download dei moduli

Poiché i moduli di funzionalità offrono più opzioni per configurare il modo di Google Cloud viene fornita sul dispositivo di un utente, è importante capire in che modo le opzioni di pubblicazione condizionale sono influenzate da altre impostazioni. La tabella seguente riassume la compatibilità della consegna condizionale con il download di altri moduli le opzioni di CPU e memoria disponibili.

Opzione di download del modulo Compatibilità con la consegna condizionale
Fusione (<dist:fusing dist:include="true"/>) Se un modulo imposta questa opzione su true, Google Play non rispetta le opzioni di consegna condizionale specificate durante il deployment dell'app su dispositivi con livello API 19 o precedente. In altre parole, i moduli delle funzionalità che abilitano il fusing sono sempre inclusi al momento dell'installazione per i dispositivi con livello API 19 o precedente.
Ad attivazione istantanea (<dist:module dist:instant="true"/>) Le opzioni di pubblicazione condizionale non sono supportate per i moduli delle funzionalità ad attivazione istantanea.
On demand (<dist:on-demand/>) Per impostazione predefinita, se specifichi le opzioni di consegna condizionale, il modulo è disponibile anche on demand.

Specifica le condizioni in base al paese

La consegna condizionale ti consente inoltre di specificare in quali paesi escludere (o includere) dal download del modulo al momento dell'installazione dell'app. Specificare questa condizione può essere utile se, ad esempio, il tuo modulo implementa un metodo di pagamento che non è disponibile in alcune regioni.

In questo contesto, il paese del dispositivo è generalmente determinato dalla all'indirizzo di fatturazione registrato sul proprio account Google Play.

Per specificare i paesi per il modulo, includi quanto segue nella funzione manifest del modulo.

<dist:conditions>
   <!-- Set to "true" to specify countries to exclude from downloading
   this module at app install-time. By default, modules are available
   for download to all user countries. -->
  <dist:user-countries dist:exclude="true">
    <!-- Specifies the two-letter  CLDR country code for regions that should
    not download the module at app install-time. -->
    <dist:country dist:code="CN"/>
    <dist:country dist:code="HK"/>
  </dist:user-countries>
</dist:conditions>

Specifica le condizioni per il livello API

Specificare una condizione in base al livello API di un dispositivo può essere utile se una delle funzionalità dipende dalle API disponibili solo in alcuni le versioni più recenti della piattaforma Android.

Per impostare una condizione basata su un livello API minimo o massimo del dispositivo, includi il parametro nel file manifest del modulo delle funzionalità.

<dist:conditions>
    <!-- Specifies the minimum API level that the device must satisfy
         in order to download your module at app install-time. The API level you
         specify must be greater or equal to the module's own minSdkVersion. -->
   <dist:min-sdk dist:value="21"/>
    <!-- Specifies the maximum API level that the device cannot exceed
         in order to download your module at app install-time. The API level you
         specify must be less than or equal to the module's own maxSdkVersion. -->
   <dist:max-sdk dist:value="24"/>
</dist:conditions>