Встроенный компилятор Android Studio показывает красные ошибки, но компиляция с помощью gradle отлично работает
Я установил свой проект в Android Studio, чтобы использовать Square Wire library, согласно этот вопрос.
Build
→ Compile Project
отлично работает.
2:03:10 PM Compilation completed successfully in 31 sec
Однако, если я открою один из моих сгенерированных файлов Buffer протокола, пакет Square не будет распознан.
![Android Studio inline compile errors]()
Другим симптомом является то, что методы, унаследованные от класса Square Message
, отображаются как "Невозможно разрешить метод" компилировать ошибки в редакторе, даже если они строят и работают нормально.
![Android Studio single line compile error]()
Мне нужно сделать что-то большее, чем просто добавить зависимость в build.gradle
для моего модуля в моем проекте?
Ответы
Ответ 1
Спасибо free3dom за то, что вы меня на правильном пути.
Диагностика
Опция Sync Project with Gradle Files
в Android Studio, похоже, обновляет библиотеки Project Structure
.
![gradle sync]()
Однако в моем случае были некоторые ошибки:
![errors found]()
Расширение (не очень очевидная) ссылка показала детали. Моя проводная библиотека времени показывалась в неправильном месте:
![libraries]()
Это казалось похмелье из моей первоначальной конфигурации, где я импортировал 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 по-видимому, исправляет другие ошибки, которые имеют те же симптомы, поэтому, если у вас есть более старая версия, которую вы, возможно, захотите обновить.
Ответ 2
Следующие шаги помогают
- Закройте ваш проект, и в папке вашего проекта удалите
project/.idea
- Удалить папку
~/.gradle
.
Откройте проект снова. Все должно быть решено.
Ответ 3
Простое решение
Перейдите по ссылке, и у меня это сработало.
- Выберите опцию "
File
из меню в левой верхней части Android Studio. - Выберите опцию:
Invalidate Cache/Restart
Откроется диалоговое окно. - Нажмите на первую кнопку с опцией:
Invalidate and Restart
- Он закроет Android Studio и перезапустит его. Также начнется переиндексация проекта.
Это решило мою проблему
Перейдите в Файл > Неверный кэш/Перезапуск > Неверный и перезапустите
Источник здесь для YouTube
Ответ 4
1) Нажмите значок gradle (справа на студию Android)
![введите описание изображения здесь]()
2) Нажмите кнопку обновления и подождите, пока проблема будет решена: D
![введите описание изображения здесь]()
Ответ 5
У меня все еще была та же проблема с Android Studio v3.2.1, и я разобрался с проблемой, просто удалив эти две подпапки из папки .idea
(не нужно удалять всю папку .idea
), в то время как синхронизация gradle не Работа:
-
./idea/caches
-
./idea/libraries
Ответ 6
Для меня удаление папки .gradle и .idea проекта решило проблему.
Ответ 7
Мое хакерское решение для этого -
- Откройте файл
build.gradle
- Вырежьте все внутри
dependencies{}
- Вставьте в блокнот для супер безопасного временного хранения
- Выберите "Синхронизировать сейчас" в файле
build.gradle
- Подождите, пока сбой синхронизации
- Вставьте ваши зависимости обратно в
- "Синхронизировать сейчас" снова
Перепробовал много решений, и это было единственным исправлением для меня.
Ответ 8
У меня была эта проблема после обновления до Android Studio 3.1. Я решил проблему, обновив все компоненты, которые я использую. Поэтому я изменил следующие записи в моем build.gradle(app):
-
Обновите SDK (с "compileSdkVersion 25" до "compileSdkVersion 26" или выше, когда вы читаете эту заметку):
//compileSdkVersion 25
compileSdkVersion 26
Комментарий: это изменение вынудило программу загрузить/установить новый SDK во время следующей синхронизации.
-
Обновите appcompat-v7:
//реализация 'com.android.support:appcompat-v7:25.4.0'
реализация 'com.android.support:appcompat-v7:26.1.0'
-
Обновление 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"
-
В PROJECT build.gradle обновите google-сервисы:
//classpath 'com.google.gms: google-services: 3.1.0'
classpath 'com.google.gms: google-services: 3.2.0'
-
Обновите Gradle (с 4,4 до 4,6). Из gradle-wrapper.properties: distributionUrl = https://services.gradle.org/distributions/gradle-4.6-all.zip
После этих изменений очистите проект, аннулируйте кэш/перезапустите, удалите содержимое .idea/library и выполните повторную синхронизацию (не уверен в порядке, но ВСЕ эти действия решили проблему для меня).
Ответ 9
Удаление папки библиотеки в .idea решило проблему для меня. Он находится в корне проекта /.idea/library.
Я использую Android Studio 3.1.4
Ответ 10
Ниже приведены шаги, когда проект успешно скомпилирован, но с неразрешенными классами (все классы будут использоваться красным цветом во всех файлах)
Шаг 1. Удалить .gradle файл
Шаг 2. Удалить .idea файл
Шаг 3. Откройте новое окно студии Android с другим Android-проектом в вашей системе и закройте ваш проект с ошибкой.
Шаг 3. Теперь снова откройте/импортируйте проект с панели инструментов студии Android Studio → Файл → Открыть
Примечание. Теперь при импорте проекта новые папки .gradle и новые .idea будут автоматически скомпилированы с разрешенными зависимостями.
Ответ 11
Просто сделайте это на своей Android-студии:
Файл → Неправильные кэши/Перезапуск → Неправильный и перезапуск
Это сработало для меня. Нет необходимости очищать папку. /gradle или./idea
Ответ 12
Если все вышеприведенные ответы не работают для вас.
Просто попробуйте обновить свои зависимости до последней версии.
Это сработало для меня.
Ответ 13
Я нашел легкий путь
- Откройте уровень приложения
build.gradle
- Удалить зависимость, которая показывает ошибку и синхронизацию.
- Снова добавить зависимость и синхронизацию.
Ошибка ушла!
До
![Before]()
После
![After]()
Ответ 14
Удаление .idea/caches
и .idea/libraries
должно .idea/libraries
все ошибки.
Ответ 15
Кажется, что каждый использует свой подход к решению этих проблем. Я предложу другой, который я считаю немного менее агрессивным, чем другие. Когда я внесу изменения из библиотеки aar, которую я включил, я открою файл "settings.gradle" для проекта.
Затем вырежьте основной модуль проекта из списка проектов:
include ':mainproj',
а затем синхронизировать ваш проект. Затем вставьте его обратно и повторно синхронизируйте ваш проект еще раз. Я полагаю, что это то же самое, что и некоторые шаги по удалению вручную, но это позволяет вам сделать это из IDE немного быстрее и менее болезненно.
Ответ 16
Эти решения не помогли мне с той же проблемой в Android Studio 0.5.8.
Я описал свой ответ на тот же вопрос (я думаю): fooobar.com/questions/40435/...
Я просто удалил каталог ~/.AndroidStudioPreview(в Ubuntu). Я пропустил все настройки Android Studio, но он работает.
Ответ 17
В моем случае по какой-то причине версия Android Plugin не была установлена. Я попытался очистить кеш и удалить .gradle и .idea, но это не сработало, и после долгих часов блуждания я нашел это.
![File > Project Structure]()
Ответ 18
Я попробовал большинство из приведенных выше исправлений, и в действительности все работало, удалив все папки конфигурации .AndroidStudio и затем перезапустив Android Studio.
- Расположение: C:\Users\your.username
Ответ 19
Ранее у меня была аналогичная проблема, недействительность кеша и перезапуск не разрешили. Я просто сделал Gradle Sync, и все было хорошо.
Ответ 20
Все вышеизложенное ответ не со мной. Я использую Android studio версии 2.3.3: (
Ответ 21
Решил проблему с помощью проекта очистки Build->Clean Project
Ответ 22
Для меня я ссылаюсь на банку в библиотеке модулей. Он не может разрешить символ в банке. Поэтому я нахожу решение для моей ситуации. Используйте provided
способ.
provided fileTree(include: ['xxx.jar'], dir: '../moduleX/libs')
Ответ 23
Все ответы выше не спомогли мне. Моя проблема заключалась в том, что у меня было 3 модуля, с двумя из них с одинаковым именем пакета.
Это было нормально для андроид студии & lt; = 3.2.1.
Для андроид студии> 3.2.1, резюме было красным.
Я решил это следующим образом (я просто сделал разные имена пакетов для каждого модуля): Любая версия android Studio & gt; 3.2.1 показать красный ресурс, но все еще компилировать
Ответ 24
Эта проблема была устранена с помощью следующих шагов:
обновить версию библиотеки в gradle на любое случайное число, например:
lib_1.0.0 → lib_1.0.0.0
Gradle Sync
синхронизация показывает ошибку
отменить изменение версии
lib_1.0.0.0 → lib_1.0.0
Gradle Sync
Откройте файл Java с импортом, чтобы увидеть, что ошибка устранена.