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 mostrerà l'app ai dispositivi senza fotocamera. Questo filtro consente agli sviluppatori di gestire la distribuzione delle loro app e a garantire la migliore esperienza possibile agli utenti.

L'applicazione di filtri in Google Play si basa su diversi tipi di metadati delle app e impostazioni di configurazione, tra cui dichiarazioni del file manifest, librerie richieste, dipendenze dell'architettura e controlli di distribuzione impostati in Google Play Console, ad esempio targeting geografico, prezzi e altro ancora.

I filtri di Google Play si basano in parte sulle dichiarazioni del file manifest e su altri aspetti del framework Android, ma i comportamenti di filtraggio effettivi sono distinti dal framework e non sono vincolati a livelli API specifici. Questo documento specifica le attuali regole di filtro utilizzate da Google Play.

Come funzionano i filtri su Google Play

Google Play utilizza le limitazioni dei filtri descritte di seguito per stabilire se mostrare la tua applicazione a un utente che naviga o cerca applicazioni dall'app Google Play.

Per stabilire se visualizzare o meno la tua app, Google Play controlla i requisiti hardware e software del dispositivo, nonché l'operatore, la località e altre caratteristiche. Quindi le confronta con le restrizioni e le dipendenze espresse dal file manifest dell'applicazione e dai dettagli di pubblicazione.

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

Puoi utilizzare qualsiasi combinazione dei filtri disponibili per la tua app. Ad esempio, puoi impostare un requisito minSdkVersion pari a "4" e impostare smallScreens="false" nell'app. Dopodiché, quando carichi l'app su Google Play, puoi scegliere come target soltanto i paesi europei (operatori). I filtri di Google Play impediranno quindi che l'applicazione sia disponibile su qualsiasi dispositivo che non soddisfa tutti e tre i 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 aggiornamento che rende l'app invisibile all'utente, l'utente non vedrà che è disponibile un aggiornamento.

Applicazione di filtri sul sito web Google Play

Quando gli utenti navigano sul sito web Google Play, possono vedere tutte le applicazioni pubblicate. Il sito web Google Play confronta però i requisiti dell'applicazione con quelli di ogni dispositivo registrato dell'utente per quanto riguarda la compatibilità e consente all'utente di installare l'applicazione solo se è compatibile con il suo dispositivo.

Filtri in base al file manifest dell'app

La maggior parte dei filtri viene attivata da elementi contenuti nel file manifest di un'applicazione, AndroidManifest.xml, anche se non tutti i contenuti del file manifest possono attivare filtri. La tabella 1 elenca gli elementi del file manifest da utilizzare per attivare l'applicazione di filtri e spiega il funzionamento del filtro per ogni elemento.

Tabella 1. Elementi manifest che attivano i filtri 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 sia in grado di adattare layout più piccoli a schermi più grandi, ma non può adattare layout più grandi a schermi più piccoli. Pertanto, se un'applicazione dichiara il supporto soltanto per dimensioni dello schermo "normali", Google Play rende l'applicazione disponibile sia per dispositivi con schermi normali che di grandi dimensioni, ma filtra l'applicazione in modo che non sia disponibile per dispositivi con schermi piccoli.

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

  • Per le applicazioni per cui il valore android: minSdkVersion o android: targetSdkVersion viene impostato su 3 o su un valore inferiore, l'elemento <supports-screens> stesso non è definito e non sono disponibili attributi. In questo caso, Google Play presuppone che l'applicazione sia progettata per schermi di dimensioni normali e la mostra ai dispositivi con schermi normali o più grandi.

  • Se android: minSdkVersion o android: targetSdkVersion è impostato su 4 o su un valore superiore, il valore predefinito per tutti gli attributi è "true". In questo modo, l'applicazione supporta 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 agli utenti di dispositivi con schermi di piccole dimensioni, ma agli utenti di dispositivi con schermi normali e grandi, a meno che non vengano applicati altri filtri.

Esempio 2
Il file 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 file 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 degli schermi nella tua applicazione, consulta <supports-screens> e Supporto di più schermi.

<uses-configuration> Configurazione dispositivo: tastiera
, navigazione, touchscreen

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

Esempio 1
Il file 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 dispone di un sensore di luminosità. 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, a meno che non vengano applicati altri filtri.

Per informazioni complete, consulta <uses-feature> .

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

Versione OpenGL-ES
(openGlEsVersion)

Un'applicazione può richiedere che il dispositivo supporti una versione OpenGL-ES specifica 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 presuppone che l'app richieda la versione più recente tra quelle indicate.

Esempio 2
Un'app richiede OpenGL-ES versione 1.1 e un utente cerca app su un dispositivo che supporta OpenGL-ES versione 2.0. Risultato: Google Play mostrerà l'app all'utente, a meno che non vengano applicati altri filtri. Se un dispositivo indica che supporta OpenGL-ES versione X, Google Play presume che supporti anche qualsiasi versione precedente alla 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à soltanto le app dell'utente che non specificano openGlEsVersion oppure le app che non specificano una versione OpenGL-ES successiva alla 1.0.

