O Android Studio 3.4 é uma versão importante com vários novos recursos e melhorias.
IntelliJ IDEA 2018.3.4
- Núcleo do Android Studio atualizado com aprimoramentos do IntelliJ IDEA a partir da versão 2018.3.4
Android Gradle plugin 3.4.0
Caixa de diálogo Nova estrutura de projeto
- a nova caixa de diálogo Estrutura do projeto (PSD) facilita a atualização de dependências e a configuração de vários aspectos do seu projeto, como módulos, opções de compilação, configurações de assinatura e variáveis de compilação
- Você pode abrir o PSD selecionando "Arquivo> Estrutura do projeto" no menu. Você também pode abrir o PSD via Ctrl + Shift + Alt + S no Windows e Linux ou Command +; (ponto e vírgula) no macOS. A seguir, é apresentada uma descrição das inovações e atualizações do PSD.
Variáveis
Módulos
- configure as propriedades que se aplicam a todas as opções de construção existentes nos módulos ou adicione novos módulos ao seu projeto usando a seção Módulos. Por exemplo, aqui você pode configurar a propriedade defaultConfig ou gerenciar as configurações de assinatura
Dependências
inspecione e visualize cada gráfico de dependência do gráfico de dependência do seu projeto criado pela Gradle durante a sincronização do projeto, seguindo estas etapas:
- no painel esquerdo do PSD, selecione "Dependências"
- no painel "Módulos", selecione o módulo para o qual você gostaria de ver as dependências
- no lado direito do PSD, abra o painel "Dependências resolvidas", como mostrado abaixo

você também pode encontrar e adicionar dependências rapidamente ao seu projeto, selecionando o módulo e clicando no botão "+" na seção "Dependências declaradas" e, em seguida, selecionando o tipo de dependência que deseja adicionar
dependendo do tipo de dependência que você escolher, você deverá ver uma caixa de diálogo semelhante à mostrada abaixo que ajuda a adicionar a dependência ao módulo

Opções de montagem
- nesta seção do PSD, opções de criação e variações ('sabores do produto') são criadas e configuradas para cada módulo em seu projeto. Você pode adicionar modelos de manifesto ('espaços reservados'), arquivos ProGuard e atribuir chaves de assinatura, etc.

Dicas
- Você pode ver as atualizações de dependências propostas para o seu projeto e criar opções na seção "Sugestões", conforme mostrado abaixo

Novo 'gerenciador de recursos'
'Resource Manager' é uma nova ferramenta para importar, criar, gerenciar e usar os recursos do seu aplicativo. Você pode abrir esta ferramenta através do menu "Exibir> Janelas de Ferramentas> Gerenciador de Recursos". O Gerenciador de recursos permite que você faça o seguinte:

- Visualize recursos: você pode visualizar desenhos, cores e layouts para encontrar rapidamente o recurso certo
- Importação em massa: você pode importar vários ativos desenháveis por vez, simplesmente arrastando-os para o 'gerenciador de recursos' ou através do assistente Importar desenháveis. Para acessar o assistente, clique no botão "+" no canto superior esquerdo da janela e selecione "Importar Drawables" na lista suspensa.
- Converter arquivos SVG em VectorDrawables: você pode usar o assistente Import Drawables para converter suas imagens SVG em VerctorDrawables
- Recursos de arrastar e soltar: na janela 'gerenciador de recursos', você pode arrastar e soltar drawables nos widgets de design e XML do editor de layout ('Layout Editor')
- Versões alternativas de widgets: agora você pode ter versões alternativas de seus recursos clicando duas vezes no recurso na janela "Ferramenta". Você verá as diferentes versões criadas e quais qualificadores elas contêm.
- Exibição em bloco ou lista: você pode alterar a exibição na janela de visualização de seus recursos usando o layout diferente
consulte o manual Gerenciar recursos do aplicativo para obter mais informações.
Verificando IDs de compilação ao criar um perfil e depurar APKs
- quando você fornece os "arquivos de símbolo de depuração" das bibliotecas .so compartilhadas no seu APK, o Android Studio verifica se o ID da compilação dos "arquivos de símbolo de depuração" corresponde ao ID da compilação das bibliotecas .so no APK
- se você coletar bibliotecas nativas no APK com o ID da versão, o Android Studio verificará se o ID da versão dos seus "arquivos de símbolo" e o ID da versão das bibliotecas nativas correspondem e redefine os "arquivos de símbolo" se não houver correspondência. Se você não criar com o ID de construção, o fornecimento de "arquivos de símbolos" incorretos pode causar problemas ao depurar
R8 está ativado por padrão
O R8 combina desugar, compressão, ofuscação, otimização e desxagem em uma única etapa, o que proporciona uma notável melhoria de desempenho. O R8 foi introduzido no plug-in Android Gradle 3.3.0 e agora está ativado por padrão para aplicativos e projetos de bibliotecas Android usando o plug-in versão 3.4.0 ou superior
A imagem abaixo descreve o processo de compilação antes do R8

