Разработка для Android в Eclipse: R.java не регенерирует

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

Я использую Windows 7.

Из одного из комментариев: "Doing Project → Clean - это то, что вызвало проблему для меня. Очистка удаляет R.java... и по какой-то причине плагин не регенерирует файл".

Ответ 1

Этот сайт предлагает:

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

... и...

В Eclipse в меню "Проект" автоматически создается опция. Это поможет вам создавать файл R.java каждый раз, когда изменения сделал. Опция "Чистый..." также находится в разделе "Проект".

Этот сайт предлагает другое решение.

Ответ 2

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

Решение

  • Убедитесь, что все ссылки R. не разбиты. Исправить все ошибки в ваших XML файлах. Если что-либо в ADK нарушено, R не будет регенерировать.
  • Если вы каким-то образом ударили что-то и создали import android.R в своей деятельности, удалите его.
  • Запустите Проект → Очистить. Это приведет к удалению и восстановлению R и BuildConfig.
  • Убедитесь, что Проект → Создать автоматически. Если нет, создайте его вручную через Menu -> Project -> Build Project.
  • Подождите несколько секунд, пока ошибки не исчезнут.
  • Если это не работает, удалите все внутри папки /gen/folder
  • Если он все еще не работает, попробуйте щелкнуть правой кнопкой мыши свой проект → Инструменты Android → Исправить свойства проекта.
  • Проверьте ваши *. свойства файлы (в корневой папке вашей папки приложения) и убедитесь, что ссылки там не сломаны.
  • Щелкните правой кнопкой мыши свой проект > свойствa > Android. Посмотрите на разделы "Целевая аудитория проекта" и "Библиотека" в правой части страницы. Ваша цель сборки должна соответствовать цели вашего AndroidManifest.xml. Поэтому, если он настроен на таргетинг 17 в AndroidManifest, убедитесь, что целевое имя - Android 4.2. Если ваша библиотека имеет X под ссылкой, удалите и повторно добавьте библиотеку, пока не появится зеленый галочка. Это может произойти, если вы переместили несколько файлов и папок.

Что делать, если R не регенерирует

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

  • Проверьте ошибки внутри ваших XML файлов, в основном в папке /res/
  • Общие места /layout/ и /values/, особенно если вы недавно изменили один из них.
  • Отметьте AndroidManifest.xml. Я нахожу, что часто меняю строку и забываю изменить имя строки из AndroidManifest.xml.
  • Убедитесь, что установлен Android SDK Build-tools. Окно → Android SDK Manager → Инструменты → Конструкторы Android SDK
  • Убедитесь, что при обновлении Android SDK Tools вы также обновляете Android SDK Platform-tools и Android ADK Build-tools. Строка не работает, если они не совпадают.
  • Если вы не можете найти проблему, щелкните правой кнопкой мыши /gen/ → Восстановить из локальной истории... → отметьте R.java → нажмите Восстановить. Даже если это не решит проблему, она устранит дополнительные ошибки, чтобы облегчить задачу поиска.

Ответ 3

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

Ответ 4

Одна из причин, по которой Rclass может отсутствовать, внезапно возникает, когда в ваших XML файлах имеются ошибки. Например, когда вы добавляете XML файл с заглавными буквами под именем myCoolLayout.xml, который не разрешен. Или когда у вас есть ссылки, которые не указывают на существующие файлы и т.д.

Ответ 5

В Eclipse просто используйте Project → clean для очистки проекта. R.java будет автоматически (re) -создан.

Если по какой-то причине dosn't не работает: Убедитесь, что файлы layout.xml не содержат ошибок. Eclipse, похоже, здесь немного глючит: иногда он не помещает ошибки в XML и в проводник пакетов. В таком случае: взгляните на представление "console" или "problem" после использования "clean". Там должны отображаться все ошибки. Исправьте их и повторите очистку.

ПРИМЕЧАНИЕ: НЕОБХОДИМО исправить ошибки, которые вы получаете из-за отсутствующего файла R! Просто исправить файлы XML и другие ошибки проекта и использовать clean!

Ответ 6

Быстрое исправление:

Имя пакета в манифесте должно быть таким же, как в папке /src, пакет папок /gen будет автоматически воспроизведен.

Подробное наблюдение:

