Android Studio dice "no se puede resolver el símbolo" pero el proyecto se compila

97

Estoy importando twitter4j en AndroidStudio, usando lo siguiente en mi build.gradle:

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

El proyecto se compila bien y puedo crear objetos de Twitter sin problemas. Sin embargo, en Android Studio, cualquier cosa que haga referencia a esa biblioteca muestra "no se puede resolver el símbolo" y se muestra en rojo. ¿Qué debo hacer para que Android Studio reconozca la biblioteca?

Ya intenté reconstruir el proyecto, ./gradlew clean, y cerrar y volver a abrir mi proyecto.

TG-T
fuente
año 2018, Android Studio 3+: a veces, Android Studio y Gradle no están de acuerdo. solución aquí: stackoverflow.com/questions/50313885/…
user1506104
Tuve el mismo problema después de importar un proyecto de ejercicio en Android Studio. Cuando importé, Android Studio me dio advertencias y me sugirió actualizar la versión sdk, así que seguí el consejo. Después de eso, algo ya no era compatible, por lo que Android Studio sugirió cambiar otra versión de otra cosa. Después de seguir todos estos consejos, tuve los mismos problemas de "no se puede encontrar el símbolo". Invertí el cambio, importé el proyecto nuevamente y esta vez no seguí las sugerencias de Android Studio. Después de eso, los errores desaparecieron. Tenga cuidado de seguir ciegamente las sugerencias de ese programa.
David

Respuestas:

237

No tengo idea de si esto funcionará o no, pero mi único pensamiento hasta ahora: haga clic derecho en el archivo jar en el árbol de archivos dentro de AS y seleccione "Agregar como biblioteca ..."

EDITAR: Puede hacer "Archivo" -> "Invalidar cachés ...", y seleccionar la opción "Invalidar y reiniciar" para arreglar esto.

EDITAR 2: Esta solución debería funcionar para todos los incidentes similares y no es una resolución específica de twitter4j.

doydoy
fuente
No obtengo eso como una opción cuando hago clic derecho en el frasco. Estoy ejecutando 0.2.13.
TG-T
Probablemente esto signifique que ya lo ha hecho. Pruebe Archivo> Estructura del proyecto y confirme que ve el archivo .jar en el nodo de módulos.
Doydoy
11
Invalidar los cachés y reiniciar no funciona para mí. También intenté reinstalar Android Studio y reimportar el proyecto. Esto es muy molesto ...
relojero
3
El "Archivo" -> "Invalidar cachés ..." acaba de salvar mi día. Perdí mucho tiempo en este tema. ¿Por qué esta respuesta no fue un resultado de búsqueda superior? Muchas gracias!
Eric Cochran
1
arrojando mi gratitud
Yevgeny Simkin
33

Intente cambiar el orden de las dependencias en Archivo> Estructura del proyecto> (seleccione su proyecto)> Dependencias.

Invalidate Caches no funcionó para mí, pero mover mi compilación de la parte inferior de la lista a la parte superior sí lo hizo.

Nauraushaun
fuente
Cambiar el orden de las dependencias me ayuda, probé todas las soluciones dadas en las respuestas, solo las tuyas me ayudan, gracias.
wqycsu
¡Mover solo una dependencia hacia arriba funcionó para mí! (Android Studio 3.0.1).
Sébastien
Sí, no es importante qué dependencia mueva, solo cambie el orden de cualquiera, esto también funciona para Android Studio 3.3.
karique
12

Esto es lo que funcionó para mí.

En el panel Proyecto, haga clic con el botón derecho en el nombre del proyecto y seleccione Open Module Settingsen el menú emergente.

luego cambie Compile SDK Versiona la versión mínima disponible (la versión mínima de SDK que estableció en el proyecto). Espere a que Android Studio cargue todo.

Le dará algunos errores, ignórelos.

Ahora vaya a su archivo java y Android Studio le sugerirá que importe

importar android.support.v4.app.FragmentActivity;

Importarlo, luego regresar Open Module Settingsy cambiar la versión de compilación sdk a la que era antes.

Espere a que las cosas se carguen y listo.

Georgi Dimitrov
fuente
es un trabajo brillante. en mi caso, Android Studio me informó que todas las clases de SDK no se pueden resolver (incluidas String, Integer, TextView, etc.). antes de eso, aStudio también me dijo que no puede encontrar el SDK de android-14 que usé para compilar mis proyectos. Ignoré eso, por lo que ocurrieron los problemas. finalmente, encontré esta respuesta y la sigo, cambié la versión sdk de compilación y luego funcionó. gracias por ahorrarme tiempo.
VinceStyling
Now go to your java file and android studio will suggest you importNo en mi caso
NineCattoRules
9

