Android Studio сообщает «не удается разрешить символ», но проект компилируется


97

Я импортирую twitter4j в AndroidStudio, используя в своем build.gradle следующее:

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

Проект компилируется нормально, и я могу без проблем создавать объекты twitter. Однако в студии Android все, что ссылается на эту библиотеку, показывает «не удается разрешить символ» и отображается красным цветом. Что мне нужно сделать, чтобы Android Studio распознала библиотеку?

Я уже пробовал перестроить проект, ./gradlew clean, закрыть и снова открыть свой проект.



2018 год, Android Studio 3+: иногда Android Studio и Gradle не соглашаются. решение здесь: stackoverflow.com/questions/50313885/…
user1506104

У меня была такая же проблема после импорта проекта упражнения в Android Studio. При импортировании Android Studio выдала мне предупреждения и предложила обновить версию sdk, поэтому я последовал совету. После этого что-то больше не было совместимо, поэтому Android Studio предложила изменить другую версию чего-то другого. После всех этих советов у меня возникли те же проблемы «не могу найти символ». Я отменил изменения, снова импортировал проект и на этот раз не следовал подсказкам Android Studio. После этого ошибки исчезли. Будьте осторожны, слепо следуя советам этой программы.
Дэвид

Ответы:


237

Понятия не имею, сработает это или нет, но моя единственная мысль на данный момент: щелкните правой кнопкой мыши файл jar в дереве файлов в AS и выберите «Добавить как библиотеку ...»

РЕДАКТИРОВАТЬ: Вы можете сделать «Файл» -> «Недействительные кеши ...» и выбрать опцию «Недействительность и перезапуск», чтобы исправить это.

РЕДАКТИРОВАТЬ 2: это исправление должно работать для всех подобных инцидентов и не является специфическим решением для twitter4j.


Я не получаю это как вариант, когда щелкаю банку правой кнопкой мыши. Я использую 0.2.13.
TG-T

Вероятно, это означает, что вы уже это сделали. Попробуйте «Файл»> «Структура проекта» и убедитесь, что вы видите файл .jar в узле модулей.
дойдой

11
Аннулирование кешей и перезапуск у меня не работают. Я также попытался переустановить студию Android и повторно импортировать проект. Это очень раздражает ...
clocksmith

3
«Файл» -> «Недействительные кеши ...» просто спасли меня. Я потратил столько времени на эту проблему. Почему этот ответ не был одним из первых результатов поиска? Спасибо вам большое!
Эрик Кокран

1
Кидая свою благодарность
Евгений Симкин

33

Попробуйте изменить порядок зависимостей в File> Project Structure> (выберите свой проект)> Dependencies.

Invalidate Cache у меня не сработал, но перемещение моей сборки из нижней части списка в верх сработало.


Мне помогает изменение порядка зависимостей, я перепробовал все решения, приведенные в ответах, мне помогает только ваше, спасибо.
wqycsu 05

Перемещение только одной зависимости вверх помогло мне! (Android Studio 3.0.1).
Себастьен

Да, не важно, какую зависимость вы перемещаете, просто измените порядок кого угодно, это работает и для Android Studio 3.3.
Карик

12

Это то, что у меня сработало.

На панели «Проект» щелкните правой кнопкой мыши имя проекта и выберите его Open Module Settingsво всплывающем меню.

затем измените Compile SDK Version минимальную доступную версию (минимальную версию sdk, установленную в проекте). подождите, пока студия Android загрузит все.

Это выдаст вам несколько ошибок, игнорируйте их.

Теперь перейдите в свой файл java, и студия Android предложит вам импортировать

import android.support.v4.app.FragmentActivity;

Импортируйте его, затем вернитесь Open Module Settingsи измените версию скомпилированного sdk на то, что было раньше.

Подождите, пока все загрузится, и вуаля.


это блестящая работа. в моем случае Android Studio сообщила, что все классы SDK не могут быть разрешены (включая String, Integer, TextView и т. д.). перед этим aStudio также сообщила мне, что не может найти SDK для android-14, который я использовал для компиляции своих проектов. Я проигнорировал это, поэтому возникли проблемы. наконец, я нашел этот ответ и следую, изменил версию компиляции sdk, после чего работал. спасибо, что сэкономил мне время.
VinceStyling

