R не может быть решена - ошибка Android

981

Я только что загрузил и установил новый Android SDK. Я хотел создать простое приложение для тестирования диска.

Мастер создал этот код:

package eu.mauriziopz.gps;

import android.app.Activity;
import android.os.Bundle;

public class ggps extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

но Eclipse дает мне ошибку

R не может быть разрешено

в строке

setContentView(R.layout.main);

Почему?

PS: У меня есть XML файл с именем main.xml под res/layout/.

  • 0
    Для тех, кто все еще испытывает некоторую проблему с затмением, неспособным обновить / сгенерировать R.java. Возможное решение - создать фиктивный xml и просто удалить этот xml. В моем случае это решение
  • 0
    Честно говоря, это звучит так глупо (и это так), но изменение AndroidManifest.xml, затем отмена этого редактирования и сохранение файла сработало для меня. Если после этого я очистил проект, он снова сломался. И все это время я думал, что Xcode был единственной IDE с такими загадочными ошибками.
Показать ещё 3 комментария
Теги:
android-resources
compiler-errors
android-sdk-tools

103 ответа

86
Лучший ответ

Что будет сказано правильно

R - автоматически созданный класс, который содержит константы, используемые для идентификации ваших ресурсов. Если у вас нет файла R.java(это будет gen/eu.mauriziopz.gps/R.java в > Eclipse с 1.5 SDK), я бы рекомендовал закрыть и снова открыть ваш проект или перейти > Project > Build all (и выберите "Build Automatically", а там, как рекомендовано > Josef). Если это не сработает, попробуйте создать новый проект, если проблема воссоздана, чем > пост здесь, и мы поговорим подробнее.

но я обнаружил, что была другая проблема, которая вызывала первую. У инструментов в каталоге SDK не было разрешений для выполнения, поэтому это было похоже на то, что не существовало для Eclipse, поэтому он не создавал файл R.java.

Таким образом, изменение разрешения и выбор "Build Automatically" решили проблему.

  • 4
    Реимпорта проекта сделали свое дело.
  • 0
    @Jignesh - cd $ANDROID_SDK_ROOT/build-tools/<version> . Затем chmod a+x для таких файлов, как aapt , aidl , dexdump , dx и т. Д. ANDROID_SDK_ROOT должен быть установлен в вашей среде, и он будет указывать на установку SDK. Например, /opt/android-sdk . Важно установить как ANDROID_SDK_ROOT и ANDROID_NDK_ROOT потому что инструменты Android используют их внутренне. Смотрите рекомендуемый каталог NDK? в списке пользователей NDK.
Показать ещё 1 комментарий
848

После отслеживания этой проблемы я нашел эту заметку в документации на Android:

http://source.android.com/source/using-eclipse.html

* Примечание. Eclipse иногда любит добавлять инструкцию import android.R на верхней части ваших файлов, которые используют ресурсы, особенно когда вы спрашиваете Eclipse сортировать или иным образом управлять импортом. Эта приведет к тому, что ваш make сломается. Посмотрите за этот ошибочный импорт и удалять их. *

Просматривая учебные пособия для Android, я часто использовал команду Ctrl + Shift + O для "Organize Imports" и генерировал любые отсутствующие операторы импорта. Иногда это создавало бы неправильный оператор import, который скрывал бы класс R.java, который автоматически генерируется при создании.

  • 0
    Действительно раздражает, и это правильный ответ. Если у вас возникли проблемы с библиотечным проектом, вы можете обнаружить, что это происходит, если библиотечный проект скомпилируется, когда вы полностью поместите пространство имен R в ссылку на библиотечный проект.
  • 0
    Для чего это стоит, ссылка на страницу, кажется, была обновлена. Исходную ссылку все еще можно найти в кэше Google - webcache.googleusercontent.com/…
Показать ещё 14 комментариев
392

Каждый раз, когда у меня была проблема с R, которая не была сгенерирована или даже не исчезла, это было связано с некоторой проблемой в файле макета XML, который помешал созданию приложения.

  • 21
    +1 за это. У меня был более старый файл styles.xml с parent = "android: WindowTitleBackground", и он ломал мою сборку и предотвращал создание чего-либо с "gen". Об ошибке фактически не сообщалось, кроме как в окне консоли, когда я впервые открывал проект.
  • 12
    точно, если вы скопировали макеты из другого проекта и получаете это, ищите недостающие рисованные объекты - это исправит это мгновенно!
Показать ещё 8 комментариев
188

Всякий раз, когда вы получаете

R не может быть разрешено

затем проверьте каталог /res, и в нем должен быть некоторый файл с некоторой ошибкой, который предотвращает создание приложения. Например, это может быть файл макета, или может быть из-за недостающего ресурса, но вы уже определили его в файле XML.

Если у вас есть дополнительные, даже неиспользуемые (!) или неопубликованные (!) изображения в папке res/drawables-mdpi, которые не соответствуют соглашениям об именах файлов (могут содержать только [a-z0-9_.]), класс R.java не может генерировать, вызывая цепочку событий, на которые ссылаются другие сообщения. Надеюсь, это поможет!

  • 0
    У меня была эта проблема с образцом ApiDemos. Некоторый пропавший ресурс в файле strings.xml. Ошибки XML перечислены в консоли Eclipse.
  • 0
    благодарю вас! это была моя проблема, у меня был макет, который выдает ошибку, но не было никакого сообщения об этом.