Para el mío fue causado por el proyecto de biblioteca importado, escriba algo en build.gradle y elimínelo nuevamente y presione sincronizar ahora, el error desapareció.

Beeing Jk
fuente
6

También tuve este problema con mi aplicación de Android dependiendo de algunas de mis propias bibliotecas de Android (usando Android Studio 3.0 y 3.1.1).

Cada vez que actualizaba una biblioteca y volvía a la aplicación, lo que activaba una sincronización de Gradle, Android Studio no podía detectar los cambios de código que hice en la biblioteca. La compilación funcionó bien, pero Android Studio mostró líneas de error rojas en algún código usando la biblioteca lib.

Después de investigar, descubrí que es porque gradle sigue apuntando a una versión compilada antigua de mis bibliotecas. Si va a yourProject / .idea / libraries / verá una lista de archivos xml que contiene el enlace a la versión compilada de sus bibliotecas. Estos archivos comienzan con Gradle__artifacts _ *. Xml (donde * es el nombre de sus bibliotecas).

Entonces, para que Android Studio tome la última versión de sus bibliotecas, debe eliminar estos archivos Gradle__artifacts _ *. Xml, y Android Studio los regenerará, apuntando a la última versión compilada de sus bibliotecas.

Si no desea hacer eso manualmente cada vez que hace clic en "Sincronización de Gradle" (quién querría hacer eso ...), puede agregar esta pequeña tarea de Gradle en el archivo build.gradle de su aplicación.

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()
        }
    }
}

Y para que su aplicación siempre ejecute esta tarea antes de hacer una sincronización de Gradle, solo necesita ir a la ventana de Gradle, luego encontrar la tarea "deleteArtifacts" en yourApp / Tasks / other /, haga clic derecho sobre ella y seleccione "Ejecutar Before Sync "(ver más abajo).

Ventana de Gradle para configurar la ejecución de tareas

Ahora, cada vez que hagas una sincronización de Gradle, Android Studio se verá obligado a usar la última versión de tus bibliotecas.

nah0y
fuente
5

Cuando viví con este problema (códigos de color rojo pero funcionan correctamente) en mi proyecto;

Como primero, lo hice que (Archivo -> Indicar cobros) -> (Invalidar y reiniciar).

Como último, resincronizo mi archivo build.gradle en mi aplicación. Después de que se resolvió el problema.

Oguzhan
fuente
3

Invalidate Caches / Restart no funcionó para mí esta vez.

Encontré una solución como esta:

  1. Quite la línea compile ***o implementation ***en build.gradle.

  2. Limpiar y reconstruir. Los errores deberían aparecer aquí.

  3. Agregue la línea del paso 1 de nuevo a build.gradle.

  4. Limpiar y reconstruir.

Extraño...

ZhangLei
fuente
2

Este problema me sucedió cuando mi proyecto de Glass no usaba el SDK instalado en la ubicación predeterminada de Android Studio. Estaba usando otra ubicación que tenía anteriormente de ADT, ya que estaba tratando de evitar volver a descargar todo. Una vez que apunté el proyecto a la ubicación del SDK en la ubicación de instalación de Android Studio, el problema desapareció.

DaveTrux
fuente
Sí, supongo que también es un buen saludo: de forma predeterminada, Android Studio decidirá que todos los SDK están instalados en el directorio de instalación predeterminado de Android Studio. Esto deberá modificarse si algo no sigue ese patrón.
doydoy
2

¡Tuve este problema durante un par de días y finalmente lo resolví! Todas las demás soluciones no funcionaron para mí por cierto.

Solución: ¡Tenía caracteres especiales en la ruta de mi proyecto!

Solo asegúrese de no tener ninguno de esos y debería estar bien o al menos una de las otras soluciones debería funcionar para usted.

¡Espero que esto ayude a alguien!

