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

<p>недавно у меня были некоторые проблемы с файлом r.java. теперь я решил сделать резервную копию и удалить файл, чтобы посмотреть, что произойдет.</p><p>ничего не произошло, поэтому я создал пустой файл r.java и надеялся на лучшее. теперь eclipse, кажется, выясняет, что файл был подделан и даже выдает предупреждение:</p><pre><code>r.java was modified manually! reverting to generated version! </code></pre><p>и это все, что есть. я пытался создать его вручную, но не получил результатов. </p><p>итак, у меня есть два вопроса:</p><ol> <li>что я должен сделать, чтобы заставить eclipse восстановить файл</li> <li>что здесь происходит? как создается файл, где находится код, который генерирует файл?</li> </ol><p>буду признателен за любую помощь. как обычно, проблема произошла всего за несколько дней до истечения срока :)</p>

<p>я обнаружил проблему - я создал 9patch изображение с областью патча, определенной только по оси y (я пытался предотвратить изменение размера на другой).</p><p>остается вопрос: почему нет предупреждения об ошибке? или, если есть - где он похоронен?</p>

<p>у меня возникла проблема с компиляцией моего приложения для android с необъяснимыми на первый взгляд ошибками, связанными с невозможностью сгенерировать r.java. </p><p>проблема была вызвана тем, что я ранее убил эмулятор android во время сборки. не делай этого! подсказка - появление нескольких файлов * .out.xml.</p><p>решением было выбрать проект, нажать project-> clean, а затем<strong> вручную удалить все файлы * .out.xml </strong>. только тогда я могу нажать run-> run и получить успешную сборку.</p><p>еще одна вещь: я использую eclipse. я должен был убедиться, что проект был выбран в package explorer, а<strong> нет </strong>просто какой-то случайный исходный файл. легко не заметить!</p>

<p>r.java автоматически генерируется при сборке. его содержимое основано на файлах ресурсов (включая макеты и настройки). </p><p>когда вы удалили его, он был воссоздан, но если вы создадите свой собственный, у вас возникнут проблемы, так как система сборки не заменит его.</p><p>вы можете просто удалить его снова (вручную или выбрав проект-> очистить) и перестроить вашу программу.</p>

<p>у меня была эта проблема несколько раз, и в большинстве случаев она вызвана некоторой ошибкой в файлах "res", проверьте, все ли в порядке с вашими файлами res, в основном xml, и после того, как вы сможете собрать.</p><p>например, две распространенные причины этой проблемы:</p><ul> <li><p>неправильно написано имя свойства в стиле в файле xml.</p></li> <li><p>не удалось правильно закрыть строку в xml-файле локали.</p></li> </ul>

<p>у меня была та же проблема, и я назвал файл ресурсов (изображение .png) заглавными буквами. (imagebutton001.png вместо imagebutton001.png).</p><p>после смены имени файла мой r.java вернулся.</p><p>rgards, juan</p>

<p><strong> если недостаточно свободной памяти, инструмент сборки будет молча отказывать </strong>(eclipse не будет показывать никаких ошибок или сообщать что-либо в журнале ошибок). закройте другие открытые приложения (например, эмулятор и браузер), затем добавьте пробел в файл манифеста приложения и сохраните его. </p>

<p>извините, но попробуйте проверить вывод в eclipse. может быть, у вас есть некоторые ошибки, которые мешают eclipse завершить процесс сборки (проверьте ваш androidmanifest.xml, это правильно?). я имею в виду, что вы должны проверить все свои файлы ресурсов (string.xml, layout, ...) и интерфейсы (* .aidl), возможно, есть некоторые проблемы (несовместимый синтаксис или что-то ....), которые мешают eclipse генерировать r.java.</p>

<p>у меня была эта проблема, чтобы восстановить <code>r.java</code> я вырезал код в xml-файле, над которым я только что работал (или попробуйте другие, если это не работает), удалив файл, затем создав другой файл с тем же именем и вставив код обратно в него. надеюсь это поможет.</p>

<p>у меня была похожая проблема, я переименовал файл .wav в папку raw с большой буквы. когда я перешел на все строчные буквы, очистил проект и он перестроил <code>r.java</code> нормально.</p>

<p>как сказал понкин, у вас, вероятно, есть одна единственная проблема, которая заставляет r не генерировать себя заново, из-за чего у вас сейчас есть миллион и одна проблема.</p><p>не пытайтесь создать класс r самостоятельно. попробуйте подумать о последнем xml, с которым вы связались, и проверьте его на наличие ошибок.</p><p>у меня была такая же проблема <a href="https://stackoverflow.com/questions/2041083/how-to-regenerate-r-class">здесь</a> </p>

<p>как говорили другие, держитесь подальше от создания своего собственного файла <code>r.java</code>. я столкнулся с той же проблемой, когда впервые начал работать с android, и потребовалось некоторое время, чтобы выяснить, что вызвано ошибками компиляции.</p><p>что вы пытались сделать с файлом <code>r.java</code>?</p>

<p>я обнаружил, что нежелательный ресурс вызывает проблему. как только я удалил ресурс, был создан r.java.</p>

<p>что-то, что может быть полезно знать, это то, что если xml-файл содержит?, то <code>r.java</code> не регенерируется и ошибка не отображается в xml-файле (иногда это появляется через некоторое время) у вас есть строка, аналогичная чтобы:<br></p><p><code>< string name="questionmark"\>?< /string> <br></code> </p><p>попытаться изменить? что-то еще и посмотреть, что происходит с файлом <code>r.java</code> - у меня сработало</p>

<p>у меня такая же проблема. я просто пошел в: </p><pre><code>project -> properties -> android </code></pre><p>и выбрал правильный эмулятор для моего проекта, у меня было 3 разных на выбор в тот момент. я понял, что изменил эмулятор в данный момент. так что попробуйте изменить эмулятор, это может помочь!</p><p>удачи</p>

<p>убедитесь, что нет ошибок, это ваш файл манифеста . если вы удалите строку ресурса app\_name в /res/values/strings.xml, он не знает, как сгенерировать права r.java . я нашел это проблема при обучении hellospinner.</p>

<p>у меня была такая же проблема с intellij. проблема заключалась в том, что в <code>strings.xml</code> дважды было определено имя app\_name. по какой-то причине инспекции idea не обнаружили это автоматически.</p>

<p>у меня была похожая проблема. проект очистки не решил проблему, и в коде не было ни ошибки, ни заглавных букв, ни пробелов в именах файлов.</p><p>решением было появление всплывающего окна, которое появилось, когда вы выбрали project -> clean, а затем сняли флажок «начать сборку немедленно». очистить проект. закройте и снова откройте eclipse, а затем соберите проект (project -> build).</p><p>остается вопрос, почему простая очистка и сборка без закрытия eclipse не сработали. </p>

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

<p>я прочитал это на другом сайте, и это помогло мне:</p><p>«если это не решит вашу проблему, попробуйте изменить свой <code>androidmanifest.xml</code> (просто добавьте пробел и сохраните). я слышал, что это заставит <code>r.java</code> перестроиться».</p><p>так что просто добавьте пробел в файл манифеста, а затем перестройте!</p>