Волшебство позади файла R.java - PullRequest
18 голосов
/ 12 января 2010

Недавно у меня были некоторые проблемы с файлом R.java. Теперь я решил сделать резервную копию и удалить файл, чтобы посмотреть, что произойдет.

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

R.java was modified manually! Reverting to generated version!

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

Итак, у меня два вопроса:

  1. что я должен сделать, чтобы Eclipse восстановил файл
  2. что здесь происходит? Как создается файл, где находится код, который генерирует файл?

Буду признателен за любую помощь. Как обычно, проблема возникла всего за несколько дней до истечения срока:)

Ответы [ 19 ]

15 голосов
/ 01 августа 2010

У меня возникла проблема при компиляции моего приложения для Android с необъяснимыми на первый взгляд ошибками, связанными с невозможностью генерировать R.java.

Проблема была вызвана тем, что я ранее убил эмулятор Android во время сборки. Не делай этого! Подсказка - появление нескольких оставшихся файлов * .out.xml.

Решением было выбрать проект, нажать Project-> Clean, а затем вручную удалить все файлы * .out.xml . Только тогда я могу нажать Run-> Run и получить успешную сборку.

Еще одна вещь: я использую Eclipse. Я должен был убедиться, что проект был выбран в Package Explorer, а не , просто какой-то случайный исходный файл. Легко не заметить!

7 голосов
/ 12 января 2010

R.java автоматически генерируется при сборке. Его содержимое основано на файлах ресурсов (включая макеты и настройки).

Когда вы удалили его, он был воссоздан, но если вы создадите свой собственный, у вас возникнут проблемы, поскольку система сборки не заменит его.

Вы можете просто удалить его снова (вручную или выбрав «Проект» -> «Очистить») и перестроить вашу программу.

4 голосов
/ 22 сентября 2011

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

Например, две распространенные причины этой проблемы:

  • Не правильно написано имя свойства в стиле в файле XML.

  • Не удалось правильно закрыть строку в XML файла локали.

3 голосов
/ 12 января 2010

Я обнаружил проблему - я создал 9-патч-изображение с областью патча, определенной только на оси Y (я пытался предотвратить изменение размера на другой).

Остается вопрос: почему нет предупреждения об ошибке? Или, если есть - где он похоронен?

2 голосов
/ 12 января 2010

Извините, но попробуйте проверить вывод в Eclipse. Может быть, у вас есть некоторые ошибки, которые мешают Eclipse завершить процесс сборки (проверьте ваш AndroidManifest.xml, это правильно?). Я имею в виду, что вы должны проверить все свои файлы ресурсов (string.xml, layout, ...) и интерфейсы (* .aidl), возможно, есть некоторые проблемы (несовместимый синтаксис или что-то в этом роде ...), которые не позволяют затмению генерировать R.java.

2 голосов
/ 22 октября 2011

У меня была та же проблема, и я назвал файл ресурсов (изображение .png), используя заглавные буквы. (ImageButton001.png вместо imagebutton001.png).

После изменения имени файла мой R.java вернулся.

Rgards, Juan

2 голосов
/ 28 сентября 2012

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

1 голос
/ 24 октября 2012

У меня была такая же проблема. Я просто пошел на:

Project -> Properties -> Android 

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

Удачи

1 голос
/ 03 июля 2012

У меня была эта проблема, чтобы перестроить R.java Я вырезал код в XML-файле, над которым я только что работал (или попробуйте другие, если это не работает), удалив файл, затем создав другой с то же имя и вставив код обратно в него. Надеюсь, это поможет.

1 голос
/ 12 декабря 2011

У меня была похожая проблема, я переименовал WAV-файл в папке Raw с большой буквы. Когда я перешел на все строчные буквы, очистил проект и он перестроил R.java отлично.

...