37% das 1+ milhão de perguntas em android estão …...target sdk na google play apps devem...
TRANSCRIPT
37% das 1+ milhão de perguntas em Android estão sem resposta aceita!
O que fazer quando a sua é uma delas?
Que tal navegar pelo Android Studio?
Stubs!
Olhar pela 10ª vez os docs da Google?
E agora?
Pq navegar no AOSP vai te levar ao próximo nível?Palestra TDC SP 19 - Trilha Android
17.07.19
Palestrantes
Rodrigo PerazzoTech Lead
Victor RattisEng SW
rodrigo.perazzo
@rodrigoperazzo
@PerazzoZe
victorrattis
@victorrattis
@victorRattis
5+ anos em Android Embarcado
Cada vez mais Restrições
Dangerous PermissionsAndroid M
Background LimitsAndroid O
Non-SDK InterfacesAndroid P
Background OptimizationsAndroid N
Target SDK na Google Play
Apps devem atualizar seu SDK
1º de agosto de 2019 novos apps
devam ter o target SDK pelo menos Android 9.0
1º de novembro de 2019 atualização
de apps devem ter target SDK para Android 9.0
Lançado
Target
2018
28
26
2019
30
28
2020
32
30
2021
34
32
A
AOSP
Ambiente
Ferramenta Repo para gerenciar os 600+ repositórios Git
Tamanho
60 GB de código fonte
Navegação
Navegação limitada ao terminal do Linux
Você pode baixá-lo, mas...
Textos. Ideal para logs de erro!
Classes, métodos e variáveis
Diretórios e tipos de arquivo
Commit messages
SDK
App
Invisível Código Interno
Visível
SDK
App
Invisível
Non-SDKpriv + @hide
Código Interno
framework.jar
services.jarlibandroid*.so
Visível
Context
App
ContextImpl
Services
Visível
Invisível
Managers
?
Classe do SDK
App
AIDL
Processo Interno
Invisível
Visível
Android Interface Definition Language
● Arquivos .aidl● Nomes: IManager / IService / ... ● Implementado com: extends <NOME>.Stub
Processo 1 AIDL Processo 2
Primitivos do SO
Case Real (SDK 28): “Porque o JobScheduler não está funcionando?!”
O que o app estava fazendo:
● Agendava um job num BroadcastReceiver para executar assim que possível.
● O Job demorava muito para ser executado (horas!)
Regras de agendamento
Estado do app?
App Standby Bucket
● Feature de gerenciamento de bateria integrada no Android P
● Prioriza requisições por frequência de uso:
○ Active: App is currently being used or was very recently used○ Working set: App is in regular use○ Frequent: App is often used, but not every day○ Rare: App is not frequently used
Solução!
● Explicar a restrição e mudar a UX do aplicativo!
1. Pedir para o usuário manualmente colocar o app na Power Save
2. Executar o processamento como um Foreground Service
Nem todo código vai resolver seu problema. 5129 public int getSimCount() {5130 // FIXME Need to get it from Telephony Dev Controller when that gets implemented!5131 // and then this method shouldn't be used at all!5132 if(isMultiSimEnabled()) {5133 return 2;5134 } else {5135 return 1;5136 }5137 }
Porque navegar no AOSP?
+ Velocidade Para atualizar o app às novas versões
+ AutonomiaPara resolver problemas “sem solução”Para aprender novas features do Android
+ Facilidade Para contribuir com a comunidade
Dúvidas?
Obrigado!Palestra TDC SP 19 - Trilha Android
17.07.19