Встроенный компилятор Android Studio показывает красные ошибки, но компиляция с Gradle работает нормально


147

В соответствии с этим вопросом я настроил свой проект в Android Studio на использование библиотеки Square Wire .

Build-> Compile Projectработает отлично.

2:03:10 PM Compilation completed successfully in 31 sec

Однако если я открою один из моих сгенерированных файлов Protocol Buffer, пакет Square не будет распознан.

Встроенная ошибка компиляции Android Studio

Другим симптомом является то, что методы, унаследованные от Messageкласса Square , отображаются в редакторе как ошибки «Не удается разрешить метод», даже если они работают нормально.

Ошибка компиляции Android Studio в одной строке

Нужно ли делать что-то большее, чем просто добавление зависимости build.gradleдля моего модуля в мой проект?


У меня была похожая проблема с использованием моих библиотек (не внешних), посмотрите, как мне удается это исправить, здесь: stackoverflow.com/a/50569818/373033
nah0y

Ответы:


132

Следующие шаги помогают

  1. Закройте свой проект и в папке проекта удалите project/.idea
  2. Удалить ~/.gradleпапку.

Откройте проект еще раз. Все должно быть решено.


1
Тратить часы на эту проблему. Спасибо. Моя ошибка заключалась в том, что я просто удалил .gradle, а не .idea
M

2
Это сработало для меня, удалив .gradle и .idea, а затем отключив и перезапустив, решил мою проблему. а затем синхронизировать с Gradle.
Панкадж

Я переместил .gradleпапку C:\Users\Hasnain\.gradleв другой каталог. После этого андроид студия показывает ошибку на каждом классе. Затем я выполняю вышеуказанные шаги, после чего проблема решается.
hasnain_ahmad

38
Удаление всего в .ideaкаталоге - плохая идея, так как это может сбросить все настройки проекта. Просто удалив .idea/librariesи, .idea/cachesнаконец, решил проблему для меня после попытки всех других решений.
fdermishin

очень хорошо работал в AS 3.1.3. Мне даже не нужно было аннулировать кэши. Будем надеяться, что AS будет строить быстрее!
Кто-то где-то

111

Спасибо free3dom за то, что вы нашли меня на правильном пути.

диагностика

Sync Project with Gradle FilesВариант в Android Studio , кажется, сохранить Project Structureбиблиотеки в актуальном состоянии .

Gradle Sync

Однако в моем случае были некоторые ошибки:

ошибки найдены

Расширение (не очень очевидной) ссылки показало детали. Моя библиотека времени выполнения проводки отображалась в неверном месте:

библиотеки

Похоже, это было похмелье от моей первоначальной конфигурации, где я импортировал JAR в папку libs.

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
}

Впоследствии я изменил его, чтобы импортировать напрямую из Maven Central ( как здесь ), и кажется, что старые настройки никогда не перезаписывались новыми.

Исправление

Исправление заключается в удалении зависимости библиотеки с Project Structureэкрана, а затем Sync Project with Gradle Filesснова.

Более детально

Вы также можете увидеть, какой путь используется к ресурсу, открыв его .idea/libraries/wire_runtime_1_2_0.xmlнапрямую.

Мой сломанный был:

  <component name="libraryTable">
  <library name="wire-runtime-1.2.0">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/MY_MODULE/libs/wire-runtime-1.2.0.jar!/" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />

После удаления и повторного добавления библиотеки она изменилась на root url:

      <root url="jar://$USER_HOME$/.gradle/caches/artifacts-26/filestore/com.squareup.wire/wire-runtime/1.2.0/jar/44e7acbd5eb6f29698181dc3d67a60acf7efee80/wire-runtime-1.2.0.jar!/" />

Обновить

Android Studio v0.4.4, очевидно, исправляет другие ошибки, которые имеют те же симптомы, поэтому, если у вас более старая версия, вы можете обновить ее.


3
Спасибо, Дэн Дж. Прежде, чем я попробовал ваше решение, я попробовал это более простое (по мне), и оно сработало для меня: откройте панель Gradle в правой части редактора (над «Maven Projects» и «Commander») и нажав кнопку обновления. Это обновило настройки модуля. Кредиты @Matteo Danieli (см .: stackoverflow.com/a/17043001 )
almighty972

1
мне нужно было удалить локальные зависимости jar, которые решили это для меня, спасибо за вдохновение
jhegedus

Я только что нажал на «Синхронизировать проект с файлами Gradle», и теперь все в порядке! Большое спасибо! Ты спас мой день, ха-ха
Хорхе Габриэль Сикейра

Не работал для меня Но удаление .gradle и .idea сработало
Golnar

В настоящее время эта же кнопка отображается как значок слона со стрелкой вниз.
тм

87

Простое решение

