Filtri su Google Play

Quando un utente cerca o sfoglia app da scaricare su Google Play, i risultati vengono filtrati in base alle applicazioni compatibili con il dispositivo. Ad esempio, se un'app richiede una fotocamera, Google Play non la mostrerà ai dispositivi che non ne hanno una. Questo filtro aiuta gli sviluppatori a gestire la distribuzione delle loro app e a garantire la migliore esperienza possibile per gli utenti.

Il filtro in Google Play si basa su diversi tipi di metadati e impostazioni di configurazione delle app, tra cui dichiarazioni manifest, librerie richieste, dipendenze dell'architettura e controlli di distribuzione impostati in Google Play Console, come il targeting geografico, i prezzi e altro ancora.

Il filtro di Google Play si basa in parte sulle dichiarazioni manifest e su altri aspetti del framework Android, ma i comportamenti di filtro effettivi sono distinti dal framework e non sono legati a livelli API specifici. Questo documento specifica le regole di filtro correnti utilizzate da Google Play.

Come funzionano i filtri su Google Play

Google Play utilizza le restrizioni dei filtri descritte di seguito per determinare se mostrare la tua applicazione a un utente che sta cercando o sfogliando app dall'app Google Play.

Per decidere se mostrare la tua app, Google Play controlla i requisiti hardware e software del dispositivo, nonché l'operatore, la posizione e altre caratteristiche. Poi li confronta con le limitazioni e le dipendenze espresse dal file manifest e dai dettagli di pubblicazione dell'applicazione.

Se l'applicazione è compatibile con il dispositivo in base alle regole di filtro, Google Play la mostra all'utente. In caso contrario, Google Play nasconde la tua applicazione dai risultati di ricerca e dalla navigazione nelle categorie, anche se un utente richiede specificamente l'app facendo clic su un link diretto che rimanda direttamente all'ID dell'app all'interno di Google Play.

Puoi utilizzare qualsiasi combinazione dei filtri disponibili per la tua app. Ad esempio, puoi impostare un requisito minSdkVersion di "4" e impostare smallScreens="false" nell'app, quindi, quando carichi l'app su Google Play, puoi scegliere come target solo i paesi europei (operatori). I filtri di Google Play impediranno quindi che l'applicazione sia disponibile su qualsiasi dispositivo che non soddisfi tutti e tre questi requisiti.

Tutte le limitazioni di filtro sono associate alla versione di un'applicazione e possono cambiare da una versione all'altra. Ad esempio, se un utente ha installato la tua applicazione e pubblichi un update che rende l'app invisibile all'utente, quest'ultimo non vedrà che è disponibile un aggiornamento.

Filtri sul sito web di Google Play

Quando gli utenti visitano il sito web di Google Play, possono vedere tutte le applicazioni pubblicate. Tuttavia, il sito web di Google Play confronta i requisiti dell'applicazione con ciascuno dei dispositivi registrati dell'utente per verificarne la compatibilità e consente di installare l'applicazione solo se è compatibile con il dispositivo.

Filtri in base al file manifest dell'app

La maggior parte dei filtri viene attivata dagli elementi all'interno del file manifest di un'applicazione, AndroidManifest.xml (anche se non tutti gli elementi del file manifest possono attivare il filtro). La tabella 1 elenca gli elementi manifest da utilizzare per attivare il filtro e spiega come funziona il filtro per ciascun elemento.

Tabella 1. Elementi manifest che attivano il filtro su Google Play.

Elemento manifest Nome filtro Come funziona
<supports-screens> Dimensioni schermo

Un'applicazione indica le dimensioni dello schermo che è in grado di supportare impostando gli attributi dell'elemento <supports-screens>. Quando l'applicazione viene pubblicata, Google Play utilizza questi attributi per determinare se mostrare l'applicazione agli utenti in base alle dimensioni dello schermo dei loro dispositivi.

Come regola generale, Google Play presuppone che la piattaforma sul dispositivo possa adattare i layout più piccoli agli schermi più grandi, ma non possa adattare i layout più grandi agli schermi più piccoli. Pertanto, se un'applicazione dichiara il supporto solo per le dimensioni dello schermo "normali", Google Play rende l'applicazione disponibile sia per i dispositivi con schermo normale che per quelli con schermo grande, ma la filtra in modo che non sia disponibile per i dispositivi con schermo piccolo.