Показать ещё 10 комментариев
131

В моем проекте есть r.java.at в начале, R.layout.main работает хорошо. Но после добавления некоторого кода он не работает, а ошибка R.layout.main не может быть решена. в чем проблема?

Посмотрите на свой импорт. Скорее всего, строка:

import android.R;

будет там. Если это произойдет, удалите его, чтобы ваш проект разрешил R не с классом ресурсов Android по умолчанию, а с одним автогенератором из папки/res/.

  • 5
    Спасибо @ Dimitar, это исправило мою проблему! Похоже, что Eclipse и функция автоимпорта получили меня, добавив эту строку импорта автоматически.
  • 7
    У меня также были похожие проблемы, когда я назвал макет заглавными буквами.
Показать ещё 3 комментария
97

И еще одна вещь, которая может вызвать эту проблему:

Я установил новый ADT (v. 22). Он прекратил создание папки gen, которая включает R.java. Решение заключалось также в установке новых Android SDK Build Tools из Android SDK Manager.

Решение найдено здесь

  • 0
    Я тоже. И когда я выбрал менеджер SDK, вот и все, инструменты сборки обнаруживаются автоматически проверенными для установки, с пометкой, что он не был установлен! Что дает???
  • 0
    Я была такая же проблема. Я так рад, что вы поделились этим. Я посмотрел ошибку из моего собственного кода два дня. Я очень разочарован в Google, потому что это сообщение об ошибке было очень трудно решить, но оно было вызвано собственной ошибкой, хотя инструменты не сообщают должным образом, что его вызывает. В то же время я внес изменения в свой проект, поэтому подумал, что это опять моя вина.
Показать ещё 5 комментариев
80

R.java - это файл, который создаются плагинами Android Eclipse создавая ваше приложение. R.java создается под именем "gen" каталог. Этот файл генерируется из информации в "res" каталог. Если вы запустили выделение "Проект" → "Очистить..." на Eclipse меню, он удалит и затем восстановит файл R.java.

Проблема "R не может быть решена" происходит, когда вы меняете свой имя пакета в файле AndroidManifest.xml. Он использует ваш Android имя пакета для создания подкаталога в каталоге "gen", где он сохраняет файл R.java.

У Eclipse могут быть проблемы с выполнением чистых, потому что это путает где файл R.java - это когда вы изменили пакет Android имя. Вы можете либо переименовать подкаталог под gen, чтобы он соответствовал вашему новое имя пакета или вы можете изменить название своего пакета обратно на старый имя. Очистите, а затем измените имя пакета на новое имя вы хотите. Это лучше всего работает, если вы прекратите попытки Eclipse пытаться построить в то время как вы меняете имя пакета. В меню "Проект" снимите флажок "Автоматически создавать", а также Диалоговое окно "Чистота..." спрашивает, должно ли оно "немедленно начать сборку", снимите флажок, чтобы он не пытался строить, пока вы меняете имя пакета. После того, как вы изменили имя, вы можете включить "Build Автоматически "снова включить.

Обратите внимание, что если ваше имя пакета AndroidManifest.xml не совпадает ваше имя пакета Java, Eclipse автоматически добавит "import < название вашего Android-пакетa > .R;" во всех ваших файлах .java которые имеют любые ссылки на R. Если вы измените свой AndroidManifest.xml имя пакета, иногда Eclipse не обновляет все эти добавленные импорт. Если это произойдет, используйте рефакторинг Eclipse (ALT + Shift + R), чтобы изменить оператор импорта в одном из ваших файлов Java на ваше новое имя пакета AndroidManifest.xml. Лучше всего это сделать в то время как вы отключили "Build Automatically".

  • 21
    Это выглядит как вырезать и вставить без ссылки
  • 1
    Многократное копирование / вставка файлов и рефакторинг имен приводят к одной и той же проблеме, несмотря на то, что все имена файлов и их содержимое были в порядке. Очистка проекта, удаление R.java вручную и всех заголовков импорта, а затем перестройка этих заголовков импорта (все еще с CTRL + SHIFT + O) работали нормально.
Показать ещё 5 комментариев
36

R - автоматически сгенерированный класс, который содержит константы, используемые для идентификации ваших ресурсов. Если у вас нет файла R.java(это будет gen/eu.mauriziopz.gps/R.java в Eclipse с 1.5 SDK), я бы рекомендовал закрыть и снова открыть проект или перейти в Project > Build all (и выбрав "Build Automatically", в то время как там, как рекомендовано Josef). Если это не сработает, чем попытаться создать новый проект, если проблема воссоздана, чем сообщение здесь, и мы поговорим подробнее.

  • 8
    Это сработало для меня, но я должен был сначала «Проектировать -> Очистить ...».
27

Закройте все файлы, очистите проект, перезапустите Eclipse.

  • 23
    +1 Но иногда требуется 3 перезапуска затмения и 7 очисток проекта между ними. Просто продолжай пытаться ;-) #rant
  • 3
    Смешайте это с прикосновением (редактирование + сохранение) .xml файлов (strings.xml ...).