Now go to your java file and android studio will suggest you importНе в моем случае
NineCattoRules

9

Поскольку мой был вызван импортированным проектом библиотеки, введите что-нибудь в build.gradle, удалите его снова и нажмите синхронизацию, ошибка исчезла.


6

У меня также была эта проблема с моим Android-приложением в зависимости от некоторых моих собственных библиотек Android (с использованием Android Studio 3.0 и 3.1.1).

Всякий раз, когда я обновлял библиотеку и возвращался в приложение, вызывая Gradle Sync, Android Studio не могла обнаружить изменения кода, которые я внес в библиотеку. Компиляция работала нормально, но Android Studio показывала красные строки ошибок в некотором коде с использованием библиотеки lib.

После исследования я обнаружил, что это потому, что gradle продолжает указывать на старую скомпилированную версию моих библиотек. Если вы перейдете в yourProject / .idea / libraries /, вы увидите список файлов xml, которые содержат ссылку на скомпилированную версию ваших библиотек. Эти файлы начинаются с Gradle__artifacts _ *. Xml (где * - имя ваших библиотек).

Итак, чтобы Android Studio могла использовать последнюю версию ваших библиотек, вам необходимо удалить эти файлы Gradle__artifacts _ *. Xml, и Android Studio восстановит их, указав на последнюю скомпилированную версию ваших библиотек.

Если вы не хотите делать это вручную каждый раз, когда нажимаете «Синхронизация Gradle» (кто захочет это сделать ...), вы можете добавить эту небольшую задачу gradle в файл build.gradle вашего приложения.

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

И для того, чтобы ваше приложение всегда выполняло эту задачу перед синхронизацией с градиентом, вам просто нужно перейти в окно Gradle, затем найти задачу «deleteArtifacts» в вашем приложении / Tasks / other /, щелкнуть ее правой кнопкой мыши и выбрать «Выполнить» Перед синхронизацией »(см. Ниже).

Окно Gradle для настройки выполнения задачи

Теперь каждый раз, когда вы выполняете синхронизацию Gradle, Android Studio будет вынуждена использовать последнюю версию ваших библиотек.


5

Когда я столкнулся с этой проблемой (коды красного цвета, но они работают правильно) в моем проекте;

Сначала я сделал это (Файл -> Указать кеши) -> (Отменить и перезапустить).

В последнюю очередь я повторно синхронизирую файл build.gradle в своем приложении. После того, как проблема была решена.


3

Invalidate Caches / Restart на этот раз у меня не сработало.

Нашел такое решение:

  1. Удалите строку compile ***или implementation ***в build.gradle.

  2. Очистите и восстановите. Здесь следует указывать на ошибки.

  3. Добавьте строку из шага 1 обратно в build.gradle.

  4. Очистите и восстановите.

Странно ...


2

Эта проблема возникла у меня, когда мой проект Glass не использовал SDK, установленный в местоположении по умолчанию Android Studio. Я использовал другое местоположение, которое у меня было ранее от ADT, так как я пытался избежать повторной загрузки всего. Как только я указал проект обратно в местоположение SDK в месте установки Android Studio, проблема исчезла.


Да, я думаю, это тоже хороший крик: по умолчанию студия Android решит, что все SDK установлены в каталоге установки студии Android по умолчанию. Это нужно будет исправить, если что-то не соответствует этому шаблону.
doydoy

2

У меня была эта проблема пару дней и наконец разобралась! Все остальные решения, кстати, у меня не работали.

Решение: в моем пути к проекту были специальные символы!

Просто убедитесь, что у вас нет ни одного из них, и все должно быть в порядке или хотя бы одно из других решений должно работать на вас.

Надеюсь, это кому-то поможет!


