A empresa Google lançou a versão da plataforma móvel Android 14. Os códigos fonte relacionados a este novo lançamento estão disponíveis no repositório Git do projeto (branch android-14.0.0_r1). Atualizações de firmware foram preparadas para dispositivos da série Pixel. Posteriormente, está previsto o lançamento de atualizações de firmware para smartphones das fabricantes Samsung Galaxy, iQOO, Nothing, OnePlus, Oppo, Realme, Sharp, Sony, Tecno, vivo e Xiaomi. Além disso, foram criadas compilações universais GSI (Generic System Images), adequadas para diferentes dispositivos baseados nas arquiteturas ARM64 e x86_64.
Principais novidades:
- A plataforma agora inclui o repositório Health Connect, anteriormente fornecido como um pacote separado através do Google Play. O Health Connect garante o armazenamento centralizado de dados de dispositivos de fitness e outros relacionados à saúde do usuário, além de organizar o acesso compartilhado a esses dados entre diferentes aplicativos. O acesso às configurações do Health Connect agora será disponibilizado através do configurador padrão da plataforma; por exemplo, por meio das configurações de privacidade, é possível gerenciar quais dados de saúde determinados aplicativos podem acessar. Além disso, o Health Connect agora suporta o armazenamento de informações sobre as rotas percorridas durante os treinos (o usuário define o intervalo de tempo para o qual a lista de pontos de referência será armazenada). A rota pode ser visualizada em um mapa e, se desejado, enviada para processamento por outros aplicativos, após a confirmação explícita da operação pelo usuário.

- A funcionalidade de confirmação de acesso a informações sobre localização foi ampliada. Um novo seção foi adicionada ao diálogo de solicitação de confirmação de acesso à localização, informando quando o aplicativo está transmitindo dados de localização (acesso negado, permitir apenas uma vez, e permitir a cada execução do aplicativo) e detalhes sobre onde obter mais informações sobre o acesso aos dados transmitidos.

- Foi implementada a exibição periódica (uma vez por mês) de notificações alertando sobre mudanças nos aplicativos que têm acesso à localização, e nos métodos de transmissão de dados a terceiros (por exemplo, é exibido quando um aplicativo começa a utilizar dados de localização para mostrar propagandas).

- Ao trabalhar com aplicativos, foi implementada uma dica mais visível com uma seta reversa, exibida para facilitar o entendimento da possibilidade de uso do gesto de tela para voltar.

- No mecanismo Sharesheet, utilizado para enviar dados (como imagens ou links) para fora do aplicativo ou a outro usuário, foi adicionada a opção de incluir ações personalizadas. Por exemplo, é possível definir uma lista personalizada de manipuladores ChooserAction, que mostram os aplicativos e usuários para os quais o envio é possível. Além disso, foi expandido o conjunto de sinais utilizados para classificar os destinos para o envio direto de dados.

- Foi disponibilizada a possibilidade de delegação parcial de privilégios para acesso apenas às fotos e vídeos selecionados pelo usuário (READ_MEDIA_VISUAL_USER_SELECTED, os arquivos a serem acessados são escolhidos pelo usuário através da interface do Photo picker durante a exibição do diálogo de solicitação de privilégios). Após a mudança do aplicativo para o modo de fundo ou o encerramento do programa, a concessão de privilégios pelo usuário é automaticamente revogada. No diálogo de confirmação de privilégio de acesso a arquivos multimídia, foi adicionada a opção de conceder acesso apenas às fotos ou vídeos selecionados.

- Foi adicionada uma seção de configuração para redefinir as preferências regionais, como unidades de medida de temperatura, primeiro dia da semana e sistema numérico. Por exemplo, um europeu vivendo nos EUA pode definir a exibição da temperatura em graus Celsius ao invés de graus Fahrenheit e considerar a segunda-feira como o primeiro dia da semana em vez do domingo.

- As capacidades de escalonamento de fontes foram ampliadas, o nível máximo de escalonamento de fontes foi aumentado de 130% para 200%, e para garantir que o texto não pareça excessivamente grande em grandes aumentos, agora é aplicada automaticamente uma alteração não linear no nível de escalonamento (textos já grandes aumentam menos do que os pequenos), o que permitirá alcançar uma legibilidade ideal do texto por pessoas com visão reduzida, sem o risco de distorções na disposição da interface.

