O Android Studio diz "não é possível resolver o símbolo", mas o projeto compila


97

Estou importando o twitter4j no AndroidStudio, usando o seguinte em meu build.gradle:

dependencies {
  compile 'com.android.support:support-v4:18.0.+'
  compile files('libs/twitter4j-core-3.0.4.jar')
}

O projeto é compilado bem e posso criar objetos do Twitter sem problemas. No entanto, no Android Studio, qualquer coisa que faça referência a essa biblioteca mostra "não é possível resolver o símbolo" e é exibida em vermelho. O que preciso fazer para que o Android Studio reconheça a biblioteca?

Já tentei reconstruir o projeto, ./gradlew clean, e fechar e reabrir meu projeto.



ano 2018, Android Studio 3+: às vezes, Android Studio e Gradle não combinam. solução aqui: stackoverflow.com/questions/50313885/…
user1506104

Tive o mesmo problema depois de importar um projeto de exercício para o Android Studio. Quando importei o Android Studio me deu avisos e sugeriu atualizar a versão sdk, então segui o conselho. Depois disso, algo não era mais compatível, então o Android Studio sugeriu mudar outra versão de outra coisa. Depois de seguir todos esses conselhos, tive os mesmos problemas de "não consigo encontrar o símbolo". Eu reverti a alteração, importei o projeto novamente e não segui as dicas do Android Studio desta vez. Depois disso, os erros desapareceram. Tenha cuidado ao seguir cegamente as sugestões desse programa.
David

Respostas:


237

Não tenho ideia se isso vai funcionar ou não, mas meu único pensamento até agora: clique com o botão direito no arquivo jar na árvore de arquivos dentro do AS e selecione "Adicionar como biblioteca ..."

EDITAR: Você pode fazer "Arquivo" -> "Invalidar Caches ..." e selecionar a opção "Invalidar e Reiniciar" para corrigir isso.

EDIT 2: esta correção deve funcionar para todos os incidentes semelhantes e não é uma resolução específica do twitter4j.


Não estou entendendo isso como uma opção quando clico com o botão direito no frasco. Estou executando 0.2.13.
TG-T de

Isso provavelmente significa que você já fez isso. Tente Arquivo> Estrutura do projeto e confirme se você vê o arquivo .jar no nó de módulos.
doydoy

11
Invalidar os caches e reiniciar não funciona para mim. Também tentei reinstalar o android studio e reimportar o projeto. Isso é muito chato ...
relojoeiro

3
O "Arquivo" -> "Invalidar Caches ..." acabou de salvar meu dia. Perdi muito tempo com esse assunto. Por que esta resposta não foi um dos principais resultados da pesquisa? Muito obrigado!
Eric Cochran

1
lançando minha gratidão
Yevgeny Simkin

33

Tente alterar a ordem das dependências em Arquivo> Estrutura do projeto> (selecione seu projeto)> Dependências.

Invalidar caches não funcionou para mim, mas mover minha compilação do final da lista para o topo funcionou.


Mudar a ordem das dependências me ajuda, tentei todas as soluções dadas nas respostas, só as suas me ajudem, obrigado.
wqycsu

Mover apenas uma dependência funcionou para mim! (Android Studio 3.0.1).
Sébastien

Sim, não importa qual dependência você move, apenas altere a ordem de qualquer um, isso funciona para o Android Studio 3.3 também.
Karique de

12

Isto é o que funcionou para mim.

No painel Projeto, clique com o botão direito do mouse no nome do projeto e selecione Open Module Settingsno menu pop-up.

em seguida, mude Compile SDK Versionpara a versão mínima disponível (a versão SDK mínima definida no projeto). aguarde o Android Studio carregar tudo.

Ele apresentará alguns erros, ignore-os.

Agora vá para o seu arquivo java e o Android Studio irá sugerir que você importe

import android.support.v4.app.FragmentActivity;

Importe-o, depois volte Open Module Settingse altere a versão SDK de compilação de volta ao que era antes.

Espere que as coisas carreguem e pronto.


é um trabalho brilhante. no meu caso, o Android Studio me relatou que todas as classes do SDK não podem ser resolvidas (incluindo String, Integer, TextView etc.). antes disso, aStudio também me disse que não consegue encontrar o SDK do android-14 que usei para compilar meus projetos. Ignorei isso para que os problemas ocorressem. enfim, achei esta resposta e sigo, mude a versão do SDK de compilação então funcionou. graças a economizar tempo.
VinceStyling de

