Compatibilidade com diferentes versões de plataformas

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.