19

Наряду с замечательными предложениями в предыдущих ответах убедитесь, что установлена ​​целевая группа Android:

  • Щелкните правой кнопкой мыши на своем проекте
  • Выберите "Свойства"
  • Выберите Android в меню слева.
  • Отметьте поле рядом с соответствующей целью сборки проекта.
  • Нажмите "Применить" и "ОК"

Изменить: через год я нашел другую причину. У меня было изображение .jpg в моей папке с тем же именем, что и изображение .png. Ссылка на это изображение в моем коде должна была смутить программу, и это дало ошибку "R не удалось решить".

19

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

Например, если com.example.myapp является корневым пространством имен для вашего пакета, вы можете добавить активность в пространство имен com.example.myapp.activities.

Это приведет к ошибке "R не может быть разрешена".

Чтобы исправить импорт, R в пространстве имен по умолчанию в вашей деятельности должно быть:

import com.example.myapp.R;
  • 0
    Это помогло мне, я переместил свои действия в пакет ниже корня, добавив корневой пакет, поскольку импорт (import com.example.myapp.R;) решил проблему.
18

Стоит проверить AndroidManifest.xml. Значение package имеет правильное значение.

То есть <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="your.correct.package.name" ...

После того, как вы измените это, R.java будет повторно сгенерирован.

  • 0
    Мое оригинальное имя пакета было com.xxxxxdroid.router. Я создал новую версию моего приложения com.xxxxxdroid2.router. Как только я это сделал, мне пришлось обновить имя пакета в AndroidManifest.xml, но только спустя много времени после того, как я начал копировать и вставлять старые классы. Спасибо за указатель!
  • 0
    это исправило мою проблему, я работал в файле XML, рад, что я вспомнил, какой из них, у меня их много ... спасибо ...
17

Удостоверьтесь, что вы установили форму разработчика sdk для Android.

Свойства правого клика проекта → Java BuildPath выберите Library и добавьте android-support.jar, выполните следующие действия.

Перейдите в Project- > Properties- > Java Build Path, а затем выберите вкладку "Заказ и экспорт". Установите поддержку библиотеки .jar для поддержки android и верните ее в начало списка. И очистите и перестройте. Он работает для большинства случаев.

Изображение 2879

14

У меня была эта проблема в миллионный раз и я понял, что ее вызывает: я создал XML файл с заглавными буквами в названии. Все ваши имена файлов XML в /res должны соответствовать [a-z0-9\\._].

  • 0
    Кроме того, я только что заметил, что переполнение стека требует от нас избежать обратной косой черты.
13

Самое простое решение. Иногда вам просто нужно сохранить файл XML, над которым вы работали, чтобы запустить автогенератор.

Сохраните файл (например, main.xml), затем удалите файл R.java и посмотрите, разрешает ли регенерированная R.java проблему разрешения R.

  • 0
    Правда. Иногда, если говорится, что в вашем XML-файле есть проблема, которой нет (красная волнистая линия или желтый восклицательный знак), удалите ошибочную строку, сохраните файл XML, вставьте строку обратно и сохраните ее снова. Если вы не создаете автоматически, выполните сборку после этого, и это может сработать. Затмение иногда глупо. :)
  • 0
    Несмотря на другие ответы, перечисленные выше, этот оказался для меня правильным. Сначала я получил сообщение «не могу найти APK», когда шел компилировать некоторый пример кода, затем сделал очистку, которая вызвала кучу ошибок «R не может быть решена», а затем просто открыл файл .xml и вручную сохранил ошибки были очищены, и я мог собрать.
Показать ещё 1 комментарий
11

Проверьте имена файлов XML. Убедитесь, что все они в нижнем регистре.

Также убедитесь, что все имена ресурса изображений также находятся в LOWER CASE. У меня была заглавная буква во имя моего jpg файла, и это вызвало неразрешенную ошибку R в моем проекте.

  • 0
    +1 за это была моя проблема. Вы должны назвать ваши изображения так: eicon.png, а не eIcon.png. Я нашел ошибку, посмотрев на Консоль. Он возвращал ошибку в файле с неверным именем файла: ...
11

R - это сгенерированный класс. Если вы используете Android Development Tools (ADT), он генерируется всякий раз, когда проект построен. Возможно, вы отключили "Build Automatically".

10

Эта ошибка возникла при установке моего x64 Linux Mint. Оказалось, что результатом был сбой в двоичном коде ADB, потому что пакет ia32-libs не был установлен. Просто запуск apt-get install ia32-libs и перезапуск Eclipse исправили ошибку.

Если у вашего x64-дистрибутива нет ia32-libs, вам нужно будет пойти Multiarch.

Отметьте # 4 и # 5 в этом сообщении: http://crunchbang.org/forums/viewtopic.php?pid=277883#p277883

Надеюсь, это поможет кому-то.

  • 0
    Стоит отметить, что если у вас установлена 64-битная версия Linux, вам потребуется ia32-libs. Если у вас его нет, попытка выполнить команду adb приведет к странному сообщению о том, что он не может найти файл или каталог.
9

Вам может потребоваться обновить инструменты SDK. Перезагрузите Android SDK Manager еще раз и установите новый элемент: Android SDK Build-tools.