Esempio 4
Il file 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 file 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>  

Rigorosamente, Google Play non filtra in base agli elementi <uses-permission>. Tuttavia, legge gli elementi per determinare se l'applicazione ha requisiti di 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 considera che l'applicazione richiede una videocamera e non dovrebbe essere mostrata agli utenti i cui dispositivi non offrono una videocamera.

In generale, se un'applicazione richiede autorizzazioni relative all'hardware, Google Play presuppone che l'applicazione richieda le funzionalità hardware sottostanti, anche se potrebbero non esserci corrispondenze con le dichiarazioni <uses-feature>. Google Play imposta quindi i filtri 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 file manifest include <uses-sdk android:minSdkVersion="3"> e l'app utilizza le API introdotte nel livello API 3. Un utente cerca 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 le API introdotte nel livello API 3. Un utente cerca 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 consente a quest'ultimo di scaricarla. L'app si arresta in modo anomalo in fase di esecuzione.

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

Versione massima del framework (maxSdkVersion)

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

Dichiarare maxSdkVersion non è consigliabile. 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 i filtri che attivano sono solo per casi d'uso eccezionali. Sono progettati per alcuni 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 usare 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: normalmente non devi utilizzare questo elemento manifest. L'utilizzo di questo elemento può ridurre drasticamente la potenziale base utenti per la tua applicazione, escludendo tutte le combinazioni di dimensioni e densità dello schermo che non hai elencato. Utilizza invece l'elemento manifest <supports-screens> (descritto sopra nella tabella 1) per attivare la modalità di compatibilità dello schermo per le configurazioni dello schermo non prese in considerazione con risorse alternative.

<supports-gl-texture>

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

Altri filtri

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

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

Nome filtro Come funziona
Stato di pubblicazione

Nelle ricerche e nella navigazione in Google Play verranno visualizzate soltanto le applicazioni pubblicate.

Anche se un'app non è pubblicata, può essere installata se gli utenti possono vederla 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 appare nella sezione Download.

Stato con prezzi

Non tutti gli utenti possono vedere le app a pagamento. Per mostrare app a pagamento, su un dispositivo deve essere installato Android 1.1 o versioni successive e deve essere in un paese in cui sono disponibili le app a pagamento. Se un dispositivo ha una scheda SIM, è l'operatore di SIM che determina la disponibilità di app a pagamento. Se un dispositivo non ha una scheda SIM, l'indirizzo IP del dispositivo viene utilizzato per determinare se il dispositivo si trova in un paese in cui sono disponibili le 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 per gli utenti solo nei paesi selezionati.

Architettura della CPU (ABI)

Un'applicazione che include librerie native che hanno come target un'architettura della CPU specifica (ad esempio ARM EABI v7 o x86) è visibile solo sui dispositivi che supportano questa architettura. Per informazioni dettagliate sull'NDK e sull'utilizzo delle librerie native, consulta la sezione Che cos'è l'NDK di Android?

Applicazioni con protezione dalla copia

Google Play non supporta più la funzionalità Protezione dalla copia in Play Console e non filtra più le app in base a questa funzionalità. Per proteggere la tua app, utilizza invece le licenze delle applicazioni. Per ulteriori informazioni, consulta la sezione Sostituzione della protezione dalla copia.

Pubblicazione di più APK con filtri diversi

Alcuni filtri specifici di Google Play ti consentono di pubblicare più APK per la stessa applicazione, in modo da fornire un APK diverso a diverse configurazioni dispositivo. Ad esempio, se stai creando un videogioco che utilizza risorse grafiche ad alta fedeltà, potresti creare due APK che supportano diversi formati di compressione delle texture. In questo modo puoi ridurre le dimensioni del file APK includendo solo le texture necessarie per ogni configurazione del dispositivo. A seconda del supporto dei formati di compressione delle texture da parte di ciascun dispositivo, Google Play fornirà l'APK che hai dichiarato di supportare il dispositivo in questione.

Attualmente, Google Play ti consente di pubblicare più APK per la stessa applicazione soltanto quando 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 della CPU (ABI)

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

Tutti gli altri filtri funzionano come al solito, ma questi quattro sono gli unici filtri in grado di distinguere un APK da un altro nella stessa scheda dell'applicazione su Google Play. Ad esempio, non puoi pubblicare più APK per la stessa applicazione se gli APK differiscono solo a seconda che il dispositivo sia dotato di fotocamera.

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

Se hai bisogno di ulteriori informazioni su come pubblicare più APK su Google Play, leggi la pagina Supporto di più APK.

Vedi anche

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