Я узнал, что мой R.java никогда не обновляется, поэтому он не содержит информации о моих новых ресурсах, поэтому я решил удалить его и подумал, что Eclipse создаст новый. Но этого не произошло, и теперь у меня нет R.java. Как я могу его восстановить?
Я использую Windows 7.
Из одного из комментариев: "Doing Project → Clean - это то, что вызвало проблему для меня. Очистка удаляет R.java... и по какой-то причине плагин не регенерирует файл".
Этот сайт предлагает:
если вы запустите очистку проекта, он должен восстановить все сгенерированные файлы Java, а именно R.
... и...
В Eclipse в меню "Проект" автоматически создается опция. Это поможет вам создавать файл R.java каждый раз, когда изменения сделал. Опция "Чистый..." также находится в разделе "Проект".
Этот сайт предлагает другое решение.
Я обнаружил, что это происходит со сломанной компоновкой, и все взрывается. Расслабьтесь, это как эта старая ошибка, когда вы впервые изучили программирование C, где вы забыли одну точку с запятой, и она генерирует сто ошибок. Много паники, нажмите все кнопки и усугубит ситуацию.
R.
не разбиты. Исправить все ошибки в ваших XML файлах. Если что-либо в ADK нарушено, R
не будет регенерировать.import android.R
в своей деятельности, удалите его.Menu -> Project -> Build Project
.Это обычно происходит, когда у вас есть сломанный XML файл.
/res/
/layout/
и /values/
, особенно если вы недавно изменили один из них.AndroidManifest.xml
. Я нахожу, что часто меняю строку и забываю изменить имя строки из AndroidManifest.xml
.Android SDK Build-tools
. Окно → Android SDK Manager → Инструменты → Конструкторы Android SDKAndroid SDK Tools
вы также обновляете Android SDK Platform-tools
и Android ADK Build-tools
. Строка не работает, если они не совпадают.У меня была такая же проблема. Когда я проверил это, я обнаружил, что имя ресурса XML под макетом не имеет правильного соглашения об именах. У него были заглавные буквы. Поэтому я переименовал его, чтобы сделать все буквы строчными, а магия работала.
Одна из причин, по которой Rclass может отсутствовать, внезапно возникает, когда в ваших XML файлах имеются ошибки. Например, когда вы добавляете XML файл с заглавными буквами под именем myCoolLayout.xml, который не разрешен. Или когда у вас есть ссылки, которые не указывают на существующие файлы и т.д.
В Eclipse просто используйте Project → clean для очистки проекта. R.java будет автоматически (re) -создан.
Если по какой-то причине dosn't не работает: Убедитесь, что файлы layout.xml не содержат ошибок. Eclipse, похоже, здесь немного глючит: иногда он не помещает ошибки в XML и в проводник пакетов. В таком случае: взгляните на представление "console" или "problem" после использования "clean". Там должны отображаться все ошибки. Исправьте их и повторите очистку.
ПРИМЕЧАНИЕ: НЕОБХОДИМО исправить ошибки, которые вы получаете из-за отсутствующего файла R! Просто исправить файлы XML и другие ошибки проекта и использовать clean!
Имя пакета в манифесте должно быть таким же, как в папке /src
, пакет папок /gen
будет автоматически воспроизведен.
Обратите внимание на имя пакета в папке /gen
. В моем случае это было не так, как в папке /src
.
Пакет, указанный в манифесте, относится к папке /gen
.
Я попытался добавить пакет с именем папки /src
в папку /gen
, чтобы узнать, что произошло бы, но это не решило проблему. Затем я продолжил удаление имени пакета, которое не совпадает с именем пакета в папке /src
. Этот пакет с именем, который не соответствует папке /src
, был воссоздан, как только я удалил его.
Так как ссылка на пакет в манифесте соответствовала тому, который был бессмысленно воссоздан и который не соответствовал пакету в папке /src
, было предложено переименовать package = "oldPackage"
с помощью package = "srcFolderPackage"
.
Android добавила в SDK инструмент сборки ADT 22 для механизма построения. Вам просто нужно сделать следующие шаги.
Это решит проблему.
У меня была такая же проблема, и я, наконец, нашел проблему: в файле strings.xml я не сохранил строку <string name="app_name">program-name</string>
, которая присутствует по умолчанию при создании нового проекта Android. Я думал, что он используется только для программы HelloWord, которая является исходной программой.
Однако AndroidManifest.xml ссылается на это значение, следовательно:
= > Ошибка компиляции;
= > R.java не обновляется;
= > ID не распознаются...
Если ваш R.java не создается, одним из решений является удаление файла макета с именем "blabla.out.xml".
После удаления этого файла попробуйте очистить проект из меню Project → Clean.
Как обобщение ответа Gloux, если у вас есть какие-либо ошибки в каталоге res
, тогда R.java не может генерировать - даже если вы очищаете и перестраиваете. Сначала разрешите эти ошибки.
В качестве примера: когда вы добавляете файл изображения, например "myimage-2.jpg", система будет считать эту ошибку, поскольку имена файлов ограничены буквенно-цифровыми значениями. Сделайте обновление в своей директории "res" после добавления каких-либо файлов и просмотрите вывод в окне консоли для любых предупреждений о имени файла.
У вас 100% ошибка в XML файле, но проверка XML не показывает вам ошибку. Именно по этой причине вам нужно сначала проверить ваши файлы XML.
Если ваша ОС 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
ВСЕГДА полезно взглянуть на вкладку "Проблемы" в Eclipse. В моем случае я получал сообщение об ошибке " android, неспособное разрешить сообщение об ошибке" android-8 ", которое не сгенерировало R.java. Итак, я скорректировал импортированный целевой на тот, который я использовал в файле default.properties, затем я выполнил очистку через Projects- > Clean и voila! R.java автоматически генерируется! Надеюсь, это поможет!
Я обнаружил, что любой файл с заглавными буквами в папке res
создаст эту ошибку. Это случилось со мной с файлом PNG, который я добавил и забыл.
R.java никогда не будет сгенерирован, если в папке res
имеются ошибки. Например, в выпадающей вложенной папке есть два файла с одинаковым именем, один - значок .png, а другой - значок .html.
Вы можете увидеть некоторую ошибку в окне журнала консоли Eclipse, в котором говорится: "Значок записи ресурса уже определен". После удаления icon.html вы можете очистить или просто удалить папку gen
. Вы обнаружите, что создан R.java.
Убедитесь, что вы не импортируете
android.R;
Очистка проекта, закрытие Eclipse, повторное открытие и запуск моего проекта, наконец, заставили моего R.java снова появиться... Надеюсь, он поможет
Для меня я дважды связал v7 appcompat. В любом случае, в Eclipse, щелкните правой кнопкой мыши имя проекта в Проводнике пакетов или Навигаторе, перейдите в "Свойства", "Android" и снимите все дубликаты в разделе "Библиотека". Возможно, вам понадобится Build → Clean after.
Прочитав много сообщений и видеороликов YouTube, я обнаружил, что у каждого из нас есть R.java
отсутствует по разным причинам.
Вот как я исправил это в Eclipse:
gen
вручную и сохраните.Отобразится следующее сообщение, и ваш файл будет автоматически перезаписан:
R.java был изменен вручную! Возврат к сгенерированной версии!
Моя проблема заключалась в том, что appcompat
не был в том же каталоге, что и мой проект.
Я нашел это при компиляции моего приложения с Ant.
ОК, поэтому ясно, что для этой проблемы может быть много причин. Если вы работаете на 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 не найден
У меня была эта проблема. Случайно я удалил это
xmlns:tools="http://schemas.android.com/tools"
который начал вызывать ошибки сборки во всем проекте в моих XML файлах, а также в моих файлах Java. Как только я перепечатал то, что я удалил, он снова работал:)
Очевидно, что нет никакого окончательного ответа на этот вопрос, но здесь другой, который я уже здесь не вижу:
У меня было R.java
исчезло после (попытки) Team Synchronize, и в проекте были файлы разрешения конфликтов (т.е. thingy.xml.mine
, thingy.xml.r35
и т.д.). Удаление/разрешение конфликтов, регенерированных R
.
Я столкнулся с этой проблемой несколько раз. Я обнаружил, что если бы я не импортировал пакет R через мое имя приложения, например, если в моем приложении было имя пакета example.test, я обнаружил, что мне пришлось импортировать example.test.R, чтобы получить доступ к любому из ресурсы.
Если это не было импортировано, то ресурсы, в которых они были возвращены, были ресурсами по умолчанию, ни один из моих включенных.
С учетом сказанного, если вы обнаружите, что получаете только список ресурсов по умолчанию, просто установите флажок, чтобы убедиться, что вы импортируете application_package_name.R, а не android.R.
Все эти ответы не могут работать, если вы используете Maven. Решение для меня заключалось в том, чтобы добавить
<genDirectory>${project.basedir}/gen</genDirectory>
в разделе конфигурации модуля android-maven-plugin.
Моя проблема была в файле меню.
Компилятор, похоже, не предупреждает вас, если строки, которые не существуют внутри strings.xml
, ссылаются в файлах меню. Проверьте, поддерживает ли ваш item
в ваших файлах XML любые строки, которые не существуют в вашем strings.xml
. Обычно в android:title
.
Также убедитесь, что у вас установлена последняя версия плагина ADT, и откройте менеджер Android SDK, чтобы обновить все инструменты SDK до последней версии. Также проверяйте обновления в Eclipse. Не совпадающие версии вызвали эту проблему для меня.
Эта проблема просто пришла мне в голову, и, к сожалению, ни одно из предложений здесь не помогло мне. Пробовав много вещей, я наконец узнал, что произошло, и надеюсь, что это может помочь другим.
Вчера я загрузил много нового, используя Android SDK Manager. После этого я обновил плагин Android Eclipse. Сегодня, после того, как Eclipse "чист", файл R исчез и перестает генерироваться.
Причина в том, что список доступных SDK (в настройках → android) пуст. После того, как он снова указал на правильный каталог, он перезагрузился и показал доступные SDK. Когда я закрыл настройки и попробовал другую сборку, все вернулось к нормальной жизни.
В прикрепленном изображении вы можете увидеть список уже заполненных SDK. Пока проблема шла, она была пустой.
Надеюсь, это поможет другим!
Если ничего не работает корректно, хотя вы считаете, что все правильно, проверьте свои XML файлы один за другим. Ошибка 100%.
Если вы работаете с графическим интерфейсом XML файлов, все кажется ОК, но когда вы вводите текстовые XML файлы, вы видите беспорядок внутри. Eclipse немного искажает этот материал.
Установить BuildAutomatically, так что после того, как вы исправите свои ошибки, у вас будет файл R.java в сгенерированных файлах.... УДАЧА!!!
В моем случае файлы R не генерировались, потому что у меня были файлы XML в моей папке res/
с тем же именем (например, res/layout/filename.xml
и res/values/filename.xml
).
После того как я изменил один из имен файлов, мои R файлы были сгенерированы снова с помощью опции Build Automatically.
Для меня проблема заключалась в том, что у меня было изображение в папке res с заглавной буквой, то есть с Image.png. Просто поставьте image.png.
Все для lowerCase и это!
Я хочу выделить ответ 糞 _ 爺.
Я переименовал цвет из "listcolor" в "color_list", но я не заметил, что один из других макетов ссылался на него. Итак (внезапно) все мои R.string.X и R.layout.X потерпели неудачу на "R".
В конце концов я посмотрел в окне консоли и посмотрел на ошибки. Я думал, что все ссылки на R не найдены, но на самом деле одно из них заключалось в том, что "listcolor" не был найден. Как только я это исправил, другие ошибки исчезли.
Возможно, будущая версия плагина для Eclipse позволит вам переименовать ресурсы в этих XML файлах и распространить их на все ссылки его.
strings.xml
и увидел, что мои изменения автоматически распространяются как минимум на один файл .java, ссылающийся на эти строки, но не на все. Произошла печально известная ошибка «R не может быть преобразована в переменную». Отрадно, что такая функция появляется в списке пожеланий инструментов Android ....
Я изменил имя файла XML-макета и позже узнал, что XML файл (поставщик виджета в этом случае) все еще ссылается на старый формат XML, который не существует, и это предотвращает автоматическое создание/коррекцию класса R.
Я нашел решение, почему 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.
Прежде всего, проверьте вывод консоли.
Затем проверьте, не являются ли ваши имена файлов макетов xml более строчными.
Исправить ошибки xml.
Проверить свойства проекта → Android для чего-то незнакомого
Если вы используете средство проверки ошибок Lint, он идентифицирует ложный импорт "R". Как только система XML зацепится за неправильный конец палки, все потеряно.
Вот то, что сработало для меня, что другие ответы не сделали:
Если все еще есть, Очистить снова!
Готово. Надеюсь, это поможет.
Вот еще один ответ, который я нашел после того, как ни один из предыдущих 30 ответов не помог.
Я нашел свою проблему в файле strings.xml, хотя это очень странно. Я отключил свое приложение до минимума, и это было единственное, что вышло на свет. Я даже могу воспроизвести его в совершенно новом пустом приложении.
В файле strings.xml этот компилятор (и генерирует файл R.java):
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Test_My_App</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
</resources>
Однако это не так:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello_world">Hello world</string>
<string name="app_name">My_App</string>
<string name="action_refresh">Refresh</string>
</resources>
"Смешные" тонны - это то, что я удалил action_settings несколько дней назад. Я очистил свой код с тех пор и не имел никаких проблем. Я добавил дополнительные строки в файл strings.xml сегодня, и после очистки кода колеса сошли. Кроме того, если я повторно упорядочиваю порядок с теми же тремя строковыми строками и очищаю свой код, файл R.java не будет повторно сгенерирован.
Там мое решение для моей конкретной проблемы.
Я надеюсь, что это поможет кому-то...
В моем случае я проверил все предыдущие решения, но не сгенерировал R. Я просто удалил свой файл main.xml из папки меню и снова восстановил его. Я не знаю почему, но теперь он работает для меня...
Кажется, что все ответы здесь повторяются, чтобы проверить ошибки в XML и очистить ваш проект. Сделай это! Но что, если это не сработает? Вот то, что сработало для меня:
Если вы создаете проект, который генерирует неправильный R, и вы его удаляете, он не будет регенерировать, поэтому удалите этот проект и создайте новый, убедитесь, что вы НЕ проверяете "автоматически строить", тогда вы можете скопировать свои папки в и ТОГДА вы очищаете проект или проверяете "строить автоматически", чтобы он правильно генерировал ваше R.
Есть и другая ситуация, которая произошла со мной. Это было, когда я добавил строку с апострофом в файл ресурсов strings.xml, например
<string name="Today">Returns Today’s date</string>
Это было исправлено путем изменения апострофа для другого типа апострофа, например ´
.
Что также вызывает это, если у вас есть scale9, который можно использовать с тем же именем, что и другой файл:
Просто удаление одного из файлов исправляет его.
Если все ответы не удались, вы можете запустить генерацию ресурсов из командной строки: Перейдите в каталог проекта Eclipse. Затем запустите
aapt.exe package -f -v -m -S res -J src -M AndroidManifest.xml -I ANDROID_HOME/platforms/android-XXX/android.jar
Просто измените ANDROIRD_HOME и XXX с соответствующими значениями. Вы должны получить информацию на экране, где ошибка.
Решите проблему, изменив файл project.properties: Я добавляю цель android-17.
Смотрите сообщение в блоге Совет разработчика для Android: регенерация R.java.
Вместо того, чтобы продолжать обнаружение всех мыслимых проблем проблемы, обнаруженных в дикой природе, я решил использовать проверенный подход, глядя на код. Сделав это некоторое время, я заметил несколько красных парней в папке res
. Они оставались моей текущей работой по редизайну, которую я собирался удалить, прежде чем все пошло наперекосяк. Разумеется, как только я нажму Del на них, автомобиль Darn R автоматически появится снова.
В одном предложении: Удалите все ненужные файлы из проекта и нежелательный код из файла манифеста.
В main.xml
были без ошибок, но три предупреждения, где я использовал жесткий текст для текстовых атрибутов button
.
Что-то вроде этого:
<Button
android:id="@+id/scan"
.....
android:text="Scan" />
После изменения атрибута text
на android:text="@string/scan_device"
была немедленно сгенерирована R.java.
Таким образом, это всегда происходит на моей машине /Eclipse всякий раз, когда есть какая-либо ошибка/предупреждение в одном из файлов XML.
IntelliJ IDEA не имеет этой проблемы для предупреждений, хотя.
Я не вижу его здесь, но я столкнулся с проблемой удаления моего R.java
и не был автоматически перестроен.
Это случилось со мной, когда я имел дело с операторами switch и строками. Eclipse предположил, что я меняю соответствие своих проектов на 1.7, которые быстро нарушили проект (R.java
), поскольку Android не может использовать это соответствие.
Консоль:
[2013-03-12 17:26:33 - CrimeAtlas] Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tools > Fix Project Properties.
Я исправил ошибку с помощью "Исправить свойства проекта", а затем просмотрел журнал, как предлагается. Я прокомментировал XML в упомянутых файлах, временно заменив их на LinearLayout
. Когда он исправлен, bam, он снова появляется (если включена функция "Build Automaticly" ). Затем я могу изменить файлы XML, если не было ничего плохого.
У меня была та же проблема.
После проверки предупреждений Lint я увидел предупреждение The resource R.string.app_name appears to be unused
..., поэтому я удалил R.string.app_name
.
Этот ресурс требуется в AndroidManifest.xml
, хотя Линт предупредил меня об неиспользуемом ресурсе. Я добавил "неиспользуемый ресурс" в манифест, и все вернулось к нормальному.
Я надеюсь, что это кому-то поможет.
Я забыл установить атрибут name в теге с объявлением-стиль
<declare-styleable>
<attr name="myView" format="reference"></attr>
</declare-styleable>
Я зафиксировал его с помощью
<declare-styleable name="Theme">
<attr name="myView" format="reference"></attr>
</declare-styleable>
У меня не было ошибок
У меня была проблема с моим файлом AndroidManifest.xml, и R.java не был сгенерирован.
Я думаю, что решение - проверить ВСЕ ваши XML файлы везде!
Попробуйте проверить файл project.properties
. Возможно, ваш файл JAR для Android в пути сборки не соответствует версии, упомянутой там.
Он решил мою проблему, поскольку я изменил свою цель.
Вы можете попробовать еще одну вещь.
Перейдите к C:\Program Files (x86)\Android\android-sdk\tools>
, запустите adb kill-server
, а затем adb start-server
. Это сработало для меня, и я не знаю причины: -).
Почти наверняка что-то не так с содержимым, которое будет вставлено в genfile. Eclipse недостаточно умен, чтобы показать, какие проблемы есть или даже указать, что есть проблемы!
Подумайте о последнем редактировании, сделанное вами в любом из содержимого XML или изображения, и попробуйте "отменить" ваши изменения вручную при необходимости.
Я считаю, что иногда Eclipse не любит имена файлов по какой-либо причине, и я должен их изменить.
Итак, добавьте ресурсы один за другим, уверяя, что все это "работает". Когда что-то ломается, попробуйте немного изменить его, пока Eclipse не примет его.
Вы знаете, что он работает, когда появляется genfile - он будет делать это автоматически, если проблем нет.
У меня была такая же проблема. Оказывается, причина в том, что у некоторых моих ресурсов были заглавные буквы в именах файлов. Я знаю, что это звучит тривиально, но просто меняя их на все мелкие буквы, он исправил его и снова загрузил мой файл R.java.
Надеюсь, что это поможет.
Я впервые столкнулся с этой проблемой сегодня днем. Даже когда я создаю новый проект, R.java не генерируется. Я сменил рабочее место, и все работает снова.
Если у кого-то из них есть проблемы, Eclipse может не создать класс R... Устраните проблемы, очистите и перестройте.
Если ваш файл AndroidManifest.xml
ссылается на строковые константы, которые вы сохранили в strings.xml
, и вы переименовываете эти строки в strings.xml
, вам нужно будет изменить их в манифесте, чтобы сделать все кошерным для сборки.
То же самое можно было бы использовать для любых файлов формата .xml, которые ссылаются на те константы, которые вы изменили. К сожалению, ни представление маркеров, ни представление "Проблемы" в Eclipse не сообщают вам, куда вам нужно пойти, чтобы исправить проблемы - просто они не могут найти R.java
. Как упоминалось в других ответах, просмотрите Консоль, чтобы узнать, где вам нужно исправить ваши постоянные ссылки, а затем снова очистить проект.
Эта проблема также произошла со мной, когда я пытался создать Support4Demos из исходного кода SDK.
После исправления некоторых проблем в файлах ресурсов (например, "fill_parent" переименован в "match_parent" ), я обнаружил, что проблема была в файле манифеста: я не проверял проб и ошибок "Определить приложение < > tag в AndroidManifest.xml", сохранили изменения, и R.java волшебным образом снова появился. Затем я снова проверил поле, сохранил файл, и R.java снова был восстановлен.
Наверное, я наткнулся на недостаток Eclipse.
В основном файл R.java относится к файлу .xml и Java. Мы знаем теги XML, но как насчет Java, поэтому для этого нам нужно иметь уникальный идентификатор для идентификации тега.
Здесь файл R.java в основном связан с XML файлом с Java для получения значений.
В моем случае, после бесконечного закрытия среды IDE, очистки, попытки создания и т.д. проблема была "папкой без названия" внутри моей "res" папки, которую я, вероятно, добавил туда по ошибке.
Я бы хотел, чтобы такие ошибки выводились Eclipse, как Ant script сделал:
[null] invalid resource directory name: /Users/gubatron/workspace.android/my-project/res/untitled folder
Не удаляйте эти две строки из strings.xml
:
android:icon="@drawable/icon" android:label="@string/app_name"
android:name=".HelloAutoComplete"
android:label="@string/app_name"
AndroidManifest.xml
. Здесь не так много контекста ... но в любой ситуации, если вы ссылаетесь на ресурс в своем манифесте или XML-файле макета и переименовываете, перемещаете или удаляете этот ресурс, вам нужно исправить соответствующую ссылку в файл манифеста или макета .xml. В противном случае у вас будут проблемы с генерацией R.java
.