Изображение 2880

7

Вам может потребоваться обновить/установить инструменты SDK. Перезагрузите Android SDK Manager еще раз и установите новый элемент: Android SDK Build-tools.one одним удалением, исправьте, какой из них работает для вас. Изображение 2881

7

У меня тоже была эта проблема. Оказалось, что я случайно удалил строковый ресурс "app_name" из файла strings.xml, который вызывал молчащую ошибку. Как только я добавил его, класс R был сгенерирован успешно, и все было резервным и работающим.

5

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

Изображение 2882

5

перезагрузите компьютер.
Ничто не помогло мне, кроме этого.

5

К сожалению, ни один из существующих вопросов не помог. Поскольку моя проблема кажется специфичной для платформы, это может работать, только если вы находитесь на Ubuntu 64 бит (в настоящее время я использую Ubuntu 12). Сначала я не видел окна "Проблемы", которые уже намекали на решение, что на 64-битной среде вам нужны 32-битные библиотеки, которые могут отсутствовать:

sudo apt-get install ia32-libs

Я установил пакет и восстановил свой проект, который исправил эту проблему для меня.

5

Попробуйте сделать свой новый файл с наименованием файла макета XML. Например, используйте my_file.xml вместо myFile.xml.

  • 0
    +1 ДА! Убедитесь, что оно соответствует правильным соглашениям об именах ... [a-z0-9_.]
5

Еще одна причина: R.java может не получить автогенерирование, если у вас есть такие каталоги, как res/drawable-hdpi, res/drawable-mdpi или res/вытяжке-ldpi.

1.6+, похоже, в порядке с этими каталогами, но 1.5 не хочет их. Когда я удалил эти каталоги, R.java снова начал автогенерирование для меня.

4

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

Итак, помните, что это маленькая записка

Я нашел большую часть времени - ошибка в XML-макете

Если ваш XML некорректен, тогда файл R не создается после построить.

4

В моем случае у меня была ошибка в AndroidManifest.xml. Другие сказали, что ваши файлы XML должны быть свободны от ошибок, но я смотрел только в папке res/. Найдите и исправьте как можно больше ошибок, и проблема может решить проблему.

  • 0
    Это был виновник в моем случае. ЛЮБАЯ ошибка в файле manifest.xml может вызвать эту проблему, если R.java еще не был собран.
4

У меня были примеры Android 8 и я пытался использовать Android 7 SDK. Когда я закрыл проект и снова открыл папку приложения и решил использовать Android 8 SDK, он смог найти R файл. Надеюсь, это поможет.

4

Удалите main.out.xml. Я новичок в этом и еще не знаю, для чего используется этот файл, но удаление его очистило проблему.

  • 0
    Ааа ... Пытался отладить / запустить XML-файл, да ... да был там ...
4

Часто это происходит из-за номера версии MinSDK, который вы предоставили при создании проекта. Пример:

Если вы хотите, чтобы 2,1 был минимальным, Android 2.1 на самом деле является API-интерфейсом 7.

Вы можете видеть, о чем я говорю, когда вы просматриваете SDK, который вы загрузили и установили. Перейдите к месту, где вы установили SDK (например, C:\android-sdk-windows) и откройте папку с именем "платформы". Вы увидите что-то вроде "android-7", указанное как папка, и если вы откроете файл source.properties, который при открытии текстовым редактором покажет вам соответствующую версию платформы.

Когда вы создаете проект, и вы должны выбрать API "Build Target", последний столбец в этом списке с именем "Уровень API" отображает номер, который вы ищете при заполнении настройки MinSDK.

Это, вероятно, одна из самых распространенных ошибок, которая приводит к тому, что файл R.java не создается в Project > gen > packagename > R.java.

3

просто очистите и перестройте свой проект, он иногда помогает

Убедитесь, что в папке res/drawable в android нет ошибки. Если имена изображений в этой папке не содержат чисел и заглавных букв.

3

Моя проблема заключалась в том, что я оставил знак = из строк в strings.xml например <string name"dialog_grl... Мне это не показалось, даже когда графический макет моего .xml файла не смог показать строки. После очистки проекта все файлы перепутались.

3

Измените цель сборки с 1,5 или 1,6 до 2,2 (API версии 8) и проверьте, есть ли символ % в string.xml. Если да, замените на %%.

  • 0
    Неправильно сформированный XML-файл: имел апостроф, исправляя его, очистил миллион ошибок для R, не решенных
3

Если кто-то заинтересован (я мог бы спасти вашу жизнь здесь), у меня была ошибка, R.xml не может быть разрешена, немного отличается от проекта GLS. Хммм. После поиска в R.java, я нашел автоматически сгенерированный класс, XML.java, (я думаю) не был там.

Решение? Ему понадобилась новая папка в res: res\xml и файл с именем default_values.xml там. Тогда все было в порядке.

На всякий случай, если у вас нет этого файла, это:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
    xmlns:android="http://schemas.android.com/apk/res/android">
</PreferenceScreen>
2

Сначала проверьте, есть ли какая-либо ошибка в любом макете xml или нет, если сначала разрешите его.

