Android Studio каже, що "не вдається вирішити символ", але проект компілюється


97

Я імпортую 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 чистим, а також закрити та повторно відкрити проект.



рік 2018, Android Studio 3+: іноді Android Studio та Gradle не згодні. Рішення тут: stackoverflow.com/questions/50313885 / ...
user1506104

У мене був такий самий випуск після імпорту проекту вправ в Android Studio. Коли імпортували Android Studio, я попереджав і запропонував оновити версію sdk, тому я дотримувався поради. Після цього щось більше не було сумісним, тому Android Studio запропонував змінити іншу версію чогось іншого. Дотримуючись усіх цих порад, у мене виникли ті самі проблеми "не можу знайти символ". Я змінив зміну, імпортував проект знову, і цього разу не дотримувався підказок Android Studio. Після цього помилки зникли. Будьте обережні, сліпо виконуючи пропозиції цієї програми.
Девід

Відповіді:


237

Не маю ідеї, чи це спрацює чи ні, але поки що єдина моя думка: клацніть правою кнопкою миші файл jar у дереві файлів у межах AS та виберіть "Додати як бібліотеку ..."

РЕДАКТУВАННЯ: Ви можете зробити "Файл" -> "Недійсні кеші ..." та вибрати варіант "Недійсний та перезавантажити", щоб виправити це.

EDIT 2: Це виправлення має працювати у всіх подібних інцидентах і не є конкретною резолюцією twitter4j.


Я не отримую цього як варіант, коли я клацну правою кнопкою миші на банку. Я запускаю 0.2.13.
TG-T

Це, ймовірно, означає, що ви вже це зробили. Спробуйте Файл> Структура проекту та переконайтеся, що у вузлі модулів ви бачите файл .jar.
doydoy

11
Помилка кеш-пам’яті та перезапуск у мене не працюють. Я також спробував перевстановити андроїд-студію та реімпортувати проект. Це дуже дратує ...
слюсар

3
"Файл" -> "Недійсні кеші ..." щойно врятував мені день. Я витратив стільки часу на це питання. Чому ця відповідь не була найкращим результатом пошуку? Дуже дякую!
Eric Cochran,

1
кидаючи мою подяку
Євген Сімкін

33

Спробуйте змінити порядок залежностей у меню Файл> Структура проекту> (виберіть проект)> Залежності.

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


Зміна порядку залежностей мені допомагає, я спробував усі рішення, наведені у відповідях, лише ваше допоможе мені, дякую.
wqycsu

Переміщення лише однієї залежності вгору зробило для мене трюк! (Android Studio 3.0.1).
Себастьян

Так, не важливо, яку залежність ви переміщуєте, просто змініть порядок будь-кого, це також працює для Android Studio 3.3.
karique

12

Це те, що працювало для мене.

На панелі «Проект» клацніть правою кнопкою миші на назві проекту та виберіть Open Module Settingsзі спливаючого меню.

потім змініть на Compile SDK Versionмінімально доступну версію (мінімальну версію sdk, яку ви встановили в проекті). зачекайте, щоб Android студія все завантажила.

Це дасть вам деякі помилки, ігноруйте їх.

Тепер перейдіть до свого файлу Java, і андроїд-студія запропонує імпортувати

імпортувати android.support.v4.app.FragmentActivity;

Імпортуйте його, а потім поверніться до Open Module Settingsта змініть версію sdk для компіляції назад на попередню.

Зачекайте, поки речі завантажаться і вуаля.


це геніальна робота. у моєму випадку Android Studio повідомив про те, що всі класи SDK не можуть бути вирішені (включаючи String, Integer, TextView тощо). до цього aStudio також сказав мені, що не може знайти SDK для android-14, який я використовував для складання своїх проектів. Я проігнорував, що так виникли проблеми. нарешті, я знайшов цю відповідь і слідую, змінив версію компіляції sdk, потім працював. завдяки економити час.
VinceStyling

Now go to your java file and android studio will suggest you importНе в моєму випадку
NineCattoRules

9

Оскільки моя була викликана імпортованим бібліотечним проектом, введіть щось у build.gradle та видаліть його знову та натисніть кнопку синхронізації, помилка зникла.


6

У мене також виникла ця проблема з моїм додатком Android, залежно від деяких моїх власних бібліотек Android (використовуючи Android Studio 3.0 та 3.1.1).

Щоразу, коли я оновлював lib і повертався до програми, запускаючи Gradle Sync, Android Studio не міг виявити зміни коду, які я вніс у lib. Компіляція спрацювала нормально, але Android Studio показала червоні рядки помилок на деякому коді за допомогою lib.

Після дослідження я виявив, що це тому, що gradle продовжує вказувати на стару складену версію моїх ліб. Якщо ви перейдете до yourProject / .idea / libraries /, ви побачите список xml-файлів, що містить посилання на скомпільовану версію ваших бібліотек. Ці файли починаються з Gradle__artifacts _ *. Xml (де * - назва ваших ліфтів).

Тож для того, щоб Android Studio взяв останню версію своїх лійб, потрібно видалити ці файли Gradle__artifacts _ *.

