🚀 8.2 Estratégias de Versionamento e Compatibilidade

Diferente dos primórdios do Android, hoje a fragmentação de versões é gerenciada de forma muito mais eficiente. No Android Studio 2023.1, o foco mudou da “sobrevivência” em versões antigas para a “inovação” com segurança através das bibliotecas AndroidX.

Definindo o Alcance (minSdk e targetSdk)

No build.gradle, definimos as fronteiras do nosso app:

  • minSdk (Mínimo): Define o dispositivo mais antigo que pode instalar seu app. Recomendamos API 26 (Android 8.0) para garantir suporte a 95% do mercado com segurança moderna.
  • targetSdk (Alvo): Indica para qual versão seu app foi otimizado. Para o BoaViagem, utilizamos a API 34 (Android 14) para aproveitar as últimas proteções de privacidade e performance.

Checagem em Tempo de Execução (Java 17)

Às vezes, queremos usar um recurso que só existe nas versões mais novas (como o Cresential Manager). Para isso, utilizamos verificações limpas:

private void aplicarRecursoModerno() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
        // Recurso exclusivo do Android 13+
        solicitarPermissaoNotificacao();
    } else {
        // Comportamento legado seguro
    }
}

Filtragem por Hardware (uses-feature)

Para que seu app não seja instalado em dispositivos que não possuem o hardware necessário, utilize o filtro uses-feature no Manifesto:

<!-- O app exige GPS para registrar viagens -->
<uses-feature android:name="android.hardware.location.gps" android:required="true" />
 
```python > [!IMPORTANT] > > **O Papel do Google Play Services:** > Muitas funcionalidades que antes dependiam da versão do sistema (como Mapas e Login) hoje são entregues via **Google Play Services**, o que significa que um usuário no Android 8 tem acesso às mesmas APIs de nuvem que um usuário no Android 14.

TIP

> Utilize o **Android Studio SDK Index** para verificar se uma biblioteca de terceiros que você pretende usar ainda é compatível com sua `minSdk` e se ela segue as políticas de privacidade do Google Play.

---
[[Informática para Internet/Desenvolvimento para Dispositivos Móveis II/capitulo_073|⬅️ Capítulo Anterior]] | [[Informática para Internet/Desenvolvimento para Dispositivos Móveis II/capitulo_075|Próximo Capítulo ➡️]]