В противном случае удалите junit-зависимость из проекта и перестройте проект.

Изображение 2883

2

У меня была такая же проблема, но не удалось выяснить, какой файл xml вызвал ошибку.

Благодаря этому сообщению я установил инструменты построения 18.1.1 вместо 19, и он показал мне дефектный файл. Кажется, что версия 19 не показывает фактическую ошибку.

Надеюсь, что это поможет кому-то: -)

2

Я думаю, проблема в файле layout.xml или в инструкции import.

Убедитесь, что вы не импортировали R.android., вместо импорта R.YOUR PACKAGE NAME..

Он будет работать нормально.

2

Я решил это для себя с помощью Window- > Preferences- > Android и SDK. Место: путь к adt\sdk, например. C:\ADT\SDK

2

Чтобы устранить эту проблему, перейдите по ссылке java Build path- > order and Export и выберите все флажки и выберите ok, а затем очистите и создайте проект и импортируйте файл R файла вашего пакета (Ex com.demo.R). Он работает.

  • 0
    Не могли бы вы уточнить это? Я исправил орфографические ошибки, но я все еще не на 100%, это имеет смысл.
2

Если очистка проекта не работает и если нет проблем с xml файлами (если это новый проект). Затем перейдите в Androidmanifest.xml, отредактируйте его и добавьте пробелы между строками, сохраните его. Теперь очистите проект, ошибка исчезнет.

Это происходит из-за устаревшего файла R.java. Когда мы редактируем файл манифеста Android, R.java создается снова.

2

Для меня я удалил "import android.R;" и он исправил все мои проблемы. Какой кошмар!!!

2

Ого. Я решил проблему R, отслеживая все возможные ошибки во всех файлах XML и связанных с ними ресурсах. Я знаю, что это несколько слоев, но просто вы должны:

  • Убедитесь, что на каком-либо ссылочном изображении ресурса на самом деле есть
  • Все уже упомянули так много, что это просто эхо... Удалите все импортированные Eclipse R.* при необходимости.
  • Мне нравится перезапускать Eclipse, когда я делаю это.
  • Убедитесь, что все файлы XML правильно структурированы. Мол, просто делай свои вещи. Хахаха
  • Пройдите столько строк, сколько сможете. Получить привычку часто ударять Ctrl + Shift + S, чтобы быстро получить результаты компиляции.

Хаха. Конечно, приятно получить R Не удается устранить, хотя...

2

Недавно я столкнулся с аналогичной ситуацией с R, которая не может быть решена.

  • Project → Clean (обычно работает, но на этот раз это не так).
  • Я попытался удалить папку gen/ (которая автоматически создается) - нет.
  • Манекен, изменяющий файл. Нет. К настоящему времени я шел серый!
  • Я проверил файл AndroidManifest.xml, если присутствовал appName. Это было проверено!
  • Посмотрел снова на папку res/folder...

И вот где это становится странным... Это дает ошибку, в некоторых, но не во всех случаях.                    

Я добавил флаг formatted = "false":

<resources>
    <string name="blablah" formatted="false">
    </string>
</resources>

Бинго!

  • 4
    Добавил это где?
2

Итак, я столкнулся с этой проблемой несколько раз при переключении целей сборки. Обычно я делаю проект → Clean работал у меня. Однако в прошлый раз этого не произошло. Наконец, я попытался открыть файл default.properties, расположенный в корневой папке проекта. Я получил сообщение об ошибке, в котором указано, что он не синхронизирован с файловой системой. Я действительно удалил его и скопировал версию коллег, которая позволила eclipse восстановить мой R файл. Я вставлю, как он выглядит ниже. Он называется "default.properties".

# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
# 
# This file must be checked in Version Control Systems.
# 
# To customize properties used by the Ant build system use,
# "build.properties", and override values to adapt the script to your
# project structure.

# Indicates whether an apk should be generated for each density.
split.density=false
# Project target.
target=android-3
2

Я изменил android:versionName в файле AndroidManifest.xml с 1.0 на 1.1. Это восстановил мой файл R.java, и я счастливый турист. Надеюсь, это может помочь кому-то.

1

Для меня это было связано с использованием 'private' чертежей android:

[2015-11-26 18:59:48 - MyAndroidApp] 
/Users/myname/git/MyAndroidApp/res/menu/drawer_view.xml:24: 
error: Error: Resource is not public. (at 'icon' with value 
'@android:drawable/ic_menu_home').

Интересно, что эти ошибки не отображались в консоли, пока я не удалил ссылку на файл с помощью значков (ugh!).

android:entries="@menu/drawer_view"

Теперь решение было совершенно очевидно, копирование значков в мой проект (res/drawable-XXXX/) и переключение на локальные ссылки.

@drawable/ic_menu_home

Надеюсь, что это поможет.

1

Он работал у меня с помощью правой кнопки мыши > Инструменты Android > Исправить свойства проекта и некоторое время после перезапуска Eclipse.

1

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

1

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

1
  • Закройте все файлы, очистите проект, перезапустите Eclipse.

