Como definir -source 1.7 no Android Studio e Gradle

177

Estou recebendo o seguinte erro ao tentar compilar meu projeto no Android Studio:

Gradle: error: diamond operator is not supported in -source 1.6

Eu tenho 1.7 definido como destino em todas as preferências do projeto que encontrei. Além disso, o caminho exibido nos SDKs do projeto em 1.7 SDK é o caminho correto para a instalação do Java 1.7.

Mesmo quando executo java -version no terminal, ele diz que estou executando o java 1.7.

Eu tentei definir a variável env JAVA_HOME para isso:

/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home

O erro não desaparece. Como elimino o erro?

simekadam
fonte
Você sourceCompatibilityconfigurou em seu build.gradle?
fge
O suporte ao Java 7 foi adicionado nas ferramentas de construção 19. Por favor, verifique minha resposta editada.
Sergii Pechenizkyi 31/10

Respostas:

289

O suporte ao Java 7 foi adicionado nas ferramentas de construção 19. Agora você pode usar recursos como o operador diamond, multi-catch, try-with-resources, strings em switches, etc. Adicione o seguinte ao seu build.gradle.

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.0"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 19
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}

Gradle 1.7+, é necessário o plug-in Android gradle 0.6. +.

Observe que apenas tentar recursos requer minSdkVersion19. Outros recursos funcionam em plataformas anteriores.

Link para o guia do usuário do plugin android gradle

Link para ver como a origem e o destino são diferentes

Sergii Pechenizkyi
fonte
1
Isso funciona apenas no Android Studio ou é possível fazê-lo também no Eclipse com ADT?
Natix
1
É possível com o ADT mais recente para Eclipse. Confira a descrição completa aqui: sites.google.com/a/android.com/tools/recent/…
Sergii Pechenizkyi
7
woohoo para interruptores de corda!
Codificador
10
Observe que a tentativa com recursos só pode ser usada com a API 19 ou superior.
Alex Lockwood
73

Talvez essas respostas acima sejam antigas, mas com o novo Android Studios 1, faça o seguinte para ver o módulo rodar em 1.7 (ou 1.6, se preferir). Clique em Arquivo -> Estrutura do Projeto. Selecione o módulo que você deseja executar e, em "Compatibilidade de origem" e "Compatibilidade de destino", selecione 1.7. Clique OK".

Tela Estrutura do Projeto do Android Studios 1

Simon
fonte
5
Eu acho que esta é a resposta correta para o mais recente estúdio android. Eu gostaria de fazer isso também uma resposta correta ..
Pravin
1
Isso é essencialmente o mesmo que a resposta aceita.
Kerem
1
É apenas um recurso de conveniência, ele inserirá o código "compileOptions" descrito anteriormente no arquivo gradle.
user3259330
Como posso definir isso para 8?
Neon Warge
Não consigo ver 1.8 e 1.9? Embora a Ajuda Sobre -> diga que o Android studio está usando 1.8 JRE.
Srikar Reddy
14

Você pode alterá-lo na nova versão do Android studio (0.8.X)

Arquivo-> Outras Configurações -> Configurações Padrão -> Compilador (Expanda-o clicando na seta esquerda) -> Java Compiler -> Você pode alterar a versão do bytecode do Projeto aqui

insira a descrição da imagem aqui

San
fonte
8

Mais recente Android Studio 1.4.

Clique em Arquivo-> Estrutura do Projeto-> Local do SDK-> Local do JDK.

Você também pode definir a compatibilidade da versão JDK do módulo individual acessando o módulo (abaixo do local do SDK) e editando a compatibilidade de origem de acordo. (observe, isso se aplica apenas ao módulo Android).

Elye
fonte
Essa configuração é confusa, pois afeta todos os projetos, mesmo que seja denominada "Estrutura do projeto".
Oliver Hausler
5

Clique com o botão direito do mouse em seu projeto> Abrir Configuração do Módulo> Selecione "Projeto" na seção "Configuração do Projeto"

Altere o SDK do projeto para mais recente (pode ser a API 21) e o nível de idioma do projeto para 7+

kunal
fonte
4

Atualmente, o Android não suporta Java 7, apenas Java 6. Novos recursos no Java 7, como a sintaxe de diamante, não são, portanto, suportados no momento. Encontrar fontes para suportar isso não é fácil, mas eu pude descobrir que o mecanismo Dalvic é construído sobre um subconjunto do Apache Harmony que só suportava Java até a versão 6. E se você verificar os requisitos do sistema para o desenvolvimento de aplicativos Android, também indicará que pelo menos o JDK 6 é necessário (embora isso obviamente não seja uma prova real, apenas uma indicação). E isso diz praticamente o mesmo que eu. Se eu encontrar algo mais substancial, vou adicioná-lo.

Editar: Parece que o suporte ao Java 7 foi adicionado desde que escrevi originalmente esta resposta; verifique a resposta de Sergii Pechenizkyi .

blalasaadri
fonte
2
Aqui, uma pergunta semelhante com um link sobre como superar o problema: stackoverflow.com/questions/14487682/...
blalasaadri
2

Sempre use a versão mais recente do SDK para criar:

compileSdkVersion 23

Isso não afeta o comportamento do tempo de execução , mas fornece os recursos de programação mais recentes.

DenisKolodin
fonte
2

Vá para o seu Gradle e procure o sourceCompatibility e altere-o de 1.6 para 7 . Isso funcionou para mim, pelo menos.

Você também pode acessar as configurações do módulo e definir a Compatibilidade de Origem / Destino como 1.7.

Janela de configurações do módulo

Isso produzirá o seguinte código no seu Gradle:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}
Feorice
fonte