Panoramica della compatibilità dei dispositivi

Android è progettato per essere eseguito su molti dispositivi diversi, come smartphone, tablet e televisori. La gamma di dispositivi offre un enorme potenziale pubblico della tua app. Affinché la tua app abbia successo su tutti i dispositivi, deve tollera la variabilità delle caratteristiche e fornisce un'interfaccia utente flessibile che si adatta configurazioni dello schermo diverse.

Per facilitare la compatibilità con i dispositivi, Android fornisce un framework di app dinamico in cui puoi fornire impostazioni risorse per app in formato statico ad esempio layout XML diversi per schermi di dimensioni differenti. Android quindi carica le risorse appropriate in base all'attuale configurazione del dispositivo. Con più consapevole del design della tua app e di altre risorse per l'app, puoi pubblicare un un singolo pacchetto per applicazioni (APK) che ottimizza l'esperienza utente su una serie di dispositivi.

Se necessario, tuttavia, puoi specificare i requisiti delle funzionalità della tua app e stabilire quali tipi di dispositivi possono installare la tua app dal Google Play Store. Questo documento spiega come controllare quali dispositivi hanno accesso al tuo app e come prepararle per raggiungere il pubblico giusto.

Cosa significa "compatibilità" media?

Per quanto riguarda lo sviluppo di Android, esistono due tipi di compatibilità: compatibilità con i dispositivi e compatibilità delle app.

Poiché Android è un progetto open source, qualsiasi produttore di hardware può per creare un dispositivo con sistema operativo Android. Ma un dispositivo è "Compatibile con Android" solo se è in grado di eseguire correttamente le app scritte per Ambiente di esecuzione Android. I dettagli esatti dell'app dell'ambiente di esecuzione sono definite Android di compatibilità. Ciascun dispositivo deve superare il Compatibility Test Suite (CTS) per essere considerata compatibile.

In qualità di sviluppatore di app, non devi preoccuparti di sapere se un dispositivo è Compatibile con Android, perché solo i dispositivi compatibili con Android includono Google Play Store. Quindi, se un utente installa la tua app dal Google Play Store, utilizzano un dispositivo compatibile con Android.

Tuttavia, devi valutare se la tua app è compatibile con ogni la potenziale configurazione del dispositivo. Android funziona su un'ampia gamma di dispositivi alcune funzionalità non sono disponibili su tutti i dispositivi. Ad esempio, alcune i dispositivi potrebbero non includere un sensore per la bussola. Se la funzionalità di base dell'app richiede un sensore per la bussola, la tua app è compatibile solo con i dispositivi che includono questa funzionalità.

Controllare la disponibilità dell'app per i dispositivi

Android supporta una serie di funzionalità che la tua app può sfruttare tramite la piattaforma su quelle di livello inferiore. Alcune funzionalità sono basate su hardware, ad esempio un sensore per la bussola. alcune sono basati su software, ad esempio widget di app; mentre altri dipendono dalla versione della piattaforma. Non tutti i dispositivi supportano tutte le funzionalità, quindi potresti dover controllare la disponibilità dei dispositivi in base alle funzionalità richieste dalla tua app.

Per raggiungere la più ampia base utenti possibile per la tua app, supportane il maggior numero il maggior numero possibile di configurazioni dei dispositivi utilizzando un singolo APK o AAB. Nella maggior parte dei casi, puoi disabilitare le funzionalità facoltative in fase di runtime app fornitura di risorse con alternative per diverse configurazioni, ad esempio per schermi di diverse dimensioni. Se necessario, puoi limitare le funzionalità dell'app la disponibilità per determinati dispositivi tramite il Google Play Store in base ai seguenti fattori: caratteristiche del dispositivo:

Funzionalità del dispositivo

Per gestire la disponibilità della tua app in base alle funzionalità del dispositivo, Android definisce ID elemento per qualsiasi funzionalità hardware o software che potrebbe non essere disponibile su tutti i dispositivi. Ad esempio, l'ID elemento per il sensore della bussola è FEATURE_SENSOR_COMPASS, e l'ID funzione per i widget delle app è FEATURE_APP_WIDGETS.

Se necessario, puoi impedire agli utenti di installare la tua app quando dispositivi non forniscono una funzionalità necessaria dichiarandola tramite un <uses-feature> nell'interfaccia utente file manifest.

Ad esempio, se la tua app è insensata su un dispositivo privo di bussola di rilevamento, puoi dichiarare il sensore della bussola come requisito con le seguenti tag manifest:

<manifest ... >
    <uses-feature android:name="android.hardware.sensor.compass"
                  android:required="true" />
    ...
</manifest>

Il Google Play Store confronta le funzionalità richieste dalla tua app con disponibili sul dispositivo di ogni utente per determinare se la tua app è compatibili con ciascun dispositivo. Se il dispositivo non dispone di tutte le funzionalità richiede che l'utente non possa installarla.

Tuttavia, se la funzionalità principale dell'app non richiede un funzionalità del dispositivo, imposta required: a "false" e controlla la funzionalità del dispositivo in fase di runtime. Se la funzionalità dell'app non è disponibile sul dispositivo attuale, riduci temporaneamente la funzionalità dell'app corrispondente. Ad esempio, puoi chiedere se una caratteristica è disponibile chiamando hasSystemFeature() nel seguente modo:

Kotlin

if (!packageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) {
    // This device doesn't have a compass. Turn off the compass feature.
    disableCompassFeature()
}

Java

