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?


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


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


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


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).


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+


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 .


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.


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
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.