Вбудований компілятор 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.