it-swarm.com.ru

Волшебство позади файла R.Java

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

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

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

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

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

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

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

18
LambergaR

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

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

3
LambergaR

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

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

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

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

15
Stan Mohler Jr.

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

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

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

7
Tomas

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

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

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

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

4
Antonio

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

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

Rgards, Juan

2
Juan

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

2
Lawrence

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

2
ponkin

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

1
Jamesad

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

1
nwestwood

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

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

У меня была такая же проблема здесь

1
zorglub76

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

Что вы пытались сделать с файлом R.Java?

1
duanemat

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

1
FHan

Что-то, что может быть полезно знать, это то, что если XML-файл содержит?, То R.Java не регенерируется и ошибка не отображается в XML-файле (иногда это появляется через некоторое время) У вас есть строка, аналогичная чтобы:

< string name="questionmark"\>?< /string> <br> 

попытаться изменить? что-то еще и посмотреть, что происходит с файлом R.Java - у меня сработало

1
Jacob

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

Project -> Properties -> Android 

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

Удачи

1
Oliver

Убедитесь, что нет ошибок, это ваш файл манифеста . Если вы удалите строку ресурса app_name в /res/values/strings.xml, он не знает, как сгенерировать права R.Java . Я нашел это проблема при обучении HelloSpinner.

1
Sven

У меня была такая же проблема с IntelliJ. Проблема заключалась в том, что в strings.xml дважды было определено имя app_name. По какой-то причине инспекции IDEA не обнаружили это автоматически.

0
Matt Hansen

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

Решением было появление всплывающего окна, которое появилось, когда вы выбрали PROJECT -> CLEAN, а затем сняли флажок «Начать сборку немедленно». Очистить проект. Закройте и снова откройте Eclipse, а затем соберите проект (PROJECT -> BUILD).

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

0
Pavi3l

Как примечание, обычно эти * .out.xml файлы создаются при попытке построить ваш проект, в то время как XML-файл находится в редакторе.

0
LairdPleng

Я прочитал это на другом сайте, и это помогло мне:

«Если это не решит вашу проблему, попробуйте изменить свой AndroidManifest.xml (просто добавьте пробел и сохраните). Я слышал, что это заставит R.Java перестроиться».

Так что просто добавьте пробел в файл манифеста, а затем перестройте!

0
Jonas