Compatibilidade com diferentes versões de plataformas

Mesmo que as versões mais recentes do Android muitas vezes forneçam ótimas APIs para seu aplicativo, siga mantendo-o compatível com versões anteriores do Android até que mais dispositivos sejam atualizados. Esta lição mostra como aproveitar as últimas APIs e, ao mesmo tempo, manter a compatibilidade com versões anteriores.

O painel principal Versões de plataforma é atualizado regularmente para exibir a distribuição de dispositivos ativos executando cada versão do Android com base no número de dispositivos que acessam a Google Play Store. Geralmente, é uma boa prática ser compatível com 90% dos dispositivos ativos, mantendo o aplicativo atualizado para a última versão.

Dica: para fornecer os melhores recursos e funcionalidades em diversas versões do Android, use a Biblioteca de suporte do Android no aplicativo, o que permite o uso de 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 aplicativo e identifica com que versões do Android ele é compatível. Especificamente, os atributos minSdkVersion e targetSdkVersion para o elemento <uses-sdk> identificam o nível de API mais baixo com que o aplicativo é compatível e o nível de API mais alto usado para projetar e testar seu aplicativo.

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 aplicativo aproveite essas mudanças e garantir que ele se seja adequado ao estilo do dispositivo de cada usuário, defina o valor targetSdkVersion para corresponder à última versão do Android disponível.

Versão do sistema de verificação em tempo de execução

O Android fornece um código exclusivo para cada versão de plataforma na classe das constantes Build. Use esses códigos dentro do aplicativo para criar condições e garantir que o código que depende de níveis de API mais altos 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 compatíveis apenas com novas versões sem se preocupar se versões anteriores apresentarão falha ao se deparar com o código. Por exemplo, se você definir targetSdkVersion="11", o aplicativo incluirá a ActionBar por padrão no Android 3.0 e versões posteriores. Para adicionar itens de menu na barra de ações, defina android:showAsAction="ifRoom" no XML de recursos do menu. É seguro fazer isso em um arquivo XML de todas as 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 de usuário que dá aos aplicativos a aparência de um sistema operacional subjacente. Esses temas podem ser inseridos no aplicativo através do arquivo de manifesto. Usando esses estilos e temas embutidos, o aplicativo naturalmente acompanhará a última aparência do Android a cada novo 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 o próprio tema personalizado definido em /res/values/styles.xml:

<activity android:theme="@style/CustomTheme">

Para aplicar um tema a todo o aplicativo (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.