- O suporte recém-aparecido para gravação de vídeo com alto intervalo dinâmico de brilho (HDR) foi ampliado com a capacidade de obter informações adicionais da câmera, permitindo a salvaguarda de imagens no formato 'Ultra HDR', no qual 10 bits por canal são utilizados para codificação de cor. O formato Ultra HDR é totalmente compatível com JPEG, permitindo que aplicativos operem com imagens HDR sem modificações e, se necessário, exibam-nas usando o intervalo normal de brilho. A saída em modo HDR é garantida automaticamente pela plataforma caso o suporte a HDR seja ativado no manifesto do aplicativo ou ao chamar Window.setColorMode. Para renderização separada de Ultra HDR usando OpenGL ou Vulkan, a classe Gainmap pode ser aplicada.

- Os tipos de aplicativos que podem exibir notificações em tela cheia durante o bloqueio de tela estão limitados. Essas notificações são destinadas a chamar a atenção para informações que requerem resposta imediata, como a recepção de uma chamada ou o ativar de um alarme, portanto, a autoridade para exibir tais notificações agora será restrita a aplicativos para chamadas e alarmes.
- O gerenciamento de animações que sinalizam a transição entre diferentes telas (abas) no aplicativo ao deslizar o conteúdo foi aprimorado. Novos componentes para animação de transições de telas inferiores e laterais foram adicionados, bem como a chamada de pesquisa. Foi inserido um API para criar efeitos de transição personalizados no aplicativo.
- O conjunto de extensões para câmera (Camera Extensions) foi atualizado, oferecendo a possibilidade de usar algoritmos de processamento de imagem mais prolongados e que exigem computação intensiva, como para melhorar a qualidade de fotos tiradas em baixas condições de iluminação. Foram adicionadas funções para previsão de atrasos no processamento da foto, obtenção de informações sobre o progresso do processamento e rápida obtenção de uma prévia da foto até que a imagem final seja concluída. Um modo de visualização mais otimizado e eficiente em termos de energia foi implementado para o SurfaceView. Durante o uso de extensões, o suporte ao toque para focalização e zoom foi garantido.
- Adicionada a suportar uso das capacidades de escala e recorte da câmera para imagens RAW transmitidas.
- Para fones de ouvido com fio conectados via USB, adicionada a possibilidade de aplicar formatos de áudio sem perda de qualidade (lossless). Na API, foi adicionado a classe AudioMixerAttributes, permitindo enviar som diretamente para o dispositivo, sem mixagem, ajuste de volume ou processamento de efeitos.
- Na API gráfica, implementada a classe Mesh, permitindo criar suas próprias variantes de malha poligonal com shaders de vértices e fragmentos escritos na linguagem AGSL.
- Adicionada a possibilidade de aceleração de hardware na renderização para o buffer, implementada através da classe HardwareBufferRenderer.
- Na classe Path, que permite criar gráficos vetoriais com base em contornos geométricos compostos, foi adicionada a suporte à interpolação entre contornos com estruturas semelhantes para criar efeito de morphing e uso do iterador PathIterator para percorrer sequencialmente todos os segmentos do contorno.
- Ampliadas as opções de vincular configurações de idioma a diferentes aplicativos. Adicionada a possibilidade de definir a lista de idiomas que será exibida no configurador do Android ao selecionar o idioma para um aplicativo específico.
- Ampliadas as áreas em que o sistema mostra informações relacionadas à privacidade, conforme definido pelo desenvolvedor na Play Console Form, como políticas de compartilhamento de dados com terceiros. Por exemplo, essas informações agora são exibidas na caixa de diálogo de solicitação de permissões.
- Em aplicativos que utilizam manipuladores que operam em segundo plano, agora é obrigatório indicar o tipo de serviço em segundo plano. Durante a operação, o sistema verifica a conformidade entre o tipo de serviço indicado, as permissões solicitadas e a API utilizada. Por exemplo, se um aplicativo indicou o tipo de serviço em segundo plano FOREGROUND_SERVICE_TYPE_LOCATION, presume-se que podem ser solicitadas as permissões ACCESS_COARSE_LOCATION ou ACCESS_FINE_LOCATION.
- Foram feitas alterações para aumentar a segurança: a solicitação de intent por aplicativos para certos componentes internos da plataforma foi proibida. O código carregado dinamicamente agora deve ser marcado com um atributo de acesso em modo somente leitura. O processamento de arquivos zip nas funções ZipFile(String) e ZipInputStream.getNextEntry() foi proibido se os caminhos começarem com o caractere ‘/’ ou contiverem a sequência ‘..’. A execução de tarefas de manipuladores em segundo plano foi limitada e as restrições na área de chamada de interfaces de programação que não são fornecidas no SDK foram atualizadas.
- Ao conectar um dispositivo via USB a um computador de mesa, além dos modos de interação anteriormente disponíveis, como transferência de arquivos, carga, compartilhamento de internet, etc., agora existe a possibilidade de usar o smartphone como uma webcam (modo UVC, USB Video Class). Por padrão, esta função está desativada, mas pode ser ativada com acesso root.
- O aprimoramento da plataforma em tablets e dispositivos com telas dobráveis continua. Bibliotecas foram fornecidas para prever eventos relacionados ao movimento do ponteiro, garantindo baixas latências ao interagir com canetas stylus. Foram disponibilizados modelos de interface para telas grandes, levando em consideração aplicações como redes sociais, comunicação, conteúdo multimídia, leitura e compras.
- Adicionada uma permissão separada para permitir que os aplicativos iniciem ações enquanto estão em segundo plano. A ativação durante o funcionamento em segundo plano é limitada para não distrair o usuário enquanto trabalha no aplicativo atual. Aplicativos ativos receberam mais opções de controle sobre a ativação de ações por outros aplicativos com os quais interagem.
- A otimização do sistema de gerenciamento de memória foi realizada para uma alocação mais eficiente de recursos para aplicativos executados em segundo plano. Após alguns segundos da transferência do aplicativo para um estado em cache, a execução em segundo plano é limitada ao trabalho com APIs que gerenciam o ciclo de vida do aplicativo, como API Foreground Services, JobScheduler e WorkManager.
- Notificações com a flag FLAG_ONGOING_EVENT agora podem ser rejeitadas quando exibidas em um dispositivo com a tela desbloqueada. Se o dispositivo estiver no modo de bloqueio de tela, essas notificações permanecerão não rejeitáveis. Também permanecerão não rejeitáveis as notificações que são importantes para o funcionamento do sistema.
- Novos métodos foram adicionados à API PackageInstaller: requestUserPreapproval(), que permite ao diretório de aplicativos adiar o download de pacotes APK até obter a confirmação do usuário para a instalação; setRequestUpdateOwnership(), que permite vincular futuras operações de atualização ao instalador; setDontKillApp(), que permite definir capacidades adicionais para o aplicativo durante a execução. Na API InstallConstraints, os instaladores têm a possibilidade de ativar a instalação de atualizações do aplicativo em momentos em que o aplicativo não está em uso.
- Continua o trabalho para melhorar a plataforma em tablets e dispositivos com telas dobráveis. As diretrizes para o desenvolvimento de aplicativos para dispositivos com telas grandes foram atualizadas, e foram adicionados modelos de interface padrão para telas grandes, considerando aplicações como redes sociais, comunicação, conteúdo multimídia, leitura e compras. Uma prévia do Cross device SDK foi proposta, com ferramentas para o desenvolvimento de aplicativos que funcionam corretamente em diferentes tipos de dispositivos (smartphones, tablets, TVs inteligentes, etc.) e diferentes formatos.
- Foi otimizada a coordenação da execução de tarefas intensivas em recursos em segundo plano, como o upload de grandes arquivos quando há conexão Wi-Fi. Alterações foram feitas na API de lançamento de serviços prioritários (Foreground Service) e no agendamento de tarefas (JobScheduler), incluindo uma nova funcionalidade para tarefas iniciadas pelo usuário relacionadas à transferência de dados. Foram introduzidos requisitos sobre o tipo de serviços prioritários em execução (como trabalho com câmera, sincronização de dados, reprodução de multimídia, rastreamento de localização, acesso ao microfone, etc.). Simplificou-se a definição das condições para a ativação do upload de dados, por exemplo, permitindo uploads apenas com acesso via Wi-Fi.
- O sistema interno de entrega de mensagens em broadcast para aplicativos foi otimizado para reduzir o consumo de energia e aumentar a responsividade. A recepção de fluxos de mensagens registrados pelos aplicativos foi aprimorada, permitindo que as mensagens sejam colocadas em fila, agregadas (por exemplo, uma série de mensagens BATTERY_CHANGED será agrupada em uma única mensagem) e entregues somente após o aplicativo sair do estado em cache.
- O limite para o número máximo de aplicativos em cache foi aumentado, o que permitiu reduzir o número de aplicativos iniciados em modo 'frio' (ou seja, não em cache na memória e iniciados mais lentamente). Para dispositivos com 8 GB de RAM, após a alteração das restrições, o número de inícios 'frios' de aplicativos diminuiu em 20%, e para 12 GB, em 30%.
- O uso da função de execução de operações em tempos exatos (exact alarms) nos aplicativos agora requer a obtenção de uma autorização separada SCHEDULE_EXACT_ALARM, pois o uso dessa funcionalidade pode impactar negativamente o tempo de duração da bateria e levar a um aumento no consumo de recursos (para tarefas programadas, recomenda-se usar a ativação em tempos aproximados). Os aplicativos com implementação de calendário e relógios que usam a ativação em tempos exatos devem ser concedidos a autorização USE_EXACT_ALARM durante a instalação. A publicação de aplicativos no catálogo do Google Play com permissão USE_EXACT_ALARM é permitida apenas para programas que implementam despertadores, temporizadores e calendários com notificações de eventos.
- Foi possibilitado configurar as definições de idioma vinculadas a aplicativos específicos. O desenvolvedor do aplicativo agora pode alterar os parâmetros localeConfig através da chamada LocaleManager.setOverrideLocaleConfig para determinar a lista de idiomas exibidos para o aplicativo na interface de configuração do Android.
- Adicionado o API de Infecção Gramatical para simplificar a adição de traduções de elementos da interface que consideram idiomas com sistemas de gênero.
- Para evitar a interceptação de solicitações de intent por aplicativos maliciosos, a nova versão proíbe o envio de intents sem especificação explícita de pacote ou componente interno.
- A segurança da Carregamento Dinâmico de Código (DCL) foi aprimorada — para evitar a inserção de código malicioso em arquivos executáveis carregados dinamicamente, esses arquivos agora devem ter permissões que permitam apenas leitura.
- A instalação de aplicativos que declararam uma versão SDK inferior a 23 foi proibida, permitindo bloquear a contornagem de restrições de permissões por meio de vinculação a APIs antigas (a versão API 22 é proibida, pois na versão 23 (Android 6.0) surgiu um novo modelo de gerenciamento de acesso que permite solicitar acesso a recursos do sistema em tempo real). Aplicativos previamente instalados que utilizam APIs antigas continuarão a funcionar após a atualização do Android.
- Proposto o API Credential Manager, permitindo organizar o login em aplicativos usando credenciais de provedores de autenticação externos. Implementado suporte à tecnologia Passkeys, permitindo que o usuário se autentique sem senhas usando identificadores biométricos, como impressão digital ou reconhecimento facial. Melhorada a interface para seleção de conta.
- No Android Runtime (ART) foi implementado o suporte ao OpenJDK 17. As bibliotecas Java básicas da plataforma e as ferramentas de desenvolvimento de aplicativos foram atualizadas para o OpenJDK 17. Adicionado suporte aos recursos de linguagem e classes Java disponíveis no OpenJDK 17, como classes do tipo record, strings multilinhas e correspondência de padrões no operador 'instanceof'.
- No Android Runtime, foram utilizados métodos de compressão mais avançados, permitindo reduzir o tamanho dos arquivos em média em 9.3% sem comprometer o desempenho.
- A forma de atualização dos certificados das autoridades certificadoras (CA) foi alterada. Os certificados do sistema não estarão mais vinculados ao firmware, mas serão entregues em um pacote separado, atualizado através do Google Play. Essa abordagem facilitará a manutenção de certificados atualizados e a remoção de certificados comprometidos, além de impedir que os fabricantes de dispositivos manipulem a lista de certificados raiz e tornará o processo de atualização independente da atualização do firmware. Por outro lado, o novo método de entrega não permitirá que o usuário faça alterações nos certificados do sistema, mesmo que tenha acesso root ao sistema e controle total sobre o firmware.
Fonte: opennet.ru