agora, com R8, desapropriação, compressão, ofuscação, otimização e dexing (D8) são executados em uma etapa, como mostrado abaixo

O R8 foi projetado para funcionar com as regras ProGuard existentes, portanto, você não precisa tomar nenhuma ação para tirar proveito do R8. Enquanto isso, como essa tecnologia é diferente do ProGuard, projetado especificamente para projetos Android, a compactação e a otimização podem consistir na remoção do código que o ProGuard não exclui. Portanto, nessa situação improvável, pode ser necessário adicionar regras adicionais para salvar esse código na montagem final
Se você tiver problemas ao usar o R8, leia as Perguntas frequentes sobre compatibilidade com o R8 para verificar se há uma solução pronta. Se a solução ainda não foi documentada, informe um bug . Você pode desativar o R8 adicionando uma das seguintes instruções ao arquivo gradle.properties do seu projeto:
<i> # desativar o R8 apenas para os módulos da Biblioteca Android </i>
android.enableR8.libraries = false </p>
<p> <i> # desative o R8 para todos os módulos </i>
android.enableR8 = false
NOTA: para o tipo especificado de montagem, se você definir false para useProguard no arquivo build.gradle do seu módulo de aplicativo, o plug-in Android Gradle usará R8 para compactar o código do aplicativo para esse tipo de montagem, independentemente de R8 estar desativado no arquivo gradle.properties do seu projeto
O Navigation Editor agora suporta todos os tipos de argumentos
- Todos os tipos suportados pelo componente Navegação agora são suportados no Editor de Navegação. Para obter mais informações sobre tipos suportados, consulte Passar dados entre destinos.
Melhorias no Editor de Layout
Novas dicas de ação para importar rapidamente dependências
- se você começar a usar classes específicas do Jetpack e Firebase no seu código, novas dicas de ação sugerem adicionar as dependências necessárias da biblioteca Gradle ao seu projeto, se ainda não tiverem sido adicionadas. Por exemplo, se você estiver se referindo à classe WorkManager pela primeira vez, precisará da dependência android.arch.work:work-runtime e a dica de ação permitirá que você a adicione em um clique, como mostrado abaixo

- em particular, uma vez que O Jetpack é apresentado em pacotes separados (o que facilita o gerenciamento e a atualização), o atalho de ação ajuda a adicionar rapidamente apenas as dependências necessárias para os componentes do Jetpack que você usa
3.4.0 problemas conhecidos
- a criação de perfil é desativada quando você implanta seu aplicativo em dispositivos executando o Android Q Beta
- quando uma biblioteca de ligação de dados é usada, LiveDataListener.onChanged () pode cair com um NullPointerException. Uma correção para esse problema será incluída no Android Studio 3.4.1 e já está disponível na versão mais recente do Android Studio 3.5 ( versão 122066788 )