Mudanças para regras do targetSdkVersion no Android

Paulo Linhares
Iterative
Published in
5 min readApr 5, 2018

Você está se planejando para atualizar seus APPs seguindos as novas regras do targetSdkVersion no Android ?

Questões envolvendo vulnerabilidades de segurança no Framework Android tem criado um desconforto bem grande para o Google nos últimos anos — o maior e um dos poucos que a empresa já passou com o Android.

Os casos mais famosos de malwares no Android como: Stagefright em 2015 e HummingBad em 2016 — sem contar as várias outras brechas de segurança, exploradas por hackers maliciosos, através de SMS, arquivos MP3, MP4, etc— tem feito os engenheiros do Android andar a passos largos no combate a uma eminente perda de credibilidade da marca.

Com isso, 2017 foi um ano impar para o Android em termos de blindagem de sua plataforma, diversas ações foram tomadas para tornar a plataforma cada vez mais segura: Play Protect, metadatas no seu APK, correções de vulnerabilidades nas APIs nativas, dentre várias outras —A apresentação do próprio Android 8 (Oreo) é um disfarce publicitário muito bem formulado para focar na performance da experiência do usuário, mas que carrega muito mais nuances de segurança e, que o Google conseguiu casar bem as duas coisas.

E com isso, o efeito cascata que impacta diretamente nós desenvolvedores:

No Android, targetSdkVersion é a propriedade usada para designar o nível máximo de API (versão Android) para o qual seu APP será distribuído. Entender a diferença de minSdkVersion e, principalmente, para o compileSdkVersion, é o que vai fazer você desenvolver excelentes APPs para diferentes perfis de usuários. Ian Lake -Engenheiro Android do Google- tem um excelente artigo sobre isso aqui.

Do Facultativo à Regra

Você sempre foi livre para apontar o targetSdkVersion da API Level, do seu Projeto Android, para a versão que bem “desejasse”. Mas isso agora seguirá uma regra, imposta pelo Google, e que entrará me vigor no segundo semestre de 2018.

Vamos explícitamente à elas:

Agosto de 2018: novos aplicativos necessários para segmentar o nível de API 26 (Android 8.0) ou superior.

Novembro de 2018: atualizações para aplicativos existentes necessários para segmentar o nível 26 ou superior da API.

A partir de 2019: a cada ano, a targetSdkVersion exigência avançará. Dentro de um ano após cada lançamento de versão doce do Android, novos aplicativos e atualizações de aplicativos precisarão segmentar o nível da API correspondente ou superior.

Pelo que tudo indica, a Google Play registra um volume muito alto de Aplicativos que não fornecem atualizações rápidas para os novos lançamentos do Android — o que é totalmente entendível, mas não aceitável, devido as empresas não quererem quebrar seu planejamento atual, ou mesmo por negligência deixarem isso passar despercebido.

Então vamos lá ao nosso Quiz:

A partir de Agosto de 2018…

O que acontece com meu APP na Google Play se ele não tiver o targetSdkVersion apontado para API mais recente ? (neste momento: 26 - Android Oreo)

Nada! Mas você não conseguirá enviar uma atualização, a partir de novembro deste ano, do seu APP para a Google Play se este valor não estiver atualizado para a versão mais atual lançada (26).

Fiquei sabendo que o Android Oreo teve diversas alterações a nível de sistema relacionados a chamadas de novas APIs, Serviços em background, notificações, etc. Sendo assim, estou lançando um Aplicativo e/ou atualizando um existente, por não está seguro que ele funcionará redondo para Android O, eu prefiro lançar ele com targetSdkVersion = 25. Poderei ?

Não! Esta é a principal mudança do Google Play, manter os APPs com as APIs nativas mais atualizadas o possível. Então, para lançamento de novos APPs : Agosto de 2018; e atualização de um existente: Novembro de 2018.

Mudei meu targetSdkVersion para 25, mas atualizei meu compileSdkVersion para 26 (API mais atual). É aceito ?

Não! Primeiro você precisa entender a diferença entre essas duas propriedades. Dê uma olhada aqui para o ver o que Ian Lake tem a dizer.

Vi que já foi liberada uma versão do Android P (API Level 28*) para desenvolvedores, posso apontar ela no meu targetSdkVersion? Vai ser aceita ?

Se você não estiver chamando nenhuma nova API específica do Android P, não veria problema algum sobre isso — até porque seu APP não acharia ninguém na Google Play com esta versão de Android — , mas por conta exatamente desse detalhe, eu acredito que a Google Play não aceitaria sua publicação. O ideal é aguardar o lançamento oficial da versão, que ocorre geralmente após o Google i/o de cada ano. — Mas está aí um teste que fiquei curioso de fazer.

Ainda sobre o Android P, liberado até o momento apenas para desenvolvedores, se esta versão for lançada já neste Google i/o de 2018, terei que neste segundo semestre já aponta-lo no meu targetSdkVersion ?

Ainda não! Essa regra vinculando os novos APPs e atualizações um ano após ao lançamento de uma nova versão de doce Android, só entrará em vigor a partir de 2019. — O Android P não será lançado neste Google i/o 2018, pois agora em Abril de 2018 o mesmo ainda não entrou nem em Beta, então seria uma mega/ultra surpresa esse lançamento agora. O que deve ser aguardado é sua apresentação, isso sim tenho certeza que acontecerá como de praxe.

Eu atualizei meu targetSdkVersion para a versão mais atual, mas algumas Librarys que utilizo como dependência ainda estão pendentes de fazerem o mesmo. Isso é um problema ?

Sim! Mas isso não está bem claro ainda. Pelo que tudo indica, agora os desenvolvedores precisarão fazer uma sondagem maior sobre uma Lib quando precisarem utilizar uma. Analisar a frequência com que a Lib recebe atualizações, complexidade de implementação em caso do desenvolvedor precisar ele próprio desenvolver tal recurso... passarão precisar ter um ponto de atenção maior. Existe uma boa discursão sobre isso passada pela experiência de um desenvolvedor com React-Native (mesmo sendo sobre desenvolvimento híbrido rs) , veja aqui.

— — — — — — — — — — — — — —

É bom ficar ligado, o Google tem mexido seus palitinhos para mudar a regra para o minSdkVersion também. É possível ver evidências disso para a partir do Android P. Veja esse artigo publicado por Dave Burke — VP Engineering (Android).

Bem rapeizes, é isso! A idéia é mesmo fazer essa roda de conversa sobre o assunto e ficarmos ligados às novidades, discutindo os aspectos que impactam diretamente no nosso time de desenvolvimento e, até mesmo no corpo da empresa.

Por favor, contribua nos comentários, assim poderemos tornar este artigo melhor para todos.

Valeuuu!

Segue links úteis sobre o assunto:

--

--

Paulo Linhares
Iterative

Android Developer at SKY, Santander | Superdigital , Iterative | Posto Ipiranga, YetGo, MelhorCorrida, Packapps…