Обратите внимание на имя пакета в папке /gen. В моем случае это было не так, как в папке /src.

Пакет, указанный в манифесте, относится к папке /gen.

Я попытался добавить пакет с именем папки /src в папку /gen, чтобы узнать, что произошло бы, но это не решило проблему. Затем я продолжил удаление имени пакета, которое не совпадает с именем пакета в папке /src. Этот пакет с именем, который не соответствует папке /src, был воссоздан, как только я удалил его.

Так как ссылка на пакет в манифесте соответствовала тому, который был бессмысленно воссоздан и который не соответствовал пакету в папке /src, было предложено переименовать package = "oldPackage" с помощью package = "srcFolderPackage".

Ответ 7

У меня была такая же проблема, и я, наконец, нашел проблему: в файле strings.xml я не сохранил строку <string name="app_name">program-name</string>, которая присутствует по умолчанию при создании нового проекта Android. Я думал, что он используется только для программы HelloWord, которая является исходной программой.

Однако AndroidManifest.xml ссылается на это значение, следовательно:

= > Ошибка компиляции;
= > R.java не обновляется;
= > ID не распознаются...

Ответ 8

Android добавила в SDK инструмент сборки ADT 22 для механизма построения. Вам просто нужно сделать следующие шаги.

  • Обновить инструмент Android SDK
  • Обновление платформы платформы Android SDK
  • Обновить инструмент создания SDK для Android.
  • Добавьте путь вашего инструмента построения к переменной пути. (путь до ---- YOUR DIRECTORY-PATH\android-sdk\build-tools)

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

Ответ 9

Если ваш R.java не создается, одним из решений является удаление файла макета с именем "blabla.out.xml".

После удаления этого файла попробуйте очистить проект из меню Project → Clean.

Ответ 10

Как обобщение ответа Gloux, если у вас есть какие-либо ошибки в каталоге res, тогда R.java не может генерировать - даже если вы очищаете и перестраиваете. Сначала разрешите эти ошибки.

В качестве примера: когда вы добавляете файл изображения, например "myimage-2.jpg", система будет считать эту ошибку, поскольку имена файлов ограничены буквенно-цифровыми значениями. Сделайте обновление в своей директории "res" после добавления каких-либо файлов и просмотрите вывод в окне консоли для любых предупреждений о имени файла.

Ответ 11

Если ваша ОС Ubuntu, я могу предложить некоторое предложение:

  • Установите или обновите ia32-lib:

    sudo apt-get upgrade ia32-libs
    
  • Проверьте, имеете ли вы правильное разрешение в папке aapt:

    cd ANDROID/adt-bundle-linux-x86_64-20130522/sdk/build-tools/android-4.2.2
    chmod 777 aapt
    
  • Запустите Eclipse:

    sudo eclipse
    
  • Запустить проект → Очистить в Eclipse

Ответ 12

У вас 100% ошибка в XML файле, но проверка XML не показывает вам ошибку. Именно по этой причине вам нужно сначала проверить ваши файлы XML.

Ответ 13

ВСЕГДА полезно взглянуть на вкладку "Проблемы" в Eclipse. В моем случае я получал сообщение об ошибке " android, неспособное разрешить сообщение об ошибке" android-8 ", которое не сгенерировало R.java. Итак, я скорректировал импортированный целевой на тот, который я использовал в файле default.properties, затем я выполнил очистку через Projects- > Clean и voila! R.java автоматически генерируется! Надеюсь, это поможет!

Ответ 14

Очистка проекта, закрытие Eclipse, повторное открытие и запуск моего проекта, наконец, заставили моего R.java снова появиться... Надеюсь, он поможет

Ответ 15

Убедитесь, что вы не импортируете

android.R;

Ответ 16

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

Вы можете увидеть некоторую ошибку в окне журнала консоли Eclipse, в котором говорится: "Значок записи ресурса уже определен". После удаления icon.html вы можете очистить или просто удалить папку gen. Вы обнаружите, что создан R.java.

Ответ 17

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

Ответ 18

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

Вот как я исправил это в Eclipse:

  • Создайте R.java в папке gen вручную и сохраните.
  • После этого перейдите в Project и нажмите "Очистить"

Отобразится следующее сообщение, и ваш файл будет автоматически перезаписан:

