O Android 11 está sendo lançado na maioria dos novos telefones, mas o Android 12 foi lançado para dispositivos Pixel em todos os lugares. Participe deste webinar para ver o que mudou nessas versões mais recentes do Android e veja algumas práticas recomendadas para o desenvolvimento do Android com dicas para direcionar as versões mais recentes do sistema operacional mais popular.
Ver ou fazer download do Apresentações Google
Table of Contents
Participação no mercado mundial de sistemas operacionais para desktops, celulares e tablets
https://gs.statcounter.com/os-market-share/desktop-mobile-tablet/worldwide/#monthly-200901-202201
Participação de mercado de fabricantes de dispositivos móveis em todo o mundo (janeiro de 2020 a janeiro de 2022)
https://gs.statcounter.com/vendor-market-share/mobile/worldwide/#monthly-202001-202202
Participação de mercado de fabricantes de dispositivos móveis em todo o mundo (janeiro de 2022)
https://gs.statcounter.com/vendor-market-share/mobile/worldwide/#monthly-202001-202202
Android vs iOS Market Share em todo o mundo (janeiro de 2020 – janeiro de 2022)
https://gs.statcounter.com/vendor-market-share/mobile/worldwide/#monthly-202001-202202
Participação no mercado mundial da versão móvel do Android (janeiro de 2020 a janeiro de 2022)
https://gs.statcounter.com/android-version-market-share/mobile/worldwide/#monthly-202001-202201
Versão móvel do Android – Market Share em todo o mundo (janeiro de 2022)
O Android 11 é o líder atual ( as versões 9 a 11 representam 76,4%)
- Android 12 lançado em 4 de outubro de 2021
- Android 11 lançado em 8 de setembro de 2020
- Android 10 lançado em 3 de setembro de 2019
- Android 9 lançado em 6 de agosto de 2018
- Android 12 = API 31
- Android 11 = API 30
- Android 10 = API 29
- Android 9 = API 28 (torta)
https://gs.statcounter.com/android-version-market-share/mobile/worldwide/#monthly-202001-202201
Requisitos de segurança e desempenho do Android Play
- A cada ano, o requisito targetSdkVersion avançará. Dentro de um ano após cada Android
- lançamento, novos aplicativos e atualizações de aplicativos precisarão segmentar o nível de API atualizado ou superior.
- Novembro de 2021:
- API de destino nível 30 (Android 11)
- Publique com o formato Android App Bundle.
- Obrigatório pelo Google Play Console
- Consulte o guia de migração da API para outras alterações: developer.android.com/distribute/best-practices/develop/target-sdk
Mudanças do Android no Delphi 11
*** – link
docwiki.embarcadero.com/RADStudio/Alexandria/en/What%27s_New
Suporte para Android 12?
Atualizando projetos Android existentes
● Abra uma compilação de projeto Android com uma versão mais antiga.
● Navegue até a janela encaixável Projetos.
● Selecione Android de 32 bits como plataforma de destino ativa.
● Clique com o botão direito do mouse no nó Bibliotecas.
● Clique em Reverter arquivos do sistema para padrão.
● Personalize com bibliotecas de terceiros, etc.
● Repita para Android-64.
Atualizando suas ferramentas do Android
- Delphi opcionalmente instala o Android SDK 25.2.5 e atualiza durante a instalação
- Adicione o ADB ao seu caminho:
- C:UsuáriosDocumentos PúblicosEmbarcaderoStudio22.0CatálogoRepositórioAndroidSDK-2525-22.0.42600.6491platform-tools
- Adicione SDKManager ao seu caminho:
- C:UsuáriosDocumentos PúblicosEmbarcaderoStudio22.0CatálogoRepositórioAndroidSDK-2525-22.0.42600.6491toolsbin
- Corre:
- adb kill server
- SDKManager —atualização
- versão adb
- Se você receber um erro “.android/repositories.cfg não pôde ser carregado”.
- Verifique se você tem uma pasta .android em seu diretório de usuário
- Crie um arquivo repositories.cfg vazio
- Versão mais recente (em fevereiro de 2022)
- Android Debug Bridge versão 1.0.41
- Versão 32.0.0-8006631
Depuração sem fio
- Adicionado no Android 11 (API 30)
- Entre no modo de desenvolvedor no Android (toque em “Build Number” sete vezes)
- Ativar depuração sem fio
- Opções do desenvolvedor -> Depuração sem fio
- Toque em “Emparelhar dispositivo com código de emparelhamento”
- Marque “Sempre permitir nesta rede” e pressione “Permitir” quando solicitado.
- Do Windows CMD
- adb start-server
- adb pair [ip]:[port] (da caixa de diálogo de emparelhamento)
- [código de emparelhamento]
- adb connect [ip]:[port] (da tela de depuração sem fio)
- Atualizar dispositivos no IDE
Formato do pacote de aplicativos Android
Permite que o Google Play use o modelo de serviço do aplicativo Dynamic Delivery para gerar APKs otimizados para cada dispositivo.
- Projeto > Opções > Construindo > Compilador Delphi > Compilando
- Gerar arquivo Android App Bundle (arm + arm64)
Após uma geração bem-sucedida do pacote de aplicativos, o IDE apresenta uma caixa de diálogo contendo o caminho do arquivo .aab.
Observação: você não pode executar ou depurar um App Bundle. Para depurar o aplicativo, você deve usar o formato de pacote .APK
Novo modelo de permissão de tempo de execução do Android
- Introduzido no Android 6.0 (API 23) Marshmallow
- A biblioteca de suporte abrange versões anteriores do Android
- Novo modelo agiliza o processo de atualização automática
- Aprovação de permissões acionada no primeiro uso
- Em vez de aprovar todas as permissões na instalação
- Dá aos usuários finais mais controle sobre as permissões
- Permissões individuais podem ser permitidas ou negadas por aplicativo e alteradas posteriormente
- Gerenciado por meio de novos métodos de API do Android checkSelfPermission() e requestPermissions()
Mais informações developer.android.com/training/permissions/requesting
Caixa de diálogo de aprovação de permissões antigas
- Durante a instalação todas as permissões são aceitas
- O usuário não pode negar permissões individuais
- Todas as permissões divulgadas no manifesto
- Se as permissões forem alteradas, elas deverão ser aprovadas antes da atualização
Nova caixa de diálogo de aprovação de permissão
- Na primeira vez que você solicitar a permissão individual, o usuário terá a opção de Negar ou Permitir
- Se o usuário negar uma vez, o usuário poderá impedir que o aplicativo pergunte novamente
- É importante quando e como você pergunta (mais sobre isso depois)
- Todas as permissões ainda divulgadas no manifesto
Os usuários têm controle de permissão granular agora
Perigosovs.Normal Permissões
- O usuário não é solicitadoNormalpermissões
- Exemplos: Internet, Vibrar, Bluetooth, etc.
- O usuário deve aprovarPerigosopermissões
- Normalmente, envolvem privacidade ou custo potencial
- Eles são agrupados em grupos de permissão:
- Calendário, Call_Log, Câmera, Contatos, Localização, Microfone, Telefone, Sensores, SMS e Armazenamento
- O usuário aprova um grupo inteiro
- Por exemplo, enviar e receber SMS
- O desenvolvedor ainda deve declarar e solicitar todas as permissões do SO no manifesto.
Mais informações developer.android.com/guide/topics/permissions/overview
Como pedir permissão – Delphi
Mais informações: docwiki.embarcadero.com/RADStudio/en/Android_Permission_Model
O serviço de permissão
- System.Permissions contém uma instância de TPermissionsService chamada PermissionsService ou acessa-a por meio da propriedade DefaultService
- IsPermissionGranted: se uma permissão for concedida atualmente ao aplicativo
- RequestPermissions: solicite permissões específicas e sua família
- IsEveryPermissionGranted: se as permissões listadas são concedidas no momento
- Novos tipos relevantes/relacionados adicionados às unidades RTL Android
- Manifest.permission e Build.VERSION em Androidapi.JNI.Os.pas
- ContextCompat, ActivityCompat e PermissionChecker em Androidapi.JNI.Support.pas
Método IsPermissionConcedido
- Membro de System.Permissions.TPermissionsService
- function IsPermissionGranted(const APermission: string): Boolean;
- Descubra se uma permissão está atualmente concedida ao aplicativo
- Nunca assuma que ainda é concedido
- Se não houver nenhum serviço de permissões de plataforma implementado para realmente fazer qualquer verificação, o padrão será responder que todas as permissões foram concedidas
Método IsEveryPermissionConcedido
- docwiki:/RADStudio/Uses_Permissions
- docwiki:Libraries/System.Permissions.TPermissionsService.IsEveryPermissionGranted
- Membro de System.Permissions.TPermissionsService
- function IsEveryPermissionGranted(const APermissions: TArray<string>): Boolean;
- Descubra se todas as permissões listadas estão concedidas no momento
- Nunca assuma que ainda é concedido
- Strings de permissão encontradas em TJManifest_permission.JavaClass de Androidapi.JNI.Os
- Lista de permissões e descrições
Solicitar permissões
- Membro de System.Permissions.TPermissionsService
- procedimento RequestPermissions(
- const APermissions: TArray<string>;
- const AOnRequestPermissionsResult:
- TRequestPermissionsResult[Event|Proc];
- AOnDisplayRationale: TDisplayRationale[Event|Proc] = nil);
- Solicitar uma ou mais permissões
- Quaisquer permissões que não sejam concedidas no momento serão solicitadas.
- De antemão, um raciocínio pode ser exibido para o usuário quando uma sequência de raciocínio foi definida para a permissão em questão, solicitando novamente uma permissão que foi negada anteriormente, uma rotina de exibição de raciocínio é passada
- docwiki:Libraries/System.Permissions.TPermissionsService.RequestPermissions
TRequestPermissionsResult[Event|Proc]
- Retorno de chamada de RequestPermissions
- TRequestPermissionsResult[Event|Proc] =
- procedimento(Remetente: TObject;
- const APermissions: TArray<string>;
- const AGrantResults: TArray<TPermissionStatus>);
- Tipo de retorno de chamada para quando o sistema processou nossas solicitações de permissão
- Para cada permissão solicitada em APermissions, há um Boolean em AGrantResults indicando se a permissão foi concedida.
Quando pedir permissões
Quando perguntar –CríticoPermissões
Quando perguntar –SecundárioPermissões
Outras práticas recomendadas
- Use a versão assíncrona de métodos e diálogos
- NÃO bloqueie o thread da interface do usuário!
- Sempre use HTTPS (tudo deve ser seguro)
- Use as novas bibliotecas de cliente HTTP docwiki.embarcadero.com/RADStudio/en/Using_an_HTTP_Client
- Indy ainda está disponível, atualizado e com suporte
- Conheça a Biblioteca de Programação Paralela
- Conheça System.IOUtils e TPath
- Conheça ADB, logcat & Log.d
Mais Informações
- Gravando no cartão SD stackoverflow.com/a/57600189/255
- Obter caminho do cartão SD removível
- Androidapi.JNI.Os.pas
- getExternalStorageDirectory
- getExternalStoragePublicDirectory
- getExternalStorageState
- Androidapi.JNI.Os.pas
- Confira “Mobile Permissions Component for Android” no GetIt
Próximos passos
- Inicie uma avaliação do RAD Studio embarcadero.com/products/rad-studio/start-for-free
- Obtenha o Community Edition embarcadero.com/products/delphi/starter
- Aprimore hoje! embarcadero.com/app-development-tools-store/rad-studio
- Veja as ofertas especiais embarcadero.com/radoffer
- Inscreva-se no YouTube youtube.com/c/EmbarcaderoTechnologies
- Siga-nos no Twitter twitter.com/embarcaderotech
- Curta nossa página no Facebook facebook.com/embarcaderotech
- Siga-nos no LinkedIn linkedin.com/company/embarcadero-technologies
- Leia nosso blog blogs.embarcadero.com
Atualize para o Delphi 11 hoje embarcadero.com/products/delphi