Se un'applicazione non dichiara attributi per <supports-screens>, Google Play utilizza i valori predefiniti per questi attributi, che variano in base al livello API. Nello specifico:

  • Per le applicazioni che impostano android: minSdkVersion o android: targetSdkVersion su 3 o meno, l'elemento <supports-screens> stesso non è definito e non sono disponibili attributi. In questo caso, Google Play presume che l'applicazione sia progettata per schermi di dimensioni normali e la mostra su dispositivi con schermi normali o più grandi.
  • Quando android: minSdkVersion o android: targetSdkVersion è impostato su 4 o superiore, il valore predefinito per tutti gli attributi è "true". In questo modo, l'applicazione è considerata supportare tutte le dimensioni dello schermo per impostazione predefinita.

Esempio 1
Il file manifest dichiara <uses-sdk android:minSdkVersion="3"> e non include un elemento <supports-screens>. Risultato: Google Play non mostrerà l'app a un utente di un dispositivo con schermo piccolo, ma la mostrerà agli utenti di dispositivi con schermo normale e grande, a meno che non vengano applicati altri filtri.

Esempio 2
Il manifest dichiara <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="4"> e non include un elemento <supports-screens>. Risultato: Google Play mostrerà l'app agli utenti su tutti i dispositivi, a meno che non vengano applicati altri filtri.

Esempio 3
Il manifest dichiara <uses-sdk android:minSdkVersion="4"> e non include un elemento <supports-screens>. Risultato: Google Play mostrerà l'app a tutti gli utenti, a meno che non vengano applicati altri filtri.

Per ulteriori informazioni su come dichiarare il supporto per le dimensioni dello schermo nella tua applicazione, consulta <supports-screens> e Supportare più schermi.

<uses-configuration> Configurazione dispositivo:
tastiera, navigazione, touch screen

Un'applicazione può richiedere determinate funzionalità hardware e Google Play mostrerà l'app solo sui dispositivi con l'hardware richiesto.

Esempio 1
Il manifest include <uses-configuration android:reqFiveWayNav="true" /> e un utente sta cercando app su un dispositivo che non dispone di un controllo di navigazione a cinque direzioni. Risultato: Google Play non mostrerà l'app all'utente.

Esempio 2
Il file manifest non include un elemento <uses-configuration>. Risultato: Google Play mostrerà l'app a tutti gli utenti, a meno che non vengano applicati altri filtri.

Per maggiori dettagli, vedi <uses-configuration>.

<uses-feature> Funzionalità del dispositivo
(name)

Un'applicazione può richiedere la presenza di determinate funzionalità sul dispositivo. Questa funzionalità è stata introdotta in Android 2.0 (livello API 5).

Esempio 1
Il file manifest include <uses-feature android:name="android.hardware.sensor.light" /> e un utente sta cercando app su un dispositivo che non ha un sensore di luce. Risultato: Google Play non mostrerà l'app all'utente.

Esempio 2
Il file manifest non include un elemento <uses-feature>. Risultato: Google Play mostrerà l'app a tutti gli utenti, se non vengono applicati altri filtri.

Per informazioni complete, vedi <uses-feature> .

Filtro in base alle funzionalità implicite:in alcuni casi, Google Play interpreta le autorizzazioni richieste tramite gli elementi <uses-permission> come requisiti di funzionalità equivalenti a quelli dichiarati negli elementi <uses-feature>. Vedi <uses-permission> di seguito.

Versione
OpenGL-ES (openGlEsVersion)

Un'applicazione può richiedere che il dispositivo supporti una versione specifica di OpenGL ES utilizzando l'attributo <uses-feature android:openGlEsVersion="int">.

Esempio 1
Un'app richiede più versioni OpenGL-ES specificando openGlEsVersion più volte nel manifest. Risultato: Google Play presume che l'app richieda la versione più recente tra quelle indicate.

Esempio 2
Un'app richiede la versione OpenGL-ES 1.1 e un utente sta cercando app su un dispositivo che supporta la versione OpenGL-ES 2.0. Risultato: Google Play mostrerà l'app all'utente, a meno che non vengano applicati altri filtri. Se un dispositivo segnala di supportare la versione OpenGL-ES X, Google Play presume che supporti anche qualsiasi versione precedente a X.

Esempio 3
Un utente sta cercando app su un dispositivo che non segnala una versione OpenGL-ES (ad esempio un dispositivo con Android 1.5 o versioni precedenti). Risultato: Google Play presume che il dispositivo supporti solo OpenGL-ES 1.0. Google Play mostrerà solo le app utente che non specificano openGlEsVersion o le app che non specificano una versione OpenGL-ES superiore a 1.0.

Esempio 4
Il manifest non specifica openGlEsVersion. Risultato: Google Play mostrerà l'app a tutti gli utenti, a meno che non vengano applicati altri filtri.