R.java был изменен вручную! Возврат к сгенерированной версии!

Ответ 19

Для меня я дважды связал v7 appcompat. В любом случае, в Eclipse, щелкните правой кнопкой мыши имя проекта в Проводнике пакетов или Навигаторе, перейдите в "Свойства", "Android" и снимите все дубликаты в разделе "Библиотека". Возможно, вам понадобится Build → Clean after.

Ответ 20

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

Если это не было импортировано, то ресурсы, в которых они были возвращены, были ресурсами по умолчанию, ни один из моих включенных.

С учетом сказанного, если вы обнаружите, что получаете только список ресурсов по умолчанию, просто установите флажок, чтобы убедиться, что вы импортируете application_package_name.R, а не android.R.

Ответ 21

Очевидно, что нет никакого окончательного ответа на этот вопрос, но здесь другой, который я уже здесь не вижу:

У меня было R.java исчезло после (попытки) Team Synchronize, и в проекте были файлы разрешения конфликтов (т.е. thingy.xml.mine, thingy.xml.r35 и т.д.). Удаление/разрешение конфликтов, регенерированных R.

Ответ 22

У меня была эта проблема. Случайно я удалил это

xmlns:tools="http://schemas.android.com/tools"

который начал вызывать ошибки сборки во всем проекте в моих XML файлах, а также в моих файлах Java. Как только я перепечатал то, что я удалил, он снова работал:)

Ответ 23

ОК, поэтому ясно, что для этой проблемы может быть много причин. Если вы работаете на 64-битной Linux-машине, и вы просто настраиваете ADT в первый раз, вы можете получить эту проблему, когда R не генерирует автоматически. Проверьте вкладку консоли, и вы увидите ошибку, похожую на:

 'No such file or directory' while attempting to get adb version from '/home/patrick/code/android-sdks/platform-tools/adb'

Если в этом случае вам нужно установить ia32-libs, используя что-то вроде:

 sudo apt-get install ia32-libs

Подробнее см. здесь: Android adb не найден

Ответ 24

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

Я нашел это при компиляции моего приложения с Ant.

Ответ 25

Я нашел решение, почему R.class не был сделан Eclipse после его повторного запуска - 2 clean, build и т.д.

Проблема здесь в strings.xml:

<string name="hello">Hello World, HelloAutoComplete!</string>

<string name="app_name">HelloAutoComplete</string>

Они по умолчанию созданы Eclipse при создании проектов.

Определенно вы меняете strings.xml для своего собственного требования. Иногда вы очищаете string.xmls эти две строки из вашего кода:

Это создает проблему в файле AndroidManifest.xml:

<application android:icon="@drawable/icon"  android:label="@string/app_name">
<activity android:name=".HelloAutoComplete" android:label="@string/app_name">

Поэтому он не может связываться с strings.xml.

Ответ 26

Я изменил имя файла XML-макета и позже узнал, что XML файл (поставщик виджета в этом случае) все еще ссылается на старый формат XML, который не существует, и это предотвращает автоматическое создание/коррекцию класса R.

Ответ 27

Я хочу выделить ответ 糞 _ 爺.

Я переименовал цвет из "listcolor" в "color_list", но я не заметил, что один из других макетов ссылался на него. Итак (внезапно) все мои R.string.X и R.layout.X потерпели неудачу на "R".

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

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

Ответ 28

Для меня проблема заключалась в том, что у меня было изображение в папке res с заглавной буквой, то есть с Image.png. Просто поставьте image.png.

Все для lowerCase и это!

Ответ 29

У меня была та же проблема. Оказывается, у меня была циркулярная ссылка; Я изменил имя строки, на которое ссылался мой макет.

Я сделал чистую и перестроенную версию, и файл R.Java не воссоздавался. Я потратил два часа, пытаясь понять, что случилось. В конечном итоге я изменил элемент макета на временный текст, сделал чистый проект и был создан файл R.Java.

Ответ 30

В моем случае файлы R не генерировались, потому что у меня были файлы XML в моей папке res/ с тем же именем (например, res/layout/filename.xml и res/values/filename.xml).

После того как я изменил один из имен файлов, мои R файлы были сгенерированы снова с помощью опции Build Automatically.