A Visualização do desenvolvedor para Android 11 já está disponível. Teste e compartilhe seu feedback.

Compatibilidade com diferentes versões da plataforma

Embora as versões mais recentes do Android costumem oferecer ótimas APIs para seu app, você precisa continuar mantendo-o compatível com as versões anteriores do SO até que mais dispositivos sejam atualizados. Esta lição mostra como aproveitar as APIs mais recentes e, ao mesmo tempo, manter a compatibilidade com versões anteriores.

O painel Versões da 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, é recomendado oferecer compatibilidade com 90% dos dispositivos ativos, mantendo seu app atualizado 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 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 app e identifica com quais versões do Android ele é compatível. Especificamente, os atributos minSdkVersion e targetSdkVersion do elemento <uses-sdk> identificam o nível de API mais baixo com o qual seu app é compatível e o nível de API mais alto que você usou para projetar e testar o app.

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 se adeque ao estilo do dispositivo de cada usuário, defina o valor targetSdkVersion para corresponder à versão mais recente disponível do Android.

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 app para criar condições para 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 com segurança atributos XML que sejam compatíveis apenas com as novas versões, sem se preocupar com problemas quando versões anteriores se depararem com o código. Por exemplo, se você definir targetSdkVersion="11", seu app incluirá a ActionBar por padrão no Android 3.0 e em versões posteriores. Para adicionar itens de menu à barra de ações, defina android:showAsAction="ifRoom" no XML do recurso de menu. É seguro fazer isso em um arquivo XML entre versões, porque as versões mais antigas do Android simplesmente ignoram o atributo showAsAction. Ou seja, 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ão aos apps a aparência do sistema operacional subjacente. Esses temas podem ser aplicados ao seu app no arquivo de manifesto. Usando esses estilos e temas integrados, o app acompanhará 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 aplicativo 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.