Você pode realmente usar a gradle-retrolamba
dependência do gradle build para usar o Java 8 for Android Development.
Abaixo está o guia completo que segui recentemente para executar expressões lambda para o desenvolvimento do Android. A fonte original deste guia é mencionada no final.
Neste guia, será demonstrado um método para trazer alguns recursos do Java 8 para as Ferramentas de Desenvolvimento do Android, visando especificamente o
Eclipse IDE. No entanto, as etapas descritas neste guia também podem ser adaptadas ao novo ambiente de desenvolvimento de revoltas do Google, o Android Studio. Ele é baseado na edição da comunidade do popular IntelliJ Idea IDE da JetBrains e foi recentemente atualizado para sua versão 'beta' pelo Google no início de julho de 2014, um pouco antes da redação deste guia. O Eclipse permanecerá como o ambiente de desenvolvimento de destaque, pelo menos por um tempo, e considerando o fato de que a maioria dos projetos Android foram desenvolvidos usando o Eclipse, um método para trazer novos recursos do Java 8, como expressões lambda para o ADT, parece ser bastante útil para os desenvolvedores.
O Android Development é baseado em uma implementação Java customizada chamada Apache Harmony Project, encerrada em 2011. A sintaxe Java mais comum no Android Development é Java 6 (v1.6) e Java 7 (v1.7) também é parcialmente suportada em a edição KitKat (Android 4.4. +). Portanto, recursos do Java 8, como expressões lambda, não podem ser usados diretamente no Android App Development sem aplicar alguns ajustes nas ferramentas de desenvolvimento. Felizmente, essas construções são basicamente alguns aprimoramentos do "açúcar sintático" que dão aos desenvolvedores deficiências de coisas como "classes anônimas" e podem ser traduzidos para as classes Java 6 ou Java 7.
Uma abordagem recente para traduzir um código-fonte do Java 8 em versões mais baixas do Java é chamada RetroLambda . Essa biblioteca faz com que os desenvolvedores executem o código Java 8 com expressões lambda no Java 7 ou até inferior. Infelizmente, os recursos do Java 8 que não sejam expressões lambda não são suportados pelo RetroLambda por enquanto, mas o conceito de expressões lambda é o maior salto na plataforma Java 8 e, de qualquer maneira, é uma ótima ferramenta para desenvolvedores do Android.
Detalhes sobre esta biblioteca podem ser encontrados na página do GitHub:
https://github.com/orfjackal/retrolambda#getting-started
Além disso, um plug-in Gradle para RetroLambda criado por outro desenvolvedor permite que as construções baseadas em Gradle sejam implementadas em projetos Java ou Android. No entanto, o desenvolvedor menciona apenas a integração deste plug-in no ambiente do Android Studio. Detalhes podem ser encontrados na página do GitHub:
https://github.com/evant/gradle-retrolambda
O uso dessas infra-estruturas em um ambiente de desenvolvimento baseado em Eclipse não pode ser abordado diretamente, mas é factível e será demonstrado ao longo deste guia.
Preparação
Este guia pressupõe que o leitor tenha um entendimento básico do Android Development e seja baseado na versão 22.6.2 do ADT, porque a versão 23.0.2 recente do ADT parece ter problemas como a criação da pasta de layout. Detalhes sobre esse problema podem ser encontrados no seguinte link:
http://code.google.com/p/android/issues/detail?id=72591
As etapas deste guia serão fornecidas para uma máquina de desenvolvimento Windows 8.1 de 64 bits , mas elas podem ser facilmente adaptadas a outras plataformas. O novo sistema de compilação Gradle
será usado para processos de compilação / limpeza e seu procedimento de instalação também será fornecido. Além disso, ambos JDK 8
e JDK 7
devem coexistir na máquina de desenvolvimento. As etapas abaixo devem ser seguidas para instalá-las:
- Vá para a página de visualização de acesso antecipado do JDK 8 http://jdk8.java.net
- Faça o download do JDK 8u20 e instale-o. A instalação do JRE 8 não é necessária e pode ser ignorada
- Vá para a página de versão estável mais recente do JDK 7 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
- Faça o download do JDK 7u65 e instale-o. A instalação do JRE 7 novamente não é necessária e pode ser ignorada
- Adicione a pasta inicial do JDK 8 e a pasta JDK 8
bin
à sua %PATH%
variável
- Crie uma nova variável de ambiente
JAVA_HOME
com o valor do caminho da pasta inicial do JDK 8
- Crie uma nova variável de ambiente
JAVA8_HOME
novamente com o valor do caminho da pasta inicial do JDK 8
- Crie uma nova variável de ambiente
JAVA7_HOME
com o valor do caminho da pasta inicial do JDK 7
- Abra uma janela do terminal e execute o
java -version
comando e verifique se o Java 8 está em funcionamento
- Execute o
javac -version
comando na mesma janela e verifique se o compilador JDK 8 Java também está instalado e em execução
Agora, o ADT-22.6.2 deve ser baixado no seguinte link:
http://dl.google.com/android/adt/22.6.2/adt-bundle-windows-x86_64-20140321.zip
- Baixe o ADT e descompacte o conteúdo em uma pasta, por exemplo
D:\adt
- Defina uma nova variável de ambiente chamada
ANDROID_HOME
com o valor do caminho da sua pasta de instalação do ADT, por exemploD:\adt\sdk
- Adicione suas pastas
Andoid SDK Platform Tools
e Andoid SDK Tools
, por exemplo , D:\adt\sdk\tools
e D:\adt\sdk\platform-tools
, à sua %PATH%
variável
- Crie um atalho para o Eclipse IDE, se desejar. Está localizado na sua pasta de instalação do ADT, por exemplo
D:\adt\eclipse
- Execute o Eclipse IDE e crie um espaço de trabalho, por exemplo
D:\adt\workspace
- Clique no
Android SDK Manager
botão localizado na barra de ferramentas
- Selecione
Android SDK Build tools Rev. 19.1
e Android Support Library
somente. Desmarque todo o resto e instale esses dois pacotes.
Se tudo correr bem, o ADT estará em funcionamento.
A instalação das seguintes ferramentas também é altamente recomendada:
Suporte ao Eclipse Kepler para Java 8: Faz o Eclipse reconhecer novas extensões de sintaxe do Java 8 e faz com que você se livre de irritações red dots
no seu editor de código Java. Pode ser instalado Help -> Install New Software
no Eclipse. Digite http://download.eclipse.org/eclipse/updates/4.3-P-builds/ no Work with
campo e continue a instalá-lo.
Nodeclipse / Enide Gradle: É usado principalmente para destacar palavras-chave do idioma Groovy. Groovy é usado como o DSL para scripts de compilação Gradle. Este plugin pode ser instalado através do Eclipse Marketplace
. No entanto, o Eclipse no ADT-22.6.2 não vem junto Eclipse Marketplace Client
. Portanto, você primeiro precisará instalar Eclipse Marketplace Client
por meio da Install New Software
ferramenta no Eclipse. Digite http //: download.eclipse.org/mpc/kepler/ no Work with
campo e continue a instalá-lo. Após a instalação Eclipse Marketplace Client
, você pode procurar Nodeclipse/Enide Gradle
no Eclipse Marketplace Client
e instalá-lo.
Dispositivo virtual Genymotion: É um ótimo substituto do padrão Android Virtual Device
que acompanha o ADT. O AVD é irritantemente pesado e continua batendo sem motivo. O Genymotion faz com que você prepare VDs do Android usando CyanogenMod
imagens executadas pelo Oracle VirtualBox . Sua licença de usuário único é gratuita e pode ser baixada em http://www.genymotion.com . Apenas um login é necessário e também pode ser integrado ao Eclipse. Detalhes podem ser encontrados em:
https://cloud.genymotion.com/page/doc/#collapse8
Abaixo está uma captura de tela de um dispositivo virtual CyanogenMod baseado no Android 4.3,
Pode ser considerado um dispositivo Android completo, executado em um computador pessoal baseado em x86 ou x64. Para usar os serviços do Google, como Google PlayStore
neste dispositivo virtual, uma gapps
imagem da versão Android usada deve ser exibida no dispositivo. Uma gapps
imagem adequada para o dispositivo pode ser baixada do site da CyanogenMod:
http://wiki.cyanogenmod.org/w/Google_Apps
A instalação do Gradle é opcional, pois também é fornecida pelo próprio SDK do Android, mas sua instalação separada é altamente recomendada. A instalação pode ser realizada seguindo estas etapas:
Demo App
Um aplicativo simples será criado para demonstrar o uso das ferramentas descritas na seção anterior. Você pode simplesmente seguir as etapas fornecidas abaixo para obter uma idéia sobre o uso de expressões lambda nas Ferramentas do desenvolvedor do Android:
- Execute o Eclipse IDE e crie um novo aplicativo Android selecionando
File -> New -> Other -> Android -> Android Application Project
- Preencha o formulário que aparece como mostrado abaixo:
gradle_build.cmd:
gradle_post_build.cmd:
gradle_clean.cmd:
- Desmarque a
Project -> Build Automatically
opção de menu
- Clique com o botão direito do mouse no projeto e selecione
Properties -> Builders
e desmarque todos os construtores padrão fornecidos pelo ADT
- Clique no
New
botão na mesma janela e selecione Program
e clique emOK
- A nova janela de configuração do construtor será exibida. Preencha suas guias da seguinte maneira:
Main
Guia da nova configuração do construtor
Refresh
Guia da nova configuração do construtor
Environment
Guia da nova configuração do construtor
Build Options
Guia da nova configuração do construtor
- Crie o segundo construtor chamado
Gradle_Post_Build
que usa gradle_post_build.cmd
como seu programa. Todas as outras configurações deste construtor devem ser exatamente iguais às do construtor criado anteriormente. Esse construtor será responsável por copiar os artefatos criados pelo processo de construção na bin
pasta.
- Crie o terceiro construtor chamado
Gradle_Cleaner
que usa gradle_clean.cmd
como seu programa. Somente a Run the builder
configuração na guia final deve ser definida como During a Clean
. Todas as outras configurações deste construtor devem ser exatamente iguais com o primeiro construtor. Esse construtor será responsável pela limpeza dos artefatos criados pelo processo de construção, conforme o nome sugere.
Novos Construtores do HelloLambda
Projeto
- Clique com o botão direito do mouse no projeto e selecione
Export
- Selecione
Android -> Generate Gradle Build Files
e cliqueNext
- Selecione o projeto na próxima janela e clique em
Finish
- Vá para a pasta raiz do seu projeto e exclua os arquivos
gradlew
e gradlew.bat
. Excluir também gradle
pasta
- Volte para o Eclipse e selecione a
Project -> Clean
opção de menu. Preencha o formulário que aparece da seguinte maneira:
Clean Project
Janela
- Clique
OK
e aguarde até que o processo de limpeza seja concluído
- Adicione o snippet de código Java fornecido abaixo logo após a chamada para
setContentView
funcionar em sua MainActivity
classe:
- Altere o início do
build.gradle
arquivo até a sourceCompatibility
seção da seguinte maneira:
- Clique com o botão direito do mouse no projeto, selecione a
Properties -> Java Compiler
opção e defina todos os níveis de conformidade como Java 8. Isso fará com que o Eclipse reconheça novas construções do Java 8 como expressões lambda.
- Clique
No
na janela de notificação
- Clique com o botão direito do mouse no projeto e selecione
Build project
. O Eclipse começará a construir o projeto.
Processo de compilação
O Eclipse agora poderá reconhecer R.java
e buildConfig.java
arquivos e não exibirá nenhum red dots
que indique erros relacionados aos arquivos de recursos do projeto.
- Crie um novo
Run Configuration
para sua plataforma de destino Android clicando com o botão direito do mouse no projeto e selecionando Run As -> Run Configurations
. Por exemplo, este aplicativo de demonstração se parece com o mostrado abaixo no Genymotion VD:
Aplicação HelloLambda
Você pode observar na LogCat
janela que o trecho de código com uma expressão lambda simples funciona corretamente
Fonte: Usando expressões Java 8 Lambda nas ferramentas do desenvolvedor do Android