или

  • R - автоматически сгенерированный класс, содержащий константы, используемые для идентификации ваших ресурсов. Если у вас нет файла R.java(это будет gen/eu.mauriziopz.gps/R.java в Eclipse с 1.5 SDK), я бы рекомендовал закрыть и снова открыть проект или перейти в Project > Build all (и выбрав "Build Automatically", в то время как там, как рекомендовано Josef). Если это не работает, попробуйте создать новый проект
1

В некоторых ответах предлагается перезагрузить компьютер. Я обнаружил, что перезапуск сервера adb достаточно - это особенно верно, если вы только что обновили Android SDK.

Перезапустите adb через оболочку linux:

$ cd $ANDROID_SDK/platform-tools
$ ./adb kill-server
$ ./adb start-server

Возможно, вам придется перезапустить Eclipse, чтобы он мог подключиться к перезапущенному серверу adb. Вам может потребоваться выполнить очистку/сборку, если Eclipse не скомпилирует проекты автоматически.

1

То же самое происходит со мной, и я прошел день, чтобы исправить это. действительно, это глупая ошибка. Я просто стригу свой опыт, может быть, это было бы полезно для вас. Сначала внимательно посмотрите, когда вы наберете этот setContentView(R.layout.activity_to_do_list); услышите начальную точку R.l, затем затмение должно открыть предложение для вас, как будто это Изображение 2884

вы импортируете второй, а не layout-android.R. второй создается в вашем проекте. com.example.gridtest - это имя пакета проекта. затем сосредоточьте свой импортированный раздел в своем коде Изображение 2885

ok посмотрите import com.example.gridtest.R; его важный. Если вы уже импортируете этот android.R, то удалите его. Спасибо, что это работает. (вам не обязательно делать это всегда, но если вы столкнулись с этой проблемой, сделайте это, надеюсь, что это поможет)

1

У меня была эта проблема много раз, и я обнаружил, что несколько раз "R wont solve" накапливается, потому что:

  • Некоторый плохой названный ресурс существует как: изображение с именем My imge.png
  • или некоторая ошибка в ресурсах, таких как ошибка в файлах xml или ошибка определения ресурса в ваших формах, которые не будут существовать.

в этом случае вы даже не можете импортировать свой собственный пакет R в свой проект. поэтому перейдите в свою папку ресурсов и найдите 2 надбавки.

это будет работать

1

В моем случае эта ошибка возникла из-за того, что я импортировал изображение в папку /res, а изображение имело недопустимое имя. Не могу поверить, что я трачу почти час с этой проблемой, пока не понял, что изображение имеет недопустимое имя:/

  • 0
    Хе-хе ... Я импортировал .PNG, который я изменил на .png после этого поста: D
1

Иногда это помогает, когда вы вручную создаете файл R.java, просто простую пустую R.java.

1

Обратитесь к файлам классов "import" выше и убедитесь, что импорт "android.R" отсутствует, если он затем удаляет его, а затем нажмите ctrl + shft + o и выберите импорт "packagename.R" а не другой.

1

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

1

просто очистите и перестройте свой проект, он иногда помогает

1

Из многих ответов, которые были предложены здесь, мне помогло изменить порядок в "Заказ и Экспорт" на пути сборки java.

1. щелкните на проекте → свойства проекта

2. Путь сборки Java

3.Order и Export

Измените порядок пути класса сборки

1. (пакет-имя-вашего)/ЦСИ

2. Андроид (номер версии)

3. Зависимости андроида

4. (пакет-имя-вашего)/ген

1

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

1

Мое решение (на Eclipse Juno) состояло в том, чтобы щелкнуть "Fix Project Properities":

  • Щелкните правой кнопкой мыши по проекту
  • Выберите меню Android Tools
  • Нажмите "Исправить свойства проекта"

пс. Сначала проверьте, не реализована ли библиотека R и все ли файлы в res/папке в порядке.

1

Реальный вопрос заключается в том, как предотвратить возврат import android.R;:

Окно → Prefs → Java → Редактор → Сохранить действия

Снимите флажок "Организовать импорт".

Это будет сделано.

1

Если вы находитесь на Mac, проверьте, добавлен ли .DS_Store в каталог в /res (ls -al в командной строке терминала). Удалите его и обновите/перестройте.

0

Когда вы только что открыли свой проект, для студии Android требуется некоторое время. Это случается со мной много. Я просто сижу и смотрю видео на YouTube в течение 5 минут, пока он загружается.

К тому времени символ can not R исчез!: -)

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

0

При запуске x64 Linux могут отсутствовать некоторые библиотеки сборки x32. Ex для Debian убедитесь, что установлены пакеты libc6-i386 и zlib1g.

0

лучшее и перспективное решение

  • закройте Eclipse и откройте папку Workspace.
  • найдите папку с именем .metadata и удалить эту папку.
  • Открыть Eclipse.

Ошибка должна исчезнуть:)

0

О, боже, я Linux (ubuntu), вот как я его разрешил:

Первая вещь проблема - проблема с разрешением. Я не видел никакой ошибки, связанной с ремиссией, но это была проблема. У инструментов не было прав на выполнение.

Итак, просто быстро исправить (если вы знаете, что точный файл, который нуждается в исполняемом расследовании, применит команду ff специально для них.)

измените каталог, который вы поместите в свой sdk, затем:

sudo chmod +x -R .

После этого goto project->clean->select your project->clean

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