PackageManager pm = getPackageManager();
if (!pm.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) {
    // This device doesn't have a compass. Turn off the compass feature.
    disableCompassFeature();
}

Per informazioni su tutti i filtri che puoi utilizzare per controllare la disponibilità della tua app tramite il Google Play Store, controlla Filtri su Google Play documentazione.

Versione piattaforma

Dispositivi diversi potrebbero eseguire versioni diverse della piattaforma Android, ad esempio ad esempio Android 12 o Android 13. Ogni versione successiva della piattaforma spesso aggiunge API non disponibile nella versione precedente. Per indicare quale insieme di API disponibile, ogni versione della piattaforma specifica Livello API. Ad esempio, Android 12 è il livello API 31, mentre Android 13 è il livello API 33.

Devi specificare minSdkVersion e targetSdkVersion valori nel tuo file build.gradle:

Kotlin

android {
    defaultConfig {
        applicationId = "com.example.myapp"

        // Defines the minimum API level required to run the app.
        minSdkVersion(30)

        // Specifies the API level used to test the app.
        targetSdkVersion(33)
        ...
    }
}

Alla moda

android {
    defaultConfig {
        applicationId 'com.example.myapp'

        // Defines the minimum API level required to run the app.
        minSdkVersion 30

        // Specifies the API level used to test the app.
        targetSdkVersion 33
        ...
    }
}

Per ulteriori informazioni sul file build.gradle, leggi Configura la tua build.

Ogni versione successiva di Android offre compatibilità per le app create usando le API delle versioni precedenti della piattaforma, in modo che la tua app sia compatibile future di Android usando le API Android documentate.

Tuttavia, se l'app utilizza API aggiunte in una versione più recente della piattaforma, ma non li richiede per la sua funzionalità principale, controlla il livello API all'indirizzo il runtime e riduci in modo controllato le funzionalità corrispondenti quando il livello API troppo basso. In questo caso, imposta minSdkVersion sul valore più basso possibili per la funzionalità principale dell'app, poi confronta la configurazione attuale o la versione precedente, SDK_INT, alla costante del nome in codice Build.VERSION_CODES che corrisponde al livello API che vuoi controllare, come mostrato di seguito esempio:

Kotlin

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
    // Running on something older than API level 11, so disable
    // the drag and drop features that use ClipboardManager APIs.
    disableDragAndDrop()
}

Java

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
    // Running on something older than API level 11, so disable
    // the drag and drop features that use ClipboardManager APIs.
    disableDragAndDrop();
}

Configurazione schermo

Android funziona su dispositivi di varie dimensioni, come telefoni, tablet e TV. A classificare i dispositivi in base al tipo di schermo, Android ogni dispositivo: dimensioni dello schermo (le dimensioni fisiche dello schermo) e densità dello schermo (la densità fisica dei pixel sullo schermo, nota come DPI). Per semplificare le diverse configurazioni, Android generalizza queste varianti in gruppi che le rendono più facile scegliere come target:

  • Quattro dimensioni generalizzate: piccolo, normale, grande e xlarge
  • Varie densità generalizzate: mdpi (media), hdpi (alta), xhdpi (extra elevata), xxhdpi (molto elevata) e altre

Per impostazione predefinita, l'app è compatibile con schermi di tutte le dimensioni e densità. perché il sistema apporta modifiche al layout dell'interfaccia utente e alle risorse delle immagini necessario per ogni schermata. Fornisci immagini bitmap ottimizzate per schermate comuni delle densità.

Ottimizza l'esperienza utente utilizzando il più possibile layout flessibili. Sono disponibili layout per modifiche di grande entità alla configurazione, ad esempio verticali e orizzontale o di finestre grandi e piccole, valuta la possibilità di fornire layout flessibili per apportare piccole modifiche alla configurazione. Ciò migliora l'esperienza utente su fattori di forma come tablet, smartphone e pieghevoli. it è utile anche quando le dimensioni delle finestre cambiano in modalità multi-finestra.

Per informazioni su come creare risorse alternative per schermate e come limitare l'app a determinate dimensioni dello schermo quando necessario. leggi il compatibilità dello schermo panoramica e consulta app per schermo grande norme sulla qualità.

Controllare la disponibilità dell'app per motivi commerciali

Oltre a limitare la disponibilità dell'app in base al dispositivo, caratteristiche, potresti dover limitare la disponibilità della tua app per scopi aziendali per motivi legali o di altro tipo. Per questo tipo di situazione, Google Play Store fornisce opzioni di filtro in Play Console che ti consentono di controllare per motivi non tecnici, ad esempio impostazioni internazionali dell'utente o wireless operatore.

Filtrare i dati per compatibilità tecnica, ad esempio l'hardware richiesto componenti: si basa sempre su informazioni contenute nell'APK o nell'AAB . Ma filtrare per motivi non tecnici, ad esempio dati geografici impostazioni internazionali; viene sempre gestita nel Google Play Console

Altre risorse:

Panoramica delle risorse per app
Informazioni su come le app per Android sono strutturate in modo da separare le app risorse dal codice dell'app, incluso come fornire alternative per configurazioni specifiche del dispositivo.
Filtri su Google Play
Informazioni sui diversi modi in cui Google Play Store può impedire che i tuoi di installare l'app su dispositivi diversi.
Autorizzazioni su Android
In che modo Android limita l'accesso delle app a determinate API con un sistema di autorizzazioni che richiede il consenso dell'utente affinché la tua app utilizzi queste API.