Per maggiori dettagli, vedi <uses-feature>.

<uses-library> Librerie software

Un'applicazione può richiedere la presenza di librerie condivise specifiche sul dispositivo.

Esempio 1
Un'app richiede la libreria com.google.android.maps e un utente sta cercando app su un dispositivo che non ha la libreria com.google.android.maps. Risultato: Google Play non mostrerà l'app all'utente.

Esempio 2
Il manifest non include un elemento <uses-library>. Risultato: Google Play mostrerà l'app a tutti gli utenti, a meno che non vengano applicati altri filtri.

Per maggiori dettagli, vedi <uses-library>.

<uses-permission>  

Google Play non applica filtri in base agli elementi<uses-permission>. Tuttavia, legge gli elementi per determinare se l'applicazione ha requisiti relativi alle funzionalità hardware che potrebbero non essere stati dichiarati correttamente negli elementi <uses-feature>. Ad esempio, se un'applicazione richiede l'autorizzazione CAMERA, ma non dichiara un elemento <uses-feature> per android.hardware.camera, Google Play ritiene che l'applicazione richieda una fotocamera e non debba essere mostrata agli utenti i cui dispositivi non dispongono di una fotocamera.

In generale, se un'applicazione richiede autorizzazioni correlate all'hardware, Google Play presume che l'applicazione richieda le funzionalità hardware di base, anche se potrebbero non essere presenti dichiarazioni corrispondenti a <uses-feature>. Google Play imposta quindi il filtro in base alle funzionalità implicite nelle dichiarazioni <uses-feature>.

Per un elenco delle autorizzazioni che implicano funzionalità hardware, consulta la documentazione relativa all'elemento <uses-feature>.

<uses-sdk> Versione minima del framework (minSdkVersion)

Un'applicazione può richiedere un livello API minimo.

Esempio 1
Il manifest include <uses-sdk android:minSdkVersion="3"> e l'app utilizza le API introdotte nel livello API 3. Un utente sta cercando app su un dispositivo con livello API 2. Risultato: Google Play non mostrerà l'app all'utente.

Esempio 2
Il file manifest non include minSdkVersion e l'app utilizza API introdotte nel livello API 3. Un utente sta cercando app su un dispositivo con livello API 2. Risultato: Google Play presume che minSdkVersion sia "1" e che l'app sia compatibile con tutte le versioni di Android. Google Play mostra l'app all'utente e gli consente di scaricarla. L'app si arresta in modo anomalo in fase di esecuzione.

Poiché vuoi evitare questo secondo scenario, ti consigliamo di dichiarare sempre un minSdkVersion. Per maggiori dettagli, vedi android:minSdkVersion.

Versione massima del framework (maxSdkVersion)

Deprecato. Android 2.1 e versioni successive non controllano né applicano l'attributo maxSdkVersion e l'SDK non verrà compilato se maxSdkVersion è impostato nel file manifest di un'app. Per i dispositivi già compilati con maxSdkVersion, Google Play lo rispetterà e lo utilizzerà per i filtri.

La dichiarazione di maxSdkVersion non è consigliata. Per maggiori dettagli, vedi android:maxSdkVersion.

Filtri manifest avanzati

Oltre agli elementi manifest nella tabella 1, Google Play può anche filtrare le applicazioni in base agli elementi manifest avanzati nella tabella 2.

Questi elementi manifest e il filtraggio che attivano sono destinati solo a casi d'uso eccezionali. Sono progettati per determinati tipi di giochi ad alte prestazioni e applicazioni simili che richiedono controlli rigorosi sulla distribuzione delle applicazioni. La maggior parte delle applicazioni non dovrebbe mai utilizzare questi filtri.

Tabella 2. Elementi manifest avanzati per il filtro di Google Play.

Elemento manifestRiepilogo
<compatible-screens>

Google Play filtra l'applicazione se le dimensioni e la densità dello schermo del dispositivo non corrispondono a nessuna delle configurazioni dello schermo (dichiarate da un elemento <screen>) nell'elemento <compatible-screens>.

Attenzione: in genere non devi utilizzare questo elemento manifest. L'utilizzo di questo elemento può ridurre notevolmente la potenziale base utenti della tua applicazione, escludendo tutte le combinazioni di dimensioni e densità dello schermo che non hai elencato. Devi invece utilizzare l'elemento manifest <supports-screens> (descritto sopra nella tabella 1) per attivare la modalità di compatibilità dello schermo per le configurazioni dello schermo che non hai preso in considerazione con risorse alternative.

<supports-gl-texture>

Google Play filtra l'applicazione, a meno che uno o più dei formati di compressione delle texture GL supportati dall'applicazione non siano supportati anche dal dispositivo.