Перейдите по ссылке, и у меня это сработало.

  1. Выберите Fileопцию из меню в левой верхней части Android Studio.
  2. Выберите опцию: Invalidate Cache/Restartоткроется диалоговое окно.
  3. Нажмите на первую кнопку с опцией: Invalidate and Restart
  4. Он закроет Android Studio и перезапустит его. Также начнется переиндексация проекта.

Это решило мою проблему

Перейдите в Файл > Неверный кэш / Перезапуск > Неверный и перезапустите

Источник здесь для YouTube


Это сработало для меня; Android Studio показала ошибки везде после того, как я попытался сделать некоторые программы в месте с плохим приемом Wi-Fi. (!!!) Затем я позаботился о том, чтобы у меня было хорошее соединение Wi-Fi, и восстановил, однако ошибки остались. Даже чистка / сборка не решали. Инвалидные кеши исправили это.
Кто-то где-то

Использование Android Studio 2.1.3 на Fedora. Это решение сработало для меня. Добавлены инструменты libgdx, и при импорте произошла ошибка, но она скомпилировалась просто отлично. Закрытие и повторное открытие не сработало, но аннулирование и перезапуск работали нормально.
JoeMoe1984

1
Работал в AS 3.1.4! Я думаю, что это из всех предложений является правильным способом справиться с этим. Это по команде меню Android Studio. Это определенно намного лучше, чем выполнять сброс вручную в файловой среде.
Ян Бергстрем

Работал для меня на 3.5.1
Нила

44

1) Нажмите на значок Gradle (справа на андроид студии)

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

2) Нажмите на кнопку обновления и подождите, пока проблема не будет решена: D

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


В Android Studio 3.1 + выберите «Файл»> «Неправильный кэш / перезапуск»> «Неправильный доступ и перезапуск».
DroidDev

17

У меня все еще была та же самая проблема с Android Studio v3.2.1, и я разобрался с проблемой, просто удалив эти две подпапки .ideaпапки (не нужно удалять всю .ideaпапку), пока не работала gradle-синхронизация:

  • ./idea/caches
  • ./idea/libraries

В большинстве случаев это решает мои проблемы. В некоторых других случаях может возникнуть необходимость «сделать недействительной кэш-память и перезапустить» или изменить версию Gradle.
GoRoS

12

Для меня удаление папки .gradle и .idea проекта решило проблему.


11

Просто сделайте это на своей Android-студии:

Файл -> Неправильные кэши / Перезапуск -> Неправильный и перезапуск

Это сработало для меня. Нет необходимости очищать папку ./gradle или ./idea


9

Мое хакерское решение для этого -

  1. Открой свой build.gradleфайл
  2. Вырежьте все внутри dependencies{}
  3. Вставьте в блокнот для супер безопасного временного хранения
  4. Выберите «Синхронизировать сейчас» в build.gradleфайле
  5. Подождите, пока сбой синхронизации
  6. Вставьте ваши зависимости обратно в
  7. «Синхронизировать сейчас» снова

Перепробовал много решений, и это было единственным исправлением для меня.


7

У меня была эта проблема после обновления до Android Studio 3.1. Я решил проблему, обновив все компоненты, которые я использую. Поэтому я изменил следующие записи в моем build.gradle (app):

  1. Обновите SDK (с «compileSdkVersion 25» до «compileSdkVersion 26» или выше, когда вы читаете эту заметку):

    // compileSdkVersion 25

    compileSdkVersion 26

    Комментарий: это изменение вынудило программу загрузить / установить новый SDK во время следующей синхронизации.

  2. Обновите appcompat-v7:

    // реализация 'com.android.support:appcompat-v7:25.4.0'

    реализация 'com.android.support:appcompat-v7:26.1.0'

  3. Обновление FireBase:

    // реализация 'com.google.firebase: firebase-ads: 11.4.2'

    реализация "com.google.firebase: firebase-core: 12.0.1"

    реализация "com.google.firebase: firebase-ads: 12.0.1"

  4. В PROJECT build.gradle обновите google-сервисы:

    // classpath 'com.google.gms: google-services: 3.1.0'

    classpath 'com.google.gms: google-services: 3.2.0'

  5. Обновите gradle (с 4.4 до 4.6). Из gradle-wrapper.properties: distributionUrl = https: //services.gradle.org/distributions/gradle-4.6-all.zip

После этих изменений очистите проект, аннулируйте кэш / перезапустите, удалите содержимое .idea / library и выполните повторную синхронизацию (не уверен в порядке, но ВСЕ эти действия решили проблему для меня).


1
как насчет других компонентов, которые не имеют более новой версии?
Амир Дадгари

Я не знаю. Это те компоненты, которые были у меня в проекте.
Пабло Альфонсо

Привет, Амир, согласно официальному сайту, Gradle 4.4 является последней доступной (по состоянию на март 2018 года). Где вы нашли Gradle 4.6?
Пабло Альфонсо

Я нашел местоположение Gradle 4.6. Я обновил ответ. Спасибо.
Пабло Альфонсо