0

R - это автоматически созданный ресурс в проекте android, который иногда случается, точно не знает, почему, но вы попробовали построить автоматически вариант из проекта

= > удалить другой импорт файла R другого проекта или андроида .r = > всегда помните, если вы всегда сталкиваетесь с проблемой автоматического генерации идентификатора или автоматического удаления R файла, вы можете генерировать статический идентификатор, как строковый, и использовать его с @id вместо @+ id

0

Каждый раз, когда у меня была проблема с R, которая не была сгенерирована или даже не исчезла, это было связано с некоторой проблемой в файле макета XML, который помешал созданию приложения.

R - порожденный класс. Если вы используете Android Development Tools (ADT), он генерируется всякий раз, когда проект построен. Возможно, вы отключили "Build Automatically".

0

Кроме того, если у вас есть дополнительные файлы, такие как "desktop.ini" в папках res, которые добавляются ОС, но совершенно не нужны, попробуйте удалить их. Это, по-видимому, было одной из вещей, блокирующих поколение R.java в импортированном проекте.

0

Если вы работаете с eclipse: иногда eclipse подавляет сообщения об ошибках в файлах ressource. Решение. Сохраните временный ресурс, который не имеет ошибок в папке макета. Создайте новый проект. Затем eclipse показывает правильную ошибку в файле ressource. Удалите временный ресурс.

0

Это может быть проблема, вызванная вручную переименованием пакета в AndroidManifest.xml

Альтернативой является использование встроенного инструмента для переименования пакета, это позаботится о большей части проблем, избегая проблемы с R, не найденной.

Right Click on the project
Click on Android Tools
Click on Rename Application Project
Enter the new package name

Затем появится всплывающее окно с просьбой о внесении изменений, в том числе обходной путь R.

Источник: Переименовать имя пакета в android

0

Это очень старый поток, сегодня у меня появилось новое открытие. Я создал действие, я поместил его в другой пакет (по ошибке). Во вновь создаваемом классе eclipse не удалось разрешить R.

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

Если вы не сохраняете свой Activity в пакете действий, вы получите эту ошибку.

0

причина R.java не может быть сгенерирована автоматически, если у вас есть такие каталоги, как

res/drawable-hdpi, 
res/drawable-mdpi, 
res/drawable-ldpi.

image name should be in a proper way

Проверьте имя изображения  и проверьте и layout/any.xml  и string.xml

0

Импортировать класс R с вашим именем пакета. Не импортируйте класс android R.

0

Щелкните правой кнопкой мыши на своем проекте и нажмите Refresh Или нажмите F5

0

Для меня работала установка "Android SDK Build-tools". Откройте Android SDK Manager и установите инструменты для создания Android SDK. Это также помогло обновить платформу разработки Andriod в Eclipse: Справкa > Проверить наличие обновлений

0

Я бы сказал, что "R не может быть разрешено" является чем-то слишком общим и может иногда вводить в заблуждение. У меня также была такая же проблема много раз назад, даже когда я впервые создал новый проект (что означало, что я еще не испортил код). Большую часть времени мне просто нужно обновить менеджер sdk (как говорили некоторые люди). Но в моем недавнем случае я узнал, что путь к моему файлу проекта слишком длинный (что-то вроде этого E:\R&D\ANDROID\ANDROID BASIC\Folder 1\ Folder 2\..... \Folder n\MyProject). Имена папок также содержат пробел. Я думал, что это может быть так, и действительно, это правда, когда я создал новый проект в другой папке с самым коротким путем, и ни один из имен папок, содержащих пробельный символ, работал нормально.

0

Я следил за советом по установке инструментов построения платформы. затем Сообщение

<package>/gen already exists but is not a source folder. Convert to a source folder or rename it.

появился в консоли. Поэтому я последовал совету и установил "ген" в качестве исходной папки. Это устранило проблему.

0

Это работает.

Шаг 1:

Загрузить https://www.dropbox.com/s/7nwlrg05ke05tat/GalleryImageview.zip

Шаг 2:

Загрузите eclipse и загрузите проект > Run and Test будут работать на лету

Шаг 3:

Обновите здесь, если что-то не так.

Enjoy. Счастливое кодирование.

0

Я пробовал большинство опций в этой теме (и многих других), и ничто не работало для меня. Наконец эта работа сработала, поэтому я решил поделиться ею со всеми...

У меня есть несколько версий Eclipse IDE на моей машине (потому что я также работаю над проектами, не связанными с Android). Случайно я создал свой проект Android, используя рабочую область, которая использовалась другой (не Android) версией Eclipse. Из-за этого я предполагаю, что что-то странное происходит, и мой R.java никогда не генерируется!

Чтобы исправить это, все, что я сделал, создало новое рабочее пространство и магически R.java начал генерировать, и все прошло гладко...

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

0

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

иначе вы должны иметь ошибку в файле XML, возможно, или проверить другие ответы.

0

Существует два способа: R - ошибка

1) Проблема с вашим файлом макета, то есть xml файл

2) Если вы обновите adt, тогда возникнет проблема R.  - вам нужно проверить свойства для проекта  - goto- > Properties → Java Build Path → Order and Export и проверить для всех lib.