Now go to your java file and android studio will suggest you importNão no meu caso
NineCattoRules

9

Pois o meu foi causado pelo projeto de biblioteca importado, digite algo em build.gradle e exclua novamente e pressione sync agora, o erro desapareceu.


6

Eu também tive esse problema com meu aplicativo Android dependendo de algumas de minhas próprias bibliotecas Android (usando o Android Studio 3.0 e 3.1.1).

Sempre que atualizo uma biblioteca e volto para o aplicativo, acionando um Gradle Sync, o Android Studio não consegue detectar as alterações de código que fiz na biblioteca. A compilação funcionou bem, mas o Android Studio mostrou linhas de erro vermelhas em alguns códigos que usam a lib.

Depois de investigar, descobri que é porque o gradle continua apontando para uma versão compilada de minhas bibliotecas. Se você acessar yourProject / .idea / libraries /, verá uma lista de arquivos xml que contém o link para a versão compilada de suas bibliotecas. Esses arquivos começam com Gradle__artifacts _ *. Xml (onde * é o nome de suas bibliotecas).

Portanto, para que o Android Studio obtenha a versão mais recente de suas libs, você precisa excluir esses arquivos Gradle__artifacts _ *. Xml e o Android Studio os regenerará, apontando para a última versão compilada de suas libs.

Se você não quiser fazer isso manualmente toda vez que clicar em "Gradle sync" (quem gostaria de fazer isso ...), você pode adicionar esta pequena tarefa do Gradle no arquivo build.gradle do seu aplicativo.

task deleteArtifacts {
    doFirst {
        File librariesFolderPath = file(getProjectDir().absolutePath + "/../.idea/libraries/")
        File[] files = librariesFolderPath.listFiles({ File file -> file.name.startsWith("Gradle__artifacts_") } as FileFilter)

        for (int i = 0; i < files.length; i++) {
            files[i].delete()
        }
    }
}

E para que seu aplicativo sempre execute essa tarefa antes de fazer uma sincronização do Gradle, você só precisa ir para a janela do Gradle, encontrar a tarefa "deleteArtifacts" em yourApp / Tasks / other /, clicar com o botão direito e selecionar "Execute Antes de sincronizar "(veja abaixo).

Janela do Gradle para configurar a execução da tarefa

Agora, sempre que você fizer uma sincronização do Gradle, o Android Studio será forçado a usar a versão mais recente de suas bibliotecas.


5

Quando vivi com esse problema (códigos de cores vermelhos, mas funcionam corretamente) no meu projeto;

Primeiramente, fiz isso (Arquivo -> Indicar Cashes) -> (Invalidar e Reiniciar).

Por último, eu ressincronizo meu arquivo build.gradle em meu aplicativo. Depois que o problema foi resolvido.


3

Invalidate Caches / Restart não funcionou para mim neste momento.

Encontrou uma solução como esta:

  1. Remova a linha compile ***ou implementation ***em build.gradle.

  2. Limpe e reconstrua. Os erros devem ser levantados aqui.

  3. Adicione a linha na etapa 1 de volta ao build.gradle.

  4. Limpe e reconstrua.

Esquisito...


2

Esse problema aconteceu comigo quando meu projeto do Glass não estava usando o SDK instalado no local padrão do Android Studio. Eu estava usando outro local que tinha anteriormente do ADT, pois estava tentando evitar o download de tudo novamente. Assim que apontei o projeto de volta para o local do SDK no local de instalação do Android Studio, o problema foi embora.


Sim, acho que também é um bom grito: por padrão, o android studio decidirá que todos os SDKs estão instalados no diretório de instalação padrão do android studio. Isso precisará ser alterado se algo não seguir esse padrão.
doydoy

2

Eu tive esse problema por alguns dias e finalmente descobri! Todas as outras soluções não funcionaram para mim btw.

Solução: Eu tinha caracteres especiais no caminho do meu projeto!

Apenas certifique-se de não ter nenhum desses e você deve ficar bem ou pelo menos uma das outras soluções deve funcionar para você.

Espero que isso ajude alguém!


