Android Studio говорит, что "невозможно разрешить символ", но компилирует проект

Я импортирую 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, и закрытие и повторное открытие моего проекта.

Ответ 1

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

РЕДАКТИРОВАТЬ: вы можете сделать "Файл" → "Недействительные кеши..." и выбрать опцию "Invalidate and Restart", чтобы исправить это.

EDIT 2: Это исправление должно работать для всех подобных инцидентов и не является специфическим разрешением twitter4j.

Ответ 2

Попробуйте изменить порядок зависимостей в файле > Структура проектa > (выберите проект) > Зависимости.

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

Ответ 3

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

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

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

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

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

import android.support.v4.app.FragmentActivity;

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

Дождитесь загрузки вещей и вуаля.

Ответ 4

Для моего был вызван проект импортированной библиотеки, введите что-то в build.gradle и удалите его еще раз и нажмите "Синхронизация", ошибка исчезла.

Ответ 5

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

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

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

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

Если вы не хотите делать это вручную каждый раз, когда нажимаете "Gradle Sync" (кто захочет это сделать...), вы можете добавить эту небольшую задачу 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, вам просто нужно перейти в окно Gradle, затем найти задачу "deleteArtifacts" в вашем приложении /Tasks/other/, щелкнуть по ней правой кнопкой мыши и выбрать "Выполнить". Перед синхронизацией "(см. Ниже).

Gradle window to configure task execution

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

Ответ 6

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

Как во-первых, я сделал так, что (File → Indicate Cashes) → (Invalidate и Restart).

Как и в прошлом, я resync мой файл build.gradle в моем приложении. После устранения проблемы.

Ответ 7

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

Нашел решение, подобное этому:

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

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

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

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

Weird...

Ответ 8

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

Ответ 9

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

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

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

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

Ответ 10

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

Ответ 11

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

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

Ответ 12

Недействительный кэш не работал у меня (на этот раз). Для меня было достаточно изменить gradle и синхронизацию снова. Или fooobar.com/questions/40443/...

Ответ 13

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

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

Ответ 14

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

Ответ 15

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

Ответ 16

Это сработало для меня -  (Файл → Показать каши) → (Invalidate и Restart).

Ответ 17

Я попробовал Invalidate cache/restart или очистить Project → rebuild project. Это не сработало для меня.

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

Ответ 18

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

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

Ответ 19

Измените компиляцию на реализацию в build.gradle.

Ответ 20

Изменение настроек ввода языка работало для меня.

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

enter image description here

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

enter image description here

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

enter image description here

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

Ответ 21

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

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

Ответ 22

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

  • 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

Ответ 23

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

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

Ответ 24

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

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

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

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

Вот оно, ошибка ушла!

До

Before

После

After

Ответ 25

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

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

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

Ответ 26

Закрытие всех файлов и закрытие Android Studio работает для меня.

Ответ 27

Вам необходимо перезагрузить Android Studio.