4
удалить контент .idea / library, он работает для меня. Большое спасибо
Трамвай Нгуен

7

Удаление папки библиотеки в .idea решило проблему для меня. Он находится в корне проекта / .idea / library.

Я использую Android Studio 3.1.4


2
Это сработало, но я должен был сделать недействительным и перезапустить.
Дэн Андерсон

5

Ниже приведены шаги, когда проект успешно скомпилирован, но с неразрешенными классами (все классы будут использоваться красным цветом во всех файлах)

Шаг 1. Удалить .gradle файл

Шаг 2. Удалить .idea файл

Шаг 3. Откройте новое окно студии Android с другим Android-проектом в вашей системе и закройте ваш проект с ошибкой.

Шаг 3 . Теперь снова откройте / импортируйте проект с панели инструментов студии Android Studio -> Файл -> Открыть

Примечание. Теперь при импорте проекта новые папки .gradle и новые .idea будут автоматически созданы компилятором с разрешенными зависимостями.


2

Если все вышеперечисленные ответы не работают для вас. Просто попробуйте обновить ваши зависимости до последней версии. Это сработало для меня.


2

Я попробовал большинство из приведенных выше исправлений, и в действительности все работало, удалив все папки конфигурации .AndroidStudio, а затем перезапустив Android Studio.

  • Расположение: C: \ Users \ your.username

2

Я нашел легкий путь

  • Уровень открытого приложения build.gradle
  • Удалить зависимость, которая показывает ошибку и синхронизацию.
  • Снова добавить зависимость и синхронизацию.

Ошибка ушла!

Перед

Перед

После

После



2

Кажется, что каждый использует свой подход к решению этих проблем. Я предложу другой, который я считаю немного менее агрессивным, чем другие. Когда я внесу изменения из библиотеки aar, которую я включил, я открою файл «settings.gradle» для проекта.

Затем вырежьте основной модуль проекта из списка проектов:

include ':mainproj',

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


У меня отлично работает. Спасибо! @Jay Snayder
Шивам

2

Я исправлен по нижеуказанному методу

Способ 1

File> Invalidate Cache / Restart> Invalidate and Restart

Способ 2

  • Если вы столкнулись с этой ошибкой только для конкретного проекта, то сделайте это
   1. Close current project
   2. Go to your project path C://User/Android studio project/your project
   3. Delete two files .gradle and .idea
  • Если вы сталкиваетесь с этой ошибкой для всех проектов, то сделайте это
1. Close Android studio
2. Go to the file C://Users/your username/
3. Delete files .gradle , .cache ,.android, .AndroidStudio3.5

1

Эти решения не помогли мне решить ту же проблему в Android Studio 0.5.8.

Я описал свой ответ на тот же вопрос (наверное): https://stackoverflow.com/a/23891829/534698 Я только что удалил каталог ~ / .AndroidStudioPreview (в Ubuntu). Я пропустил все свои настройки Android Studio, но это работает.


это единственное, что сработало для меня. Android Studio 1.0.2
Бобби Харгетт

1

В моем случае по какой-то причине версия Android Plugin не была установлена. Я попытался очистить кеш и удалить .gradle и .idea, но это не сработало, и после долгих часов блуждания я нашел это.

Файл> Структура проекта


0

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



0

Для меня я ссылаюсь на банку в библиотеке модулей. Он не может разрешить символ в банке. Поэтому я нахожу решение для моей ситуации. Используйте providedспособ.

provided fileTree(include: ['xxx.jar'], dir: '../moduleX/libs')

0

Все ответы выше не сработали для меня. Моя проблема заключалась в том, что у меня было 3 модуля, причем 2 из них с одинаковым именем пакета .

Это было нормально для андроид студии <= 3.2.1.

Для андроид студии> 3.2.1, резюме было красным.

Я решил это так, как упомянул здесь (я только что сделал разные имена пакетов для каждого модуля): Любая версия Android Studio> 3.2.1 показывает красный ресурс, но все еще компилируется


0

Я получил ту же проблему, очищенную с помощью следующих шагов:

  1. обновить версию библиотеки в gradle на любое случайное число, например: lib_1.0.0 -> lib_1.0.0.0

  2. Gradle Sync

  3. синхронизация показывает ошибку

  4. отменить изменение версии lib_1.0.0.0 -> lib_1.0.0

  5. Gradle Sync

Откройте файл Java с импортом, чтобы увидеть, что ошибка устранена.


0

Ни одно из решений не помогло мне. Я прибегнул к удалению Java с моего компьютера, запустив Android Studio, чтобы убедиться, что он обнаружил удаление, а затем снова установил его.

Если вы решите пойти по этому пути, попробуйте изменить путь JDK и установить новый путь в структуре проекта. Если это не сработает, удалите Java .


0

У меня есть только сделать Чистый проект и Перестроить проект до перезапуска Android Studio, это решает мою проблему. Может быть, Android Studio на самом деле не обновляет ссылки в интерфейсе

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