Verifique se você tem um caminho de projeto com caracteres especiais como! (ponto de exclamação). Em um problema semelhante que experimentei stackoverflow.com/questions/32477067/… , esta foi a causa raiz. Muitos aplicativos Java parecem não tolerar esses caracteres especiais (por exemplo, fazer uma 'limpeza gradlew' no terminal poderia falhar e lançar uma RunTimeException.). Nenhuma das outras soluções postadas online me ajudou. Mas, depois de remover o! do caminho e fez uma construção limpa, o Android Studio funcionou magicamente.
Jim C

WOW INCRÍVEL! Obrigado :)
Josep Escobar

1

Tive o mesmo problema recentemente com o Android Studio 1.3. A única solução de trabalho foi remover as pastas .gradle e .idea e reimportar o projeto para o Android Studio.


1

Para aqueles que tentaram a resposta aceita e não tiveram sucesso,

Tentei também a resposta aceita e não funcionou para mim. Depois disso, atualizei meu projeto com o repositório e sincronizei o projeto e os avisos de não foi possível resolver desapareceram.




0

No meu caso, criei um novo arquivo usando a GUI e defini uma interface dentro do arquivo. Continuei recebendo este erro de símbolo porque o arquivo não era um arquivo "java". Não tinha extensão alguma.

Após modificar a extensão do arquivo para ".java", o sistema encontra corretamente os símbolos.


0

No meu caso, o arquivo jar não tinha um arquivo META-INF / MANIFEST.MF. Depois de adicionar um, funcionou!


0

Para o meu caso de trabalho com AndroidStudio 2.2.3, a solução foi mudar o wrapper / distribuição do gradle para usar um local nas configurações do Gradle (apesar de ser "recomendado"). insira a descrição da imagem aqui


0

Isso funcionou para mim - (Arquivo -> Indicar dinheiro) -> (Invalidar e reiniciar).


0

Tentei invalidar cache / reiniciar ou limpar projeto -> reconstruir projeto. Isso não funcionou para mim.

A solução final foi abrir a janela Project no lado esquerdo do IDE, no modo Project, excluir a pasta .gradle e .idea, ENTÃO você pode invalidar caches e reiniciar. Isso consertou.


0

Altere a compilação para a implementação no build.gradle.


0

Alterar as configurações de injeção de idioma funcionou para mim.

Coloque o cursor em qualquer um dos códigos sublinhados em vermelho e Alt + Enter

insira a descrição da imagem aqui

Agora selecione Language Injection Settingse uma janela será aberta conforme mostrado abaixo.

insira a descrição da imagem aqui

Desmarque a opção selecionada e clique em Ok

insira a descrição da imagem aqui

Espero que isso ajude alguém.


0

Aconteceu comigo quando removi todos os arquivos .gradle/cachese o Studio baixou as dependências. As dependências não foram mostradas no External Librariesmas posso construir o aplicativo com sucesso. rebuild clean Invalidate and Restartnão tem efeito. Resolvi o problema com as etapas:

  • Feche o Android Studio completamente
  • Remova o .ideapacote do seu projeto
  • Reinicie o Android Studio

0

Eu tentei isso, mas nada funcionou para mim:

  • Invalidate Caches / Restart
  • Changing the order of dependencies
  • Sync project with Gradle Files
  • Clean -> Rebuild Project

No meu caso, basta fazer:

  • Delete all files in .idea/libraries folder
  • Rebuild Project

0

Para mim, atualizei gradle-wrapper.properties para 4.4

distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

0

Eu encontrei a maneira mais fácil

Identifique a biblioteca que está causando o erro de sintaxe no Studio.

Por exemplo, se AppCompatActivityestiver mostrando um erro, você executará a operação abaixo na dependência AppCompat.

  • Remova a dependência que está mostrando erro de sintaxe e sincronização.
  • Adicionar novamente e sincronizar.

É isso aí, o erro foi embora!

Antes

Antes

Depois de

Depois de


0

Nenhuma das respostas acima funciona para mim.

Depois de muitas tentativas, atualizei com.android.tools.build:gradle em Project / build.gradle de 2.3.0 para 3.0.1 e funciona.

Acho que a versão do com.android.tools.build:gradle deve ser compatível com a versão do AndroidStudio, e minha versão do AS é 3.2.1



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.