Якщо ви не хочете робити це вручну кожного разу, коли натискаєте кнопку "Синхронізація Gradle" (хто б хотів це зробити ...), ви можете додати це невелике завдання 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" у вашому додатку / Завдання / інше /, клацнути правою кнопкою миші на ньому та вибрати "Виконати Перед синхронізацією "(див. Нижче).

Вікно Gradle для налаштування виконання завдання

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


5

Коли я жив із цією проблемою (червоні кольорові коди, але вони працюють правильно) у своєму проекті;

По-перше, я зробив це, що (Файл -> Вказати грошові кошти) -> (Недійсне та перезапуск).

Як останнє, я повторно синхронізую свій файл build.gradle у своєму додатку. Після вирішення проблеми.


3

Invalidate Caches / Restart цього разу у мене не вийшло.

Знайшли таке рішення:

  1. Видаліть рядок compile ***або implementation ***в build.gradle.

  2. Очистити та відновити. Тут слід порушувати помилки.

  3. Додайте рядок на кроці 1 назад до build.gradle.

  4. Очистити та відновити.

Дивно ...


2

Ця проблема трапилася для мене, коли мій проект Glass не використовував SDK, встановлений у стандартному розташуванні Android Studio. Я використовував інше місце, яке я раніше використовував від ADT, оскільки намагався уникати повторного завантаження всього. Як тільки я повернув проект на місце SDK в місці встановлення Android Studio, проблема усунулася.


Так, я думаю, що це також гарний вигук: за замовчуванням андроїд-студія вирішить, що всі SDK-коди встановлені в каталозі встановлення за замовчуванням Android Studio. Це потрібно змінити, якщо щось не буде відповідати цій схемі.
doydoy

2

Я мав цю проблему пару днів і, нарешті, зрозумів її! Усі інші рішення для мене не працювали, до речі.

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

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

Сподіваюся, це комусь допоможе!


Перевірте, чи є у вас шлях до проекту, який має спеціальні символи, як! (знак оклику). У подібній проблемі, з якою я зіткнувся stackoverflow.com/questions/32477067/… , це було першопричиною. Багато програм Java, здається, не терплять таких спеціальних символів (наприклад, виконати "очищення gradlew" з терміналу не вдасться і викине RunTimeException.). Жодне з інших рішень, розміщених в Інтернеті, мені не допомогло. Але, як тільки я зняв! Android шлях зі шляху і зробив чисту конструкцію, магічно працювала Android Studio.
Jim C

ЯК ДУМОВИЙ! Дякую :)
Хосеп Ескобар

1

Нещодавно у мене була така сама проблема з Android Studio 1.3. Єдиним робочим рішенням було видалити папки .gradle та .idea та повторно імпортувати проект в Android Studio.


1

Для тих, хто спробував прийняту відповідь і не має успіху,

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




0

У моєму випадку я створив новий файл за допомогою графічного інтерфейсу та визначив інтерфейс у файлі. Я продовжував отримувати цю помилку символу, оскільки файл не був файлом "java". Це взагалі не було продовження.

Змінивши розширення файлу на ".java", система правильно знаходить символи.


0

У моєму випадку у файлі jar не було файлу META-INF / MANIFEST.MF. Після додавання одного він працював!


0

У моєму випадку, що працює з AndroidStudio 2.2.3, рішенням було змінити оболонку / розподіл gradle на локальний у налаштуваннях Gradle (незважаючи на те, що він «рекомендований»). введіть тут опис зображення



0

Я спробував недійсний кеш / перезапуск або очищення Project -> відновити проект. Вони не працювали для мене.

Остаточним рішенням було відкрити вікно Project зліва на IDE, у режимі Project видалити .gradle та папку .idea, ТОГДА ви можете зробити недійсні кеші та перезапустити. Це і виправило.



0

Зміна налаштувань інжекції мови працювала на мене.

Помістіть курсор на будь-який червоний підкреслений код і Alt + Enter

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

Тепер виберіть Language Injection Settingsі відкриється вікно, як показано нижче.

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

Зніміть прапорець і виберіть Ок

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

Сподіваюся, це комусь допомагає.


0

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

  • Закрийте Android Studio повністю
  • Видаліть .ideaпакет із свого проекту
  • Перезапустіть Android Studio

0

Я спробував це, але для мене нічого не вийшло:

  • 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

0

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

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

0

Я знайшов найпростіший спосіб

Визначте бібліотеку, яка спричиняє синтаксичну помилку в Studio.

Наприклад, якщо AppCompatActivityвідображається помилка, ви виконаєте операцію нижче в залежності від AppCompat.

  • Видаліть залежність, яка відображає синтаксичну помилку та синхронізацію.
  • Додати знову та синхронізувати.

Ось це, помилка пішла!

До цього

До цього

Після

Після


0

Жодна з вищезгаданих відповідей для мене не працює.

Після багатьох спроб я оновив com.android.tools.build:gradle в Project / build.gradle з 2.3.0 до 3.0.1, і він працює.

Я думаю, версія com.android.tools.build:gradle повинна відповідати версії AndroidStudio, а моя версія AS - 3.2.1



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