GrAPPfruit
fuente
¡Compruebe si tiene una ruta de proyecto que tenga caracteres especiales como! (signo de exclamación). En un problema similar que experimenté stackoverflow.com/questions/32477067/… , esta fue la causa principal. Muchas aplicaciones Java parecen no tolerar tales caracteres especiales (por ejemplo, hacer un 'gradlew clean' desde el terminal fallaría y arrojaría una RunTimeException). Ninguna de las otras soluciones publicadas en línea me había ayudado. Pero, una vez que quité el! del camino e hizo una compilación limpia, Android Studio funcionó mágicamente.
Jim C
¡INCREIBLE! Gracias :)
Josep Escobar
1

Recientemente tuve el mismo problema con Android Studio 1.3. La única solución que funcionaba era eliminar las carpetas .gradle e .idea y volver a importar el proyecto a Android Studio.

ticofab
fuente
1

Para aquellos que probaron la respuesta aceptada y no tuvieron éxito,

Probé también la respuesta aceptada y no funcionó para mí. Después de eso, actualicé mi proyecto con el repositorio y sincronicé el proyecto y las advertencias que no pudieron resolver desaparecieron.

drJava
fuente
0

En mi caso, había creado un nuevo archivo usando la GUI y definí una interfaz dentro del archivo. Seguí recibiendo este símbolo de error porque el archivo no era un archivo "java". No tenía extensión en absoluto.

Después de modificar la extensión del archivo a ".java", el sistema encuentra correctamente los símbolos.

usuario3549463
fuente
0

En mi caso, el archivo jar no tenía un archivo META-INF / MANIFEST.MF. Después de agregar uno, ¡funcionó!

Mahé
fuente
0

Para mi caso de trabajar con AndroidStudio 2.2.3, la solución fue cambiar el envoltorio / distribución de Gradle para usar uno local en la Configuración de Gradle (a pesar de ser "recomendado"). ingrese la descripción de la imagen aquí

Hack06
fuente
0

Esto funcionó para mí-- (Archivo -> Indicar cobros) -> (Invalidar y reiniciar).

Shubhamhackz
fuente
0

Intenté Invalidar caché / reiniciar o limpiar Proyecto -> reconstruir proyecto. Estos no funcionaron para mí.

La solución final fue abrir la ventana Proyecto en el lado izquierdo del IDE, en el modo Proyecto, eliminar la carpeta .gradle y .idea, LUEGO puede invalidar las cachés y reiniciar. Esto lo arregló.


fuente
0

Cambie la compilación a la implementación en build.gradle.

Raulp
fuente
0

Cambiar la configuración de inyección de idioma funcionó para mí.

Coloque el cursor en cualquiera de los códigos subrayados en rojo y Alt + Enter

ingrese la descripción de la imagen aquí

Ahora seleccione Language Injection Settingsy se abrirá una ventana como se muestra a continuación.

ingrese la descripción de la imagen aquí

Desmarque la opción seleccionada y haga clic en Aceptar

ingrese la descripción de la imagen aquí

Espero que esto ayude a alguien.

Bahía Tricky
fuente
0

Me sucedió cuando eliminé todos los archivos .gradle/caches, luego Studio descargó las dependencias. Las dependencias no se muestran en External Librariespero puedo compilar la aplicación con éxito. rebuild clean Invalidate and Restartno tienen ningún efecto. Resolví el problema por los pasos:

  • Cerrar Android Studio por completo
  • Eliminar .ideapaquete en su proyecto
  • Reinicie Android Studio
Joe
fuente
0

He intentado esto pero nada funcionó para mí:

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

En mi caso, haz lo siguiente:

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

Para mí, actualicé gradle-wrapper.properties en 4.4

distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
Gowthaman M
fuente
0

Encontré la manera más fácil

Identifique la biblioteca que está causando el error de sintaxis en Studio.

Por ejemplo, si AppCompatActivitymuestra un error, realizará la siguiente operación en AppCompat Dependency.

  • Elimine la dependencia que muestra un error de sintaxis y sincronización.
  • Agregar de nuevo y sincronizar.

Eso es todo, ¡el error desapareció!

antes de

antes de

Después

Después

Khemraj
fuente
0

Ninguna de las respuestas anteriores me funciona.

Después de muchos intentos, actualicé com.android.tools.build:gradle en Project / build.gradle de 2.3.0 a 3.0.1, y funciona.

Supongo que la versión de com.android.tools.build:gradle debería coincidir con la versión de AndroidStudio, y mi versión de AS es 3.2.1

Hao Qi
fuente
0

Cerrar todos los archivos y cerrar Android Studio funciona para mí.

Sayali Shinde
fuente
-2

Debes reiniciar Android Studio.

george mano
fuente