Разработка для 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.