Пожалуйста, проверьте, есть ли у вас в пути к проекту специальные символы, например! (восклицательный знак). В аналогичной проблеме, с которой я столкнулся с stackoverflow.com/questions/32477067/… , это была основная причина. Многие приложения Java, похоже, не допускают таких специальных символов (например, выполнение «gradlew clean» с терминала приведет к сбою и выдаче исключения RunTimeException.). Ни одно из других решений, размещенных в Интернете, мне не помогло. Но как только я удалил! с пути и сделал чистую сборку, Android Studio волшебным образом сработала.
Джим С.

УХ ТЫ, ПОТРЯСАЮЩЕ! Спасибо :)
Josep Escobar

1

Недавно у меня была такая же проблема с Android Studio 1.3. Единственным рабочим решением было удалить папки .gradle и .idea и повторно импортировать проект в Android Studio.


1

Для тех, кто попробовал принятый ответ и не добился успеха,

Я попробовал также принятый ответ и не работал у меня. После этого я обновил свой проект с помощью репозитория и синхронизировал проект, и предупреждения о невозможности устранения исчезли.



1

Если бы ничто другое не помогло, вы могли бы сделать так, как Android Studio внезапно не может разрешить символы :

  • Выйти из Android Studio
  • Сделайте резервную копию вашего проекта
  • Удалите все файлы .iml и папку .idea
  • Перезапустите Android Studio и повторно импортируйте свой проект.

0

В моем случае я создал новый файл с помощью графического интерфейса пользователя и определил интерфейс внутри файла. Я продолжал получать эту ошибку символа, потому что файл не был файлом "java". У него вообще не было расширения.

После изменения расширения файла на «.java» система правильно находит символы.


0

В моем случае в файле jar не было файла META-INF / MANIFEST.MF. После добавления одного все заработало!


0

В моем случае, когда я работал с AndroidStudio 2.2.3, решение заключалось в том, чтобы изменить оболочку / дистрибутив Gradle, чтобы использовать локальную в настройках Gradle (несмотря на то, что она «рекомендована»). введите описание изображения здесь


0

Это сработало для меня - (Файл -> Указать кеши) -> (Недействительность и перезапуск).


0

Я попробовал сделать недействительный кеш / перезапустить или очистить проект → перестроить проект. У меня это не сработало.

Окончательным решением было открыть окно проекта в левой части среды IDE в режиме проекта, удалить папку .gradle и .idea, ЗАТЕМ вы можете аннулировать кеши и перезапустить. Это исправило это.



0

У меня сработало изменение настроек языковой инъекции.

Поместите курсор на любой красный подчеркнутый код и Alt + Enter

введите описание изображения здесь

Теперь выберите, Language Injection Settingsи откроется окно, как показано ниже.

введите описание изображения здесь

Снимите флажок с выбранной опции и нажмите ОК.

введите описание изображения здесь

Надеюсь, это кому-то поможет.


0

Это случилось со мной, когда я удалил файлы целиком .gradle/caches, а затем студия загрузила зависимости. Зависимости не показаны в, External Librariesно я могу успешно построить приложение. rebuild clean Invalidate and Restartне имеют никакого эффекта. Решил проблему по шагам:

  • Полностью закройте Android Studio
  • Удалить .ideaпакет в вашем проекте
  • Перезагрузите Android Studio

0

Я пробовал это, но у меня ничего не работало:

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

В моем случае просто сделайте:

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

0

Для меня я обновил gradle-wrapper.properties до 4.4

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

0

Я нашел самый простой способ

Определите библиотеку, которая вызывает синтаксическую ошибку в Studio.

Например, если AppCompatActivityотображается ошибка, вы выполните следующую операцию на AppCompat Dependency.

  • Удалите зависимость, которая показывает синтаксическую ошибку и синхронизацию.
  • Добавить еще раз и синхронизировать.

Вот и все, ошибка исчезла!

Перед

Перед

После

После


0

Ни один из приведенных выше ответов не работает для меня.

После множества попыток я обновил com.android.tools.build:gradle в Project / build.gradle с 2.3.0 до 3.0.1, и он работает.

Я предполагаю, что версия com.android.tools.build:gradle должна соответствовать версии AndroidStudio, а моя версия AS - 3.2.1



Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.