Это решит проблему.

0

У меня сегодня такая же проблема. Я попытался выполнить все обновления sdk с помощью менеджера SDK. После завершения и перезапуска проблемы с IDE была решена.

0

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

И по какой-то причине, если вы ничего не добавили к активности, например onCreate(), она не поймет, что такое R.

0

Я попробовал больше всего метода выше, но не работал с моим случаем

Наконец, я узнал, что потерянный adb

для mac os, перейдите в каталог android sdk

type./adb start-server

  • 0
    Это определенно не то, что вызывает эту ошибку
  • 0
    Я потратил часы на это, поэтому я попытался установить Android SDK Manager. когда я пытаюсь установить пакет, меня предупреждают, что мой adb потерян. поэтому я подключаю ADB снова. после этого проблема r.java исчезнет немедленно
Показать ещё 2 комментария
0

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

У меня не было "import android.R" в новом проекте, созданный мастером затмения. файл макета xml по умолчанию был также строчным.

Проблема заключалась в том, что eclipse не генерировал R.java. Никакой эффект очистки/перезапуска не имел никакого эффекта.

Я прокомментировал вызовы setContentView и getMenuInflator, и make удалось, после чего Eclipse сгенерировал R.java.

После создания R.java мне удалось раскомментировать setContentView и getMenuInflator.

0

Для меня это было из-за неправильной версии компилятора java. Свойства проекта → Компилятор Java, включите "Включить конкретные настройки проекта" и выберите свой "уровень соответствия компилятора"

0

В моем случае я пытался преобразовать свой проект в Maven. После этого (и тысячи случайных ошибок, которые говорили НИЧЕГО) я пытался отменить все операции. Я не заметил, что файл проекта был изменен, и он не был виден внутри Eclipse.

Только возврат файла .project к версии до-maven помог мне исправить эту ошибку.

0

Не пытайтесь импортировать android.R. Попробуйте исправить все ошибки, которые появляются в файлах XML, включая файл манифеста. Когда все ошибки будут удалены, снова появится R.java.

0

Решение:

Очистить проект после перезапуска Eclipse. Они сгенерированы автоматически, иначе вы будете являться внутренним XML-компонентом (например, кнопкой) после Ctrl + Shift + O. Он автогенерировал R файл, а затем была решена ошибка.

0

Убедитесь, что вы ищете R.drawable.*, что файл существует в папках drawable*.

0

Я пробовал все вышеперечисленное без преобладания. Оказалось, что PhoneGap вызывает конфликт с Android SDK. После удаления PhoneGap файл Resources снова начал регенерировать. Другой проект, требующий PhoneGap, поэтому я снова установил, и еще раз, проект Android (другой проект) остановил автоматическое создание R файла - была автоматически проверена сборка, была очищена и перезапущена Eclipse - нет кубиков. Я удалил PhoneGap, и он снова работал. Это был PhoneGap v 1.5 с плагином MDS 1.1 для Eclipse.

0

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

Щелкните правой кнопкой мыши по проекту → properties → Java Build path- > source.

Затем добавьте папки gen и src. По какой-то причине Android хотел, чтобы у меня была только общая папка.

0

Я столкнулся с такой же проблемой после размещения какой-либо графики в папке с возможностью переноса. Была некоторая ошибка, и когда я попытался очистить, файла R.java не было.

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

Возможно, это может помочь вам или другим читателям.

0

Мой файл R исчез и не будет создан - консоль сообщила об этом:

[2010-09-22 16:19:40 - myproject] res\drawable-ldpi\downloadNow.png: Недопустимое имя файла: должно содержать только [a-z0-9 _.]

Итак, оказалось, что имена ресурсов не могут иметь заглавных букв - убедитесь, что они все маленькие буквы и содержат. и _ только

0

Другой способ это может произойти, если вы начинаете новый проект с одного из образцов. Когда вы позже решите изменить имя пакета из com.example.android.foo в свой собственный домен, вам нужно будет изменить несколько значений в манифесте и в отдельных .java файлах.

Если вы находитесь в Eclipse, найдите оператор пакета для .java файла и выберите QuickFix. Там может быть несколько вариантов, но тот, который вы хотите, - это тот, который указывает на "Переместить" foo.java ", чтобы упаковать" com.youdomain.android.yourapp ". Сохраните файл, и он может автоподтвердить или сделать так, как предложили другие. и попробуйте" Project- > Clean".

0

У меня была та же проблема. В моем случае это связано с именами XML файлов макета. У меня были некоторые имена файлов с прописными буквами в них:

screenQS.xml - не работает!

screenqs.xml - работает!

-1

Я предполагаю, что вы просто скопировали и вставили коды, или нет. В любом случае проверьте свой файл AndroidManifest.xml, проверьте правильность имени package.

-2

Чтобы разрешить R

  • Правильно настройте файл XML

а затем Очистить проект в Строить меню

Это самый простой способ сделать это

Надеюсь, что это будет.

-2

Проверьте содержимое вашего XML файла. Если layout_width или layout_height содержат элемент match_parent, то измените его на fill_parent. Он решил проблему для меня.

-3

Нажмите Alt + enter и импортируйте

или

Ctrl + F9

и решается.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню