Вбудований компілятор Android Studio, що показує червоні помилки, але компіляція з gradle працює чудово


147

Я створив свій проект в Android Studio для використання бібліотеки Square Wire , відповідно до цього питання .

Build-> Compile Projectпрекрасно працює.

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

Однак якщо я відкрию один із створених файлів буфера протоколу, пакет 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іншого каталогу. Після цього студія android показує помилки на кожному і кожному класі. Потім я виконую вищезазначені кроки, тоді питання вирішується.
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бібліотеки в актуальному стані .

синхронізація градусів

Однак у моєму випадку були деякі помилки:

знайдено помилок

Розширення (не дуже очевидного) посилання показало деталізацію. У моїй бібліотеці під час виконання об'яви відображалось неправильне місце:

бібліотеки

Це здавалося похміллям із моєї оригінальної конфігурації, де я імпортував 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
потрібно було видалити локальні залежності від баночки, що вирішило це для мене, спасибі за натхнення
jhegedus

Я щойно натиснув на "Синхронізувати проект з файлами Gradle" і зараз все нормально! Велике спасибі! Ти врятував мій день ха-ха
Хорхе Габріель Сікейра

Не працювало для мене. Але видалення .gradle та .idea все-таки спрацювало
Golnar

Нині ця ж кнопка показана як ікона слона зі стрілкою вниз.
тм

87

Просте рішення

Перейдіть за посиланням, і це працювало на мене.

  1. Виберіть File варіант у меню зліва у верхній частині студії Android.
  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


11

Просто зробіть це у вашій студії Android:

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

Це працювало для мене. Не потрібно очищати папки ./gradle або ./idea


9

Моє гакітне виправлення для цього -

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

Перепробував багато рішень, і це було єдиним виправленням для мене.


7

У мене виникла ця проблема після оновлення до Android Studio 3.1. Я вирішив проблему, оновивши всі компоненти, які використовую. Тому я змінив наступні записи у своєму build.gradle (застосунку):

  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. Оновити вогневу базу:

    // імплементація 'com.google.firebase: firebase-ads: 11.4.2'

    реалізація 'com.google.firebase: ядро ​​firebase: 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. Оновлення градулей (з 4,4 до 4,6). Від gradle-wrapper.properties: distributionUrl = https: //services.gradle.org/distributions/gradle-4.6-all.zip

Після цих змін очистіть проект, вимкніть кеш / перезапуск, видаліть вміст .idea / бібліотек та перейміть (не впевнений у порядку, але ВСІ ці дії вирішили проблему для мене).


1
що з іншими компонентами, які не мають новішої версії?
Амір Дадгарі

Не знаю. Це ті компоненти, які я мав у своєму проекті.
Пабло Альфонсо

Привіт Аміре, згідно з офіційним веб-сайтом, gradle 4.4 - це найновіший доступний (станом на березень 2018 року). Де ти знайшов Gradle 4.6?
Пабло Альфонсо

Я знайшов місцезнаходження Gradle 4.6. Я оновив відповідь. Дякую.
Пабло Альфонсо

4
видалити вміст .idea / бібліотек, він працює на мене. велике спасибі
Трамвай Нгуен

7

Видалення папки бібліотек у .idea вирішило проблему для мене. Він розташований у кореневій / .idea / бібліотеці проекту.

Я використовую Android Studio 3.1.4


2
Це спрацювало, але мені довелося також визнати недійсним і перезапустити.
Ден Андерсон

5

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

Крок 1. Видаліть .gradle файл

Крок 2. Видаліть .idea файл

Крок 3. Відкрийте нову програму Android Studio Window з деяким іншим проектом 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
Shivam

2

Я зафіксований нижче методом

Спосіб 1

Файл> Недійсний кеш / перезапуск> Недійсний та перезапуск

Спосіб 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 версії плагіна не встановлено. Я спробував очистити кеш і видалити .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. синхронізація градусів

  3. синхронізація показує помилку

  4. відновити зміну версії lib_1.0.0.0 -> lib_1.0.0

  5. синхронізація градусів

Відкрийте файл Java з імпортом, щоб побачити помилку очищеної.


0

Жодне з рішень не працювало для мене. Я вдався до видалення Java з мого комп’ютера, запустивши андроїд-студію, щоб переконатися, що він виявив видалення, а потім знову встановив його.

Якщо ви вирішите піти цим шляхом, спробуйте змінити шлях jdk та встановити новий шлях у структурі проекту. Якщо це не працює, продовжуйте та видаліть Java .


0

Я лише зробив проект «Очистити проект і відновити проект» перед перезавантаженням Android Studio, це вирішує мою проблему. Можливо, Android Studio насправді не оновлює посилання в інтерфейсі

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.