Altri filtri

Google Play utilizza altre caratteristiche dell'applicazione per determinare se mostrare o nascondere un'applicazione per un determinato utente su un determinato dispositivo, come descritto nella tabella seguente.

Tabella 3. Caratteristiche di pubblicazione e dell'applicazione che influiscono sui filtri su Google Play.

Nome filtro Come funziona
Stato di pubblicazione

Solo le applicazioni pubblicate verranno visualizzate nelle ricerche e nella navigazione all'interno di Google Play.

Anche se un'app non è pubblicata, può essere installata se gli utenti possono visualizzarla nell'area Download tra le app acquistate, installate o disinstallate di recente.

Se un'applicazione è stata sospesa, gli utenti non potranno reinstallarla o aggiornarla, anche se è visualizzata nella sezione Download.

Stato del prezzo

Non tutti gli utenti possono vedere le app a pagamento. Per mostrare le app a pagamento, un dispositivo deve avere Android 1.1 o versioni successive ed essere in un paese in cui sono disponibili le app a pagamento. Se un dispositivo ha una scheda SIM, è l'operatore della scheda a determinare se le app a pagamento sono disponibili. Se un dispositivo non ha una scheda SIM, viene utilizzato il suo indirizzo IP per determinare se si trova in un paese in cui sono disponibili app a pagamento.

Targeting per paese

Quando carichi la tua app su Google Play, puoi selezionare i paesi in cui distribuirla nella sezione Prezzi e distribuzione. L'app sarà quindi disponibile solo per gli utenti dei paesi selezionati.

Architettura CPU (ABI)

Un'applicazione che include librerie native destinate a un'architettura CPU specifica (ad esempio ARM EABI v7 o x86) è visibile solo sui dispositivi che supportano quell'architettura. Per informazioni dettagliate sull'NDK e sull'utilizzo delle librerie native, consulta Che cos'è Android NDK?

Applicazioni protette dalla copia

Google Play non supporta più la funzionalità di protezione da copia in Play Console e non filtra più le app in base a questa funzionalità. Per proteggere la tua app, utilizza Application Licensing. Per ulteriori informazioni, consulta la sezione Sostituto della protezione anticopia.

Pubblicazione di più APK con filtri diversi

Alcuni filtri specifici di Google Play ti consentono di pubblicare più APK per la stessa applicazione al fine di fornire un APK diverso a configurazioni di dispositivi diverse. Ad esempio, se stai creando un videogioco che utilizza asset grafici ad alta fedeltà, ti consigliamo di creare due APK che supportano ciascuno formati di compressione delle texture diversi. In questo modo, puoi ridurre le dimensioni del file APK includendo solo le texture richieste per ogni configurazione del dispositivo. A seconda del supporto dei formati di compressione delle texture di ciascun dispositivo, Google Play fornirà l'APK che hai dichiarato di supportare per quel dispositivo.

Al momento, Google Play ti consente di pubblicare più APK per la stessa applicazione solo se ogni APK fornisce filtri diversi in base alle seguenti configurazioni:

  • Formati di compressione delle texture OpenGL

    Utilizzando l'elemento <supports-gl-texture>.

  • Dimensioni dello schermo (e, facoltativamente, densità dello schermo)

    Utilizzando l'elemento <supports-screens> o <compatible-screens>.

  • Livello API

    Utilizzando l'elemento <uses-sdk>.

  • Architettura CPU (ABI)

    Includendo librerie native create con l'NDK Android che hanno come target un'architettura della CPU specifica (ad esempio ARM EABI v7 o x86).

Tutti gli altri filtri funzionano come al solito, ma questi quattro sono gli unici che possono distinguere un APK da un altro all'interno della stessa scheda dell'applicazione su Google Play. Ad esempio, non puoi pubblicare più APK per la stessa applicazione se gli APK differiscono solo in base al fatto che il dispositivo abbia o meno una fotocamera.

Attenzione: la pubblicazione di più APK per la stessa applicazione è considerata una funzionalità avanzata e la maggior parte delle applicazioni dovrebbe pubblicare un solo APK che supporti una vasta gamma di configurazioni di dispositivi. La pubblicazione di più APK richiede di seguire regole specifiche all'interno dei filtri e di prestare particolare attenzione ai codici versione di ogni APK per garantire percorsi di aggiornamento appropriati per ogni configurazione.

Per ulteriori informazioni su come pubblicare più APK su Google Play, leggi l'articolo Supporto di più APK.

Vedi anche

  1. Compatibilità con Android
  2. Supporto di più APK