O Android foi criado para funcionar em vários dispositivos, como smartphones, tablets e televisões. A variedade de dispositivos cria um enorme público potencial para seu app. Para que um app seja bem-sucedido em todos os dispositivos, ele precisa tolerar uma certa variabilidade de recursos e oferecer uma interface do usuário flexível que se adapte a diferentes configurações de tela.
Para ajudar na compatibilidade de dispositivos, o Android oferece um framework de app dinâmico em que você pode fornecer recursos do app específicos para a configuração em arquivos estáticos, como diferentes layouts XML para diferentes tamanhos de tela. Em seguida, o Android carrega os recursos adequados com base na configuração atual do dispositivo. Com o planejamento do design do app e alguns recursos adicionais, você pode publicar um único pacote de apps (APK) que otimiza a experiência do usuário em vários dispositivos.
Por outro lado, caso seja necessário, especifique os requisitos de recursos do seu app e controle que tipos de dispositivos podem instalar seu app na Google Play Store. Este documento explica como controlar os dispositivos que têm acesso ao seu app e como prepará-lo para que cheguem ao público certo.
O que significa "compatibilidade"?
No que diz respeito ao desenvolvimento do Android, há dois tipos de compatibilidade: compatibilidade com dispositivos e compatibilidade com apps.
Como o Android é um projeto de código aberto, qualquer fabricante de hardware pode criar um dispositivo que execute o sistema operacional Android. No entanto, um dispositivo é "compatível com Android" somente se puder executar corretamente aplicativos criados para o ambiente de execução do Android. Os detalhes exatos do ambiente de execução do Android são definidos pelo Programa de compatibilidade do Android. Cada dispositivo deve passar pelo conjunto de teste de compatibilidade (CTS) para ser considerado compatível.
Como desenvolvedor de apps, você não precisa se preocupar se um dispositivo é compatível com o Android porque apenas os dispositivos compatíveis com o Android incluem a Google Play Store. Portanto, se um usuário instalar seu app na Google Play Store, ele estará usando um dispositivo compatível com o Android.
No entanto, você precisa considerar se seu app é compatível com cada configuração possível do dispositivo. Como o Android é executado em uma ampla gama de configurações de dispositivo, alguns recursos não estão disponíveis em todos os dispositivos. Por exemplo, alguns aparelhos podem não ter um sensor de bússola. Se a funcionalidade principal do seu aplicativo exigir um sensor de bússola, ele será compatível apenas com dispositivos que incluem esse recurso.
Controlar a disponibilidade do seu app para dispositivos
O Android é compatível com vários recursos que seu aplicativo pode usar nas APIs da plataforma. Alguns recursos são baseados em hardware, como um sensor de bússola; alguns são baseados em software, como widgets de apps; e alguns dependem da versão da plataforma. Nem todos os dispositivos são compatíveis com todos os recursos. Por isso, talvez seja necessário controlar a disponibilidade do seu app para os dispositivos com base nos recursos obrigatórios do seu app.
Para alcançar a maior base de usuários possível para seu app, ofereça suporte ao maior número possível de configurações de dispositivos usando um único APK ou AAB. Na maioria das situações, é possível fazer isso desativando recursos opcionais no ambiente de execução e fornecendo recursos de aplicativo com alternativas para configurações diferentes, como diferentes layouts para diferentes tamanhos de tela. Se necessário, você pode restringir a disponibilidade do seu app para determinados dispositivos na Google Play Store com base nas seguintes características do dispositivo:
Recursos do dispositivo
Para gerenciar a disponibilidade do seu app com base nos recursos do dispositivo, o Android define IDs de recurso para todo recurso de hardware ou software que pode não estar disponível em todos os dispositivos. Por exemplo, o ID de recurso para o sensor da bússola é FEATURE_SENSOR_COMPASS, e o ID de recurso para widgets do aplicativo é FEATURE_APP_WIDGETS.
Se necessário, você pode impedir que os usuários instalem seu aplicativo quando os
dispositivos não tiverem um determinado recurso. Para fazer isso, declare o recurso com um
<uses-feature>
elemento no arquivo de
manifesto do seu app.
Por exemplo, se seu app não funciona em um dispositivo sem sensor de bússola, declare o sensor da bússola como obrigatório com a seguinte tag de manifesto:
<manifest ... > <uses-feature android:name="android.hardware.sensor.compass" android:required="true" /> ... </manifest>
A Google Play Store compara os recursos necessários para seu app com os recursos disponíveis em cada dispositivo usuário para determinar se o app é compatível com o dispositivo. Se o dispositivo não tiver todos os recursos exigidos pelo app, o usuário não poderá fazer a instalação.
No entanto, se a funcionalidade principal do aplicativo não exigir um
recurso do dispositivo, defina o
required
atributo como "false" e verifique o recurso no ambiente de execução.
Se o recurso do aplicativo não estiver disponível no dispositivo atual, o recurso correspondente terá uma degradação suave. Por exemplo, você pode consultar se um recurso está disponível chamando hasSystemFeature() da seguinte maneira:
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(); }
Para mais informações sobre todos os filtros que podem ser usados para controlar a disponibilidade do seu app na Google Play Store, consulte a documentação Filtros no Google Play.
Versão da plataforma
Dispositivos diferentes podem executar versões diferentes da plataforma Android, como o Android 12 ou o 13. Cada nova versão da plataforma geralmente adiciona APIs que não estavam disponíveis na versão anterior. Para indicar as APIs que estão disponíveis, cada versão da plataforma especifica um nível da API. Por exemplo, o Android 12 é o nível 31 da API, e o Android 13 é o nível 33 da API.
Você precisa especificar os valores
minSdkVersion
e
targetSdkVersion
no arquivo 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(36) ... } }
Groovy
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 36 ... } }
Para mais informações sobre o arquivo build.gradle, consulte
Configurar sua versão.
Cada nova versão do Android oferece compatibilidade com aplicativos criados com as APIs de versões anteriores da plataforma. Portanto, apps desenvolvidos com APIs Android documentadas continuarão compatíveis com versões futuras do Android.
No entanto, se o aplicativo usa APIs adicionadas em uma versão mais recente da plataforma, mas não as exige para a funcionalidade principal, verifique o nível de API no ambiente de execução e faça uma degradação suave dos recursos correspondentes quando o nível da API for muito baixo. Nesse caso, defina minSdkVersion como o valor mais baixo possível para a funcionalidade principal do aplicativo e compare a versão atual do sistema, SDK_INT, com a constante de codinome em Build.VERSION_CODES que corresponde ao nível da API que você quer verificar, conforme mostrado no exemplo a seguir:
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(); }
Configuração da tela
O Android é executado em dispositivos de vários tamanhos, como smartphones, tablets e TVs. Para categorizar dispositivos por tipo de tela, o Android define duas características para cada dispositivo: tamanho da tela (tamanho físico da tela) e densidade da tela (densidade física dos pixels na tela, conhecida como DPI). Para simplificar as diferentes configurações, o Android generaliza essas variantes em grupos que facilitam a orientação:
- Quatro tamanhos generalizados: pequeno, normal, grande e extra grande.
- Várias densidades generalizadas: mdpi (média), hdpi (alta), xhdpi (extra alta), xxhdpi (extra-extra-alta) e outros.
Por padrão, seu aplicativo é compatível com todos os tamanhos e densidades de tela, já que o sistema faz os ajustes necessários ao layout da interface e aos recursos de imagem para cada tela. Forneça imagens de bitmap otimizadas para densidades de tela comuns.
Otimize a experiência do usuário usando layouts flexíveis o máximo possível. Quando houver layouts para grandes mudanças de configuração, como retrato e paisagem, ou tamanhos de janela grandes e pequenos, considere fornecer layouts alternativos que sejam flexíveis para mudanças menores na configuração. Isso melhora a experiência do usuário em formatos como tablets, smartphones e dispositivos dobráveis. Também ajuda quando as janelas mudam de tamanho no modo de várias janelas.
Para mais informações sobre como criar recursos alternativos para diferentes telas e como restringir seu aplicativo a determinados tamanhos de tela quando necessário, leia a visão geral da compatibilidade de tela e consulte as diretrizes de qualidade de apps para telas grandes.
Como controlar a disponibilidade do seu app por motivos comerciais
Além de restringir a disponibilidade do seu app com base nas características do dispositivo, talvez seja necessário restringir a disponibilidade do app por motivos comerciais ou legais. Para esse tipo de situação, a Google Play Store oferece opções de filtragem no Play Console que permitem controlar a disponibilidade do app por motivos não técnicos, como a localidade ou a operadora sem fio do usuário.
A filtragem de compatibilidade técnica, como componentes de hardware obrigatórios, sempre é baseada nas informações contidas no arquivo APK ou AAB. No entanto, a filtragem por motivos não técnicos, como localidade geográfica , sempre é feita no Google Play Console.
Recursos adicionais:
- Visão geral dos recursos de app
- Informações sobre como os aplicativos para Android são estruturados para separar os recursos do aplicativo do código do aplicativo, incluindo como você pode fornecer recursos alternativos para configurações específicas do dispositivo.
- Filtros no Google Play
- Informações sobre as diferentes maneiras que a Google Play Store pode impedir que seu app seja instalado em diferentes dispositivos.
- Permissões no Android
- Como o Android restringe o acesso de aplicativos a determinadas APIs com um sistema de permissões que requer o consentimento do usuário para que seu aplicativo use essas APIs.