A fórmula é
minSdkVersion <= targetSdkVersion <= compileSdkVersion
minSdkVersion - é um marcador que define uma versão mínima do Android na qual o aplicativo poderá instalar. Também é usado pelo Lint para impedir a chamada da API que não existe. Também tem impacto no tempo de construção. Portanto, você pode usar os tipos de build para substituir minSdkVersion ao máximo durante o desenvolvimento. Isso ajudará a acelerar a construção usando todas as melhorias que a equipe do Android fornece para nós. Por exemplo, alguns recursos que o Java 8 estão disponíveis apenas a partir de uma versão específica do minSdkVersion.
targetSdkVersion - diz que o sistema Android ativa mudanças específicas de comportamento.
Por exemplo:
A partir do Android 6.0 (nível 23 da API) Runtime Permissions
foram introduzidos. Se você definir targetSdkVersion
22 ou menos, seu aplicativo não solicitará permissão ao usuário em tempo de execução.
A partir do Android 8.0 (nível 26 da API), todos notifications
devem ser atribuídos a um canal ou ele não aparecerá. Em dispositivos com Android 7.1 (API nível 25) e inferior, os usuários podem gerenciar notificações apenas por aplicativo (efetivamente, cada aplicativo possui apenas um canal no Android 7.1 e inferior).
A partir do Android 9 (nível 28 da API) Web-based data directories separated by process
,. Se targetSdkVersion
tiver mais de 28 anos e você criar vários WebView
processos diferentes, receberájava.lang.RuntimeException
compileSdkVersion - na verdade, é a versão da plataforma SDK e informa a Gradle qual SDK do Android usa para compilar. Quando você deseja usar novos recursos ou .java
arquivos de depuração do Android SDK, deve cuidar da compileSdkVersion. Mais um exemplo é o uso do AndroidX que obriga a usar compileSdkVersion
- o nível 28. compileSdkVersion
não está incluído no seu APK : é puramente usado em compile time
. Alterar seu compileSdkVersion não altera o comportamento do tempo de execução. Pode gerar, por exemplo, novos avisos / erros do compilador. Portanto, é altamente recomendável que você sempre compile com o SDK mais recente. Você obterá todos os benefícios das novas verificações de compilação do código existente, evitará novas APIs obsoletas e estará pronto para usar novas APIs. Mais um fato écompileSdkVersion >= Support Library version
Você pode ler mais sobre isso aqui . Também recomendo que você dê uma olhada no exemplo de migração para o Android 8.0.