Embora as versões mais recentes do Android costumem oferecer ótimas APIs para seu app, ele precisa continuar sendo compatível com as versões anteriores do Android até que mais dispositivos sejam atualizados. Esta lição mostra como aproveitar as APIs mais recentes e, ao mesmo tempo, continuar a oferecer compatibilidade com versões anteriores.
Use o assistente New Project do Android Studio para encontrar a distribuição de dispositivos ativos que executam cada versão do Android. Essa distribuição considera o número de dispositivos que acessam a Google Play Store. Geralmente, recomendamos oferecer suporte a cerca de 90% dos dispositivos ativos, ao mesmo tempo em que você direciona o app para a versão mais recente.
Dica: para oferecer os melhores recursos e funcionalidades em diversas versões do Android, você precisa usar a Biblioteca de Suporte do Android no seu app. Isso permite usar diversas APIs de plataforma recentes em versões anteriores.
Especificar níveis de API mínimos e desejados
O arquivo AndroidManifest.xml
descreve detalhes sobre o app e
identifica com quais versões do Android ele é compatível. Especificamente, os atributos minSdkVersion
e targetSdkVersion
para o elemento <uses-sdk>
identificam o nível mais baixo da API com que o app é compatível e o nível mais alto da API
usado para projetar e testar o app.
Por exemplo:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... > <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" /> ... </manifest>
À medida que novas versões do Android são lançadas, alguns estilos e comportamentos podem mudar.
Para permitir que o app aproveite essas mudanças e garantir que ele seja adequado ao estilo do
dispositivo de cada usuário, defina o valor
targetSdkVersion
para corresponder à versão mais recente disponível
do Android.
Verificar versão do sistema em tempo de execução
O Android fornece um código exclusivo para cada versão da plataforma na classe de constantes
Build
. Use esses códigos dentro do app para criar condições para garantir que o código que
depende de níveis mais altos da API seja executado somente quando essas APIs estiverem disponíveis no sistema.
Kotlin
private fun setUpActionBar() { // Make sure we're running on Honeycomb or higher to use ActionBar APIs if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { actionBar.setDisplayHomeAsUpEnabled(true) } }
Java
private void setUpActionBar() { // Make sure we're running on Honeycomb or higher to use ActionBar APIs if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { ActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); } }
Observação: ao analisar recursos XML, o Android ignora atributos
XML que não são compatíveis com o dispositivo atual. Portanto, você pode usar atributos XML que
sejam compatíveis apenas com as novas versões com segurança, sem se preocupar com problemas quando versões anteriores
se depararem com o código. Por exemplo, se você definir
targetSdkVersion="11"
, o app incluirá a ActionBar
por padrão
no Android 3.0 e versões mais recentes. Para adicionar itens de menu à barra de ações, defina
android:showAsAction="ifRoom"
no XML de recursos do menu. É seguro fazer isso
em um arquivo XML para várias versões, porque as versões anteriores do Android simplesmente ignoram o atributo
showAsAction
(isto é, você não precisa de uma versão
separada em res/menu-v11/
).
Usar estilos e temas de plataforma
O Android fornece temas de experiência do usuário que dão aos apps a aparência do sistema operacional usado. Esses temas podem ser aplicados ao seu app no arquivo de manifesto. Usando esses estilos e temas integrados, o app terá naturalmente a aparência mais recente do Android a cada lançamento.
Para fazer a atividade parecer uma caixa de diálogo:
<activity android:theme="@android:style/Theme.Dialog">
Para fazer a atividade ter um plano de fundo transparente:
<activity android:theme="@android:style/Theme.Translucent">
Para aplicar seu próprio tema personalizado definido em /res/values/styles.xml
:
<activity android:theme="@style/CustomTheme">
Para aplicar um tema ao app inteiro (todas as atividades), adicione o atributo
android:theme
ao elemento <application>
:
<application android:theme="@style/CustomTheme">
Para saber mais sobre a criação e o uso de temas, leia o guia Estilos e temas.