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

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

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

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

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

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

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

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

18
задан Yojimbo 18 November 2016 в 05:51
поделиться

8 ответов

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

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

3
ответ дан 21 October 2019 в 05:29
поделиться

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

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

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

7
ответ дан 21 October 2019 в 05:29
поделиться

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

2
ответ дан 21 October 2019 в 05:29
поделиться

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

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

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

1
ответ дан 21 October 2019 в 05:29
поделиться

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

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

1
ответ дан 21 October 2019 в 05:29
поделиться

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

1
ответ дан 21 October 2019 в 05:29
поделиться

Полезно знать, что если XML файл содержит ?, то R.java не регенерируется и ошибка не отображается в XML файле (иногда она появляется через некоторое время). У вас есть строка, похожая на:

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

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

1
ответ дан 21 October 2019 в 05:29
поделиться

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

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

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

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

15
ответ дан 21 October 2019 в 05:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: