Android Studio отмечает R красным цветом с сообщением об ошибке "не удается разрешить символ R", но сборка завершается успешно - программирование
Подтвердить что ты не робот

Android Studio отмечает R красным цветом с сообщением об ошибке "не удается разрешить символ R", но сборка завершается успешно

В каждом проекте, который я пытался создать в Android Studio, все применения R отмечены красным цветом, при этом сообщение об ошибке "не может разрешить символ R", но компиляция завершается успешно и приложение запускается. Это действительно раздражает, поскольку он блокирует автоматическое завершение и показывает огромные красные волнистые линии по всему моему коду.

Я запускаю Android Studio 1.7.0 и создаю проект с настройками по умолчанию. Скриншот прилагается:

Android Studio Screenshot

Это мой build.gradle:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4'
    }
}
apply plugin: 'android'

dependencies {
    compile files('libs/android-support-v4.jar')
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 16
    }
}

Вот как выглядит Структура проекта:

enter image description here

Любая идея, как это исправить?

4b9b3361

Ответ 1

Вот мое временное решение, пока я не найду лучшего:

  • Используя все, найдите, где создана R.java. В моем случае это было C:\Program Files (x86)\Android\android-studio\system\compiler\<project-name>.cb969c52\.generated\aapt\<module-name>.6badd9a4\production\com\<project-name>\<module-name>

  • В представлении "Проект" щелкните модуль и нажмите F4. Игнорировать предупреждение.

  • Нажмите "+ Добавить корневой каталог содержимого" и выберите указанную выше папку. Убедитесь, что он отмечен синим (как источник).

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

Ответ 2

Просто нажмите кнопку Создать Восстановить проект в своей студии Android.

Ответ 3

Я обнаружил, что эта проблема была вызвана тем, что у меня были ошибки в моих XML файлах. После исправления ошибок XML выполните очистку/сборку, она исправила проблему.

Ответ 4

Нажмите Build -> Rebuild Project, а затем нажмите Tools -> Android -> Sync Project with Gradle Files.

Ответ 5

Убедитесь, что в AndroidManifest.xml указано имя пакета. Это устранило проблему для меня, когда мой R.whatever был отмечен красным!

Я также рекомендовал бы проверить все ваши файлы gradle, чтобы убедиться, что имена пакетов верны. Это не должно сделать все красным, но оно будет корректно синхронизировать ваши файлы gradle.

Ответ 6

НЕ НИЧЕГО. Просто обновите Android Studio. Решите мою проблему! Работать отлично.

Ответ 7

У меня была похожая проблема с 'com.android.tools.build:gradle:3.3.1', я пробовал все вышеперечисленные решения, но ничего не получалось. Это было на самом деле build: gradle 3.3.1 проблема. Я поменял его на 3.2.1, потом все заработало.

Так что это может быть проблемой со сборкой: версия Gradle.

Ответ 8

  • Выберите пункт меню "Файл" > "Структура проекта".
  • Нажмите ОК в окне сообщения (изменения структуры проекта не обновляют build.gradle).
  • Выберите "Модули" на боковой панели "Настройки проекта".
  • Для каждого модуля (проекта) убедитесь, что раздел "Исключенные папки" не содержит папку "build". Если это так, нажмите кнопку "x" рядом с папкой "build".
  • Нажмите OK

Теперь вы должны увидеть папку "MyAppProject/MyApp/build/source". Это должно содержать папку "r" (где создается файл R.java). Здесь вы должны либо увидеть "debug", "release" в синем (если у вас есть projectFlavour в вашем build.gradle, они будут находиться в папке ""). Внутри этой папки отладки/выпуска должно быть ваше имя пакета приложения, а затем файл R.java, содержащий все ваши идентификаторы ресурсов.

Ответ 9

  • Восстановить проект.
  • Если (1) не работает, перезапустите Android Studio/Eclipse.

Если ни один из них не работает, проверьте все ваши xml файлы. Эта ошибка возникает, когда ваш XML файл неверен.

Ответ 10

По некоторым причинам студия Android использует разные конфигурации для редактора и для компилятора. Если это работает для компилятора, тогда это хорошо. Если редактор не работает. (он видит неразрешенные файлы).

Вам нужно добавить некоторые каталоги к источнику вашего проекта. Например, все ресурсы должны быть помечены как "источник".

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

Выберите "Модули", затем ваш проект. И выберите вкладку sources. Справа найдите свою папку ресурсов и нажмите на синюю кнопку "источник". Закройте все, и он должен работать.

Кроме того, вам нужно убедиться, что

build/source/r/debug также является источником. У меня есть все мои build/source/*/debug, отмеченные как источник.

главный модуль .iml

<?xml version="1.0" encoding="UTF-8"?>
<module external.system.id="GRADLE" type="JAVA_MODULE" version="4">
  <component name="FacetManager">
    <facet type="android" name="Android">
      <configuration>
        <option name="SELECTED_BUILD_VARIANT" value="debug" />
        <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
        <option name="ALLOW_USER_CONFIGURATION" value="false" />
        <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
        <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
        <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
      </configuration>
    </facet>
    <facet type="android-gradle" name="Android-Gradle">
      <configuration>
        <option name="GRADLE_PROJECT_PATH" value=":SherlockHolmes" />
      </configuration>
    </facet>
  </component>
  <component name="NewModuleRootManager" inherit-compiler-output="true">
    <exclude-output />
    <content url="file://$MODULE_DIR$">
      <sourceFolder url="file://$MODULE_DIR$/build/source/r/debug" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/build/source/aidl/debug" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/build/source/rs/debug" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/build/source/buildConfig/debug" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/build/res/rs/debug" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/build/source/r/test" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/build/source/aidl/test" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/build/source/rs/test" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/build/source/buildConfig/test" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/build/res/rs/test" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/debug/res" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/assets" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/res" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/instrumentTest/aidl" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/src/instrumentTest/assets" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/src/instrumentTest/java" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/src/instrumentTest/jni" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/src/instrumentTest/rs" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/src/instrumentTest/res" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/src/instrumentTest/resources" isTestSource="true" />
      <excludeFolder url="file://$MODULE_DIR$/build/apk" />
      <excludeFolder url="file://$MODULE_DIR$/build/assets" />
      <excludeFolder url="file://$MODULE_DIR$/build/bundles" />
      <excludeFolder url="file://$MODULE_DIR$/build/classes" />
      <excludeFolder url="file://$MODULE_DIR$/build/dependency-cache" />
      <excludeFolder url="file://$MODULE_DIR$/build/exploded-bundles" />
      <excludeFolder url="file://$MODULE_DIR$/build/incremental" />
      <excludeFolder url="file://$MODULE_DIR$/build/libs" />
      <excludeFolder url="file://$MODULE_DIR$/build/manifests" />
      <excludeFolder url="file://$MODULE_DIR$/build/symbols" />
      <excludeFolder url="file://$MODULE_DIR$/build/tmp" />
    </content>
    <orderEntry type="jdk" jdkName="Android 4.2.2" jdkType="Android SDK" />
    <orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="library" name="Sherlock.aar" level="project" />
    <orderEntry type="library" name="SlidingMenu.aar" level="project" />
    <orderEntry type="library" name="support-v4-13.0.0" level="project" />
  </component>
</module>

project iml

<?xml version="1.0" encoding="UTF-8"?>
<module external.system.id="GRADLE" type="JAVA_MODULE" version="4">
  <component name="FacetManager">
    <facet type="android-gradle" name="Android-Gradle">
      <configuration>
        <option name="GRADLE_PROJECT_PATH" value=":" />
      </configuration>
    </facet>
  </component>
  <component name="NewModuleRootManager" inherit-compiler-output="true">
    <exclude-output />
    <content url="file://$MODULE_DIR$">
      <excludeFolder url="file://$MODULE_DIR$/.gradle" />
      <excludeFolder url="file://$MODULE_DIR$/build" />
    </content>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
  </component>
</module>

Черная магия

Не уверен в этом, но я слышал, как он работает, хотя я уверен, что ничего не изменит. Попробуйте выполнить компиляцию и сохранение проекта после комментирования всех строк, требующих R. Тогда, когда все не красное. Попробуйте добавить их обратно. Странно, что ваш сборщик/источник не генерируется.

Также этот вопрос предлагает проверить "компилятор использовать внешнюю сборку"

Android Studio не создает R.java для моего проекта импорта

Боковое примечание

Также убедитесь, что в вашем Java-коде нет. import android.r; от того, что вы показали, все кажется прекрасным. Просто странно, что сборка/источник не создается. Например, у меня нет сборки /apk. Возможно, вы находитесь в режиме выпуска и не создаете эти каталоги.

Ответ 11

Это сработало для меня:

  • Закрыть и повторно открыть проект

  • Нажмите "Sync Project с файлом Gradle" (рядом с значком менеджера AVD в верхнем меню) повторите 1-2, если Gradle не может синхронизироваться в первый раз. (моя работа во второй раз).

Работа с Android Studio 1.2.2

Ответ 12

Просто перейдите в список Android Top menu. нажмите Создать меню, в разделе Строка нажмите Перестроить проект.

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

Ответ 13

Иногда эти ошибки сборки будут продолжаться из ниоткуда. Если это произойдет с вами, попробуйте следующее:

Повторите проверку правильности XML в ваших файлах ресурсов. Если ваш файл R.java не был создан для последней сборки, вы увидите ошибки в своем проекте, где бы вы ссылались на ресурс. Это может быть вызвано опечаткой в одном из ваших XML файлов. Макет XML не всегда проверяется, поэтому опечатки в этих файлах не могут быть наглядно представлены вам. Поиск опечатки и сохранение файла должен привести к регенерации R.java.

Очистите свой проект! Select Build → Clean Project Это приведет к восстановлению проекта с нуля, что может привести к созданию без ошибок.

Синхронизируйте свой проект с помощью Gradle! Select Tools → Android → Sync Project with Gradle Files Студия Android" восстановит проект с нуля с помощью правильных параметров проекта, что может помочь решить проблемы после изменения конфигурации Gradle.

Запустите Android Lint! Линт может дать вам хорошую информацию о проблеме. Если вышеуказанное не работает, вы найдете наиболее вероятную проблему. Чтобы запустить Lint, select Analyze → Inspect Code → select Whole project → OK Тщательно проанализируйте предложения Lint; начните с ошибок, а затем с предупреждений.

Удачи.

Ответ 14

Я разрешил его:

1) Sync Project with gradle files
2) Build -> Clean Project
3) Build -> Rebuild Project
4) File -> Invalidate caches

//imp step
5) Check your xml files properly.

Ответ 15

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

При попытке создать или очистить проект вы увидите сообщения об ошибках.

Я разрешил мой читать эти сообщения об ошибках, исправить то, что не так в моем XML файле., затем перестроить проект.

Ответ 16

У меня была эта ошибка несколько дней назад, я попытался оглядеться, пока не решил переустановить Android Studio. Это сработало для меня.

Ответ 17

При создании проекта из образца, если не импортировать существующий проект, это хорошо (предотвращает столкновения с gradle,.idea,.iml, build, jars и apks, то есть все ненужные сгенерированные сгенерированные файлы), после создания новый проект, копирование и вставка всех соответствующих ресурсов, я бы рекомендовал:

проверка пакетов и импорт из пакетов в проекте {Объявление AndroidManifest и все импортные классы java}, все ресурсы (доступные, mip-карта, макеты и меню и ваш build.gradle(образец build.gradle для использования с последний sdk может быть предоставлен по запросу)), чтобы узнать, есть ли они там, и если объявленные строки и идентификаторы действительно существуют и были использованы, после чего должна быть задана ваша единственная ошибка:

Bulid- > Clean Project

Инструменты- > Android- > Проект синхронизации с Gradle Файлы

Файл- > Недействительные кеши и перезагрузка

В худшем случае перезагрузка вашей машины помогает.

Вышеприведенное должно работать. Не стесняйтесь задавать вопросы, если это необходимо, т.е. Отправлять комментарии.

Ответ 18

Это происходит главным образом из-за ошибок в файле xml, проверьте ваши последние изменения xml и перестройте его, что касается меня.

Ответ 19

У меня была ошибка повторного использования копии/вставки в объявлении пакета для манифеста

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="wrong.package.name">

В главном названии активности был правильный путь, поэтому в манифесте не было обнаруженных ошибок.

После решения этого вопроса исходный файл по-прежнему показал ошибки, хотя сборка выполнена успешно. Я просто запустил приложение, а затем подсчитал исходные ошибки.

Ответ 20

Он также работал у меня, вручную очистив папку .idea/libraries и щелкнув далее на "Sync Project с Gradle Files", решает проблему. По-видимому, этот Sync не удаляет элементы, но сохраняет старые и добавляет текущие. Вероятно, ошибка для отчета:)

Ответ 21

У той же проблемы с андроидной студией я выяснил, что build/generated/source/r содержит только папку выпуска, а не debug. Поэтому по какой-то причине сборка отладки не создала полезный класс R.

Я решил его, открыв файл iml проекта и исправил эту строку

<option name="RES_FOLDERS_RELATIVE_PATH" value="" />

к

<option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res" />

повторно синхронизирован с gradle, прокомментировал строки с использованием R, запустил debug для генерации R, без комментирования строк с использованием R и снова запустил отладочную ошибку.

Ответ 22

Решение прост:

Перейдите на File > Project Structure > app и выберите вкладку Flavours, выберите API 21: Android 5.0 (Lollipop) в выпадающем списке для Min Sdk Version.

Ответ 23

В моем случае я следил за всеми ответами, которые я мог найти в Stackoverflow, и ни один из них, похоже, не решил эту проблему. Все ответы указывают на возможное повреждение файла xml или конфликт с именами Gradle. В некоторых ответах утверждалось, что необходимо очистить проект или проект синхронизации с помощью файлов Gradle. ни одно из этих решений не решило бы проблему. Кроме того, как только я следил за учебником по созданию приложения Hello World, и я просто следил за окнами мастера Android Studio без какой-либо кодировки вообще, было бы бессмысленно подозревать, что это была опечатка вроде этого.

TL;DR

Проблема оказалась версией Build Tools. У меня установлено значение 23.0.0 rc1, поэтому я изменил его на 22.0.1. Полагаю, это потому, что я использую последний доступный выпуск Android Available.

Чтобы изменить это значение, вы можете открыть браузер проекта в левом окне > щелкните правой кнопкой мыши "app > Open Module Setting" и найдите его на вкладке "Свойства"

Ответ 24

Если вы получаете эту ошибку, очистите проект.

  • Пойдите, чтобы построить сверху своей студии Android.
  • Выберите вариант чистого проекта

Причина этого в том, что, очистив предыдущий файл .apk, который присутствует в вашей папке проекта студии Android, ваша система удалена.

Ответ 25

вам необходимо ИМПОРТИРОВАТЬ проект R файла

import <YOUR-PROJECT-PACKGENAME>.R;

Ответ 26

Очистка проекта помогла в моем случае

Перейдите к

Build -> Clean Project

Ответ 27

Вы должны изменить путь:

например

import it.example.project.myproject.R;

изменение

import it.example.project.R;

Ответ 28

Недавно я импортирую свой проект в студию Android, часть R отмечена красным цветом с ошибкой meesage "не удается разрешить символ R", но компиляция завершается успешно и приложение запускается.

Развивайте представление:

  • IDE: студия Android 3.1.2
  • Система: Mac Os

Решение:

шаг 1:

Найти конфигурационный файл для студии Android
Мой путь:

/Applications/Android Studio.app/Contents/bin/idea.properties

шаг 2:

Изменить 2500:

idea.max.intellisense.filesize=2500  

до 5000 или более:

idea.max.intellisense.filesize=5000  

Ответ 29

Я столкнулся с той же ошибкой, оказалось, что файл манифеста имел некоторые ошибки. После его исправления снова щелкнул Make Project, и он работал нормально. Студия Android иногда не дает очень полезных сообщений об ошибках.

Ответ 30

Я время от времени укусываю это, и есть еще одна вещь, которую нужно попробовать: сопоставьте свои версии compileSdk и buildSdk с последними доступными.

Я сменил свой compileSdkVersion с 21 на 19, потому что отладчик Android Studio (1.1 канальный канал) не правильно отслеживал в предварительно построенных библиотеках. Я обнаружил, что это, по-видимому, отслеживание на основе buildToolsVersion (19.1.0), которое я проверил, щелкнув ошибку в трассировке стека (а затем выбрав 19 вместо 21). Хотя я изменил его непосредственно в файле build.gradle, графическое пошаговое руководство находится здесь: https://www.blogger.com/comment.g?blogID=4722727826918942842&postID=3875998513888772255, и я подведу итог:

  • Android Studio IDE, выберите Файл | Структура проекта.
  • Выберите свой модуль, например "приложение"
  • В поле "Скомпилировать SDK" выберите последнюю версию
  • Также выберите последнюю версию в Build Tools

Подтвердите, и проект должен автоматически синхронизироваться должным образом.

Урок, который я получаю от этого, состоит в том, что они оба должны быть одинаковыми.