Разработка для Android в Eclipse: R.java не регенерирует

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

Я использую Windows 7.

из одного из комментариев: "Doing проект ->очистить это то, что вызвало проблему для меня. Чистка удаляет R.java...и по какой причине плагин не восстанавливает файл."

30 ответов


этот сайт предлагает:

Если вы запустите clean в проекте, он должен регенерировать все сгенерированные файлы Java, а именно R.

...и...

в Eclipse, в меню проекта, есть опция build автоматически. Это поможет вам построить R.java файл каждый раз изменения сделанный. чистка... вариант также существует в рамках проекта.

этот сайт предполагает другое решение.


я обнаружил, что это происходит со мной со сломанным макетом, и все взрывается. Расслабьтесь, это похоже на ту старую ошибку, когда вы впервые изучили Программирование C, где вы забываете одну точку с запятой, и она генерирует сто ошибок. Многие паникуют, нажимают все кнопки, и становится только хуже.

решение

  • убедитесь, что что-нибудь R. ссылки на не нарушается. исправить все ошибки в XML-файлы. Если что-нибудь в ADKs сломано, R не будет регенерировать.
  • если вы как-то попали в что-то и создали import android.R в вашей деятельности, удалить.
  • выполнить -19-->Очистить. Это приведет к удалению и регенерации R и BuildConfig.
  • убедится Project - > Build Автоматически галочкой. Если нет, создайте его вручную через Menu -> Project -> Build Project .
  • ждать несколько секунд, чтобы ошибки исчезли.
  • если это не работает, удалите все внутри папки/ gen/
  • если он все еще не работает, попробуйте щелкните правой кнопкой мыши свой проект - > инструменты Android - > исправить свойства проекта.
  • Проверьте *.свойства файлы (в корневой папке вашего приложения) и убедиться, что ссылки там не сломаны.
  • щелкните правой кнопкой мыши проект > свойства > Android. Посмотрите на целевые и библиотечные разделы проекта Build справа страницы. Ваша цель сборки должна соответствовать цели в вашем AndroidManifest.XML. Поэтому, если он установлен на цель 17 в AndroidManifest, убедитесь, что целевое имя-Android 4.2. Если ваша библиотека имеет X под ссылкой, удалите и повторно добавьте библиотеку, пока не появится зеленая галочка. Это может произойти, если вы переместили несколько файлов и папок вокруг.

Что делать, если R не регенерирует

это обычно происходит, когда у вас есть сломанный XML файл.

  • Проверьте ошибки внутри ваших XML-файлов, в основном в /res/ папку
  • общие места /layout/ и /values/, особенно если вы недавно изменили один из них
  • Регистрация AndroidManifest.xml. Я обнаружил, что часто меняю строку и забываю изменить имя строки из AndroidManifest.xml.
  • проверяем, что это. окно - > Android SDK Manager - > инструменты - > Android SDK Build-tools
  • сделать конечно, когда вы обновляете Android SDK Tools, вы также обновите Android SDK Platform-tools и Android ADK Build-tools. Сборка завершается беззвучно, если они не совпадают.
  • если вы не можете найти проблему, щелкните правой кнопкой мыши / gen / - > Восстановить из локальной истории... - >ТИК R.java - > нажмите кнопку Восстановить. Даже если это не решит проблему, это очистит дополнительные ошибки, чтобы сделать проблему проще найти.

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


одна из причин R.class может пропасть без вести внезапно, когда в вас есть ошибки XML-файлов. Например, при добавлении XML-файла с прописными буквами в имени, например myCoolLayout.xml, который не разрешен. Или когда у вас есть ссылки, которые не указывают на существующие файлы, и т. д.


в Eclipse просто используйте Project -- > clean для очистки проекта. Этот R.java будет автоматически (повторно) создан.

если по какой-то причине это не работает: убедится ваш макет.XML-файлы не содержат ошибок. Eclipse здесь немного глючит: иногда он не отмечает ошибки в XML или проводнике пакетов. В таком случае: взгляните на представление" консоль "или" проблемы "после использования"очистить". Все там должны отображаться ошибки. Исправьте их и повторите чистку.

Примечание: нет необходимости исправлять ошибки, которые вы получаете из-за отсутствующего файла R! просто исправьте XML-файлы и другие ошибки проекта и используйте clean!


быстро исправить:

имя пакета в манифесте должно совпадать с именем пакета в на /gen пакет папки будет автоматически воспроизведен.

детального наблюдения:

соблюдайте название пакета в /gen папка. В моем случае он отличался от того, что был в .

пакет, указанный в манифесте, был пакетом /gen папка.

я попытался добавить пакет с именем до /gen папка тоже посмотреть, что бы произошло, но это не решило проблему. Затем я приступил к удалению имени пакета, которое не совпадало с именем пакета . Этот пакет с именем, которое не соответствует /src папка была воссоздана, как только я ее удалил.

так как ссылка на пакет в манифесте соответствовала той, которая была бессмысленно воссоздана, и которая не соответствует пакету в /src папка, это вызвало переименование package = "oldPackage" С package = "srcFolderPackage".


У меня была такая же проблема, и я, наконец, нашел проблему: в строках.xml, я не сохранил строку <string name="app_name">program-name</string>, который присутствует по умолчанию при создании нового проекта Android. Я думал, что он используется только для программы HelloWord, которая является оригинальной программой.

однако AndroidManifest.xml ссылается на это значение, следовательно:

=> ошибка компиляции;
=> the R.java не обновляется;
= > ID не распознаются...


Android добавил в SDK build tool ADT 22 для механизма построения. Вам просто нужно сделать следующие шаги.

  1. обновление Android SDK Tool
  2. обновление Android SDK Platform Tool
  3. обновление Android SDK Build Tool
  4. добавьте путь инструмента сборки в переменную path. (путь до - - - - ваш каталог-путь\android-sdk\build-tools)

Это решит проблему.


Если ваш R.java не генерируется, одним из решений является удаление файла макета с именем "blabla.из.XML."

после удаления этого файла попробуйте очистить проект из меню проект ->очистить.


как обобщение ответа Глаукса, если у вас есть любой ошибки res каталог, затем R.java может не генерировать-даже если вы очистите и перестроите. Сначала устраните эти ошибки.

в качестве примера: когда вы добавляете файл изображения, скажем, " myimage-2.jpg", система будет считать это ошибкой, так как имена файлов ограничены буквенно-цифровыми значениями. Обновите каталог " res " после добавления любых файлов и просмотрите вывод в окне консоли для любого файл предупреждений имя.


Если ваша ОС Ubuntu, я могу дать некоторые рекомендации:

  1. установить или обновить ia32-lib:

    sudo apt-get upgrade ia32-libs
    
  2. проверьте, есть ли у вас правильное разрешение на папку aapt:

    cd ANDROID/adt-bundle-linux-x86_64-20130522/sdk/build-tools/android-4.2.2
    chmod 777 aapt
    
  3. Запустите Eclipse:

    sudo eclipse
    
  4. запустить проект - > очистить в Eclipse


у вас 100% есть ошибка в XML-файле, но проверка XML не показывает вам ошибку. Именно по этой причине вам нужно сначала проверить свои XML-файлы!


всегда полезно взглянуть на проблемы вкладка в Eclipse. В моем случае я получал "android не удалось решить цель "android-8" " сообщение об ошибке, которое сохранило R.java от порождения. Итак, я исправил импортированный цель к тому, который я использовал в по умолчанию.свойства файл, Затем я выполнил очистку через проекты - > очистить и вуаля! R.java автоматически генерируется! Надеюсь, это поможет!


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


убедитесь, что вы не импортируете

android.R;


R.java никогда не будет генерироваться, если есть какие-либо ошибки в . Например, в вложенной папке drawable есть два файла с одинаковым именем, один-icon.png, а другой-значок.формат html.

вы можете увидеть некоторую ошибку в окне журнала консоли Eclipse, в котором говорится: "значок ввода ресурсов уже определен.". После удаления значка.html, вы можете очистить или просто удалить gen папка. Вы найдете, что R.java создается.


Я нашел это любой и буквы на res папка создаст эту ошибку. Это случилось со мной с PNG файл, который я добавил и забыл.


после прочтения многих сообщений и видеороликов YouTube я обнаружил, что у каждого из нас есть R.java отсутствует по разным причинам.

вот как я исправил это в Eclipse:

  • создать R.java в gen папку вручную и сохранить.
  • после этого перейдите в проект и нажмите "Очистить"

отобразится следующее сообщение, и ваш файл будет автоматически переписан:

R.java был изменен вручную! Возврат к сгенерированной версии!


для меня я связал V7 appcompat дважды. Во всяком случае, в Eclipse щелкните правой кнопкой мыши имя проекта в Проводнике пакетов или навигаторе, перейдите в свойства, Android и снимите все дубликаты в разделе Библиотека. Возможно, Вам понадобится построить --> очистить после этого.


на это, очевидно, нет окончательного ответа, но вот еще один, которого я здесь уже не вижу:

Я R.java исчезают после (попытки) синхронизации команды, и в проекте были файлы разрешения конфликтов (т. е. thingy.xml.mine,thingy.xml.r35, etc.). Удаление их / разрешение конфликтов регенерировано R.


У меня была эта проблема. Случайно я удалил это

xmlns:tools="http://schemas.android.com/tools"

который начал вызывать ошибки сборки по всему проекту в моих XML-файлах, а также в моих Java-файлах. Как только я перепечатал то, что удалил, это сработало снова:)


OK, поэтому ясно, что для этой проблемы может быть много причин. Если вы находитесь на 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 не найден


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

Если это не было импортировано, то ресурсы, которые были возвращены, были ресурсами по умолчанию без моего собственного включения.

с этим сказано, Если вы обнаружите, что вы только получение списка ресурсов по умолчанию, а затем просто убедитесь, что вы импортируете application_package_name.R, а не android.Р.


моя проблема была в том, что appcompat не был в том же каталоге, что и мой проект.

Я обнаружил это при компиляции моего приложения с АНТ.


также убедитесь, что у вас есть последняя версия плагина ADT, и откройте Android SDK manager, чтобы обновить все инструменты SDK до последней версии. Проверьте наличие обновлений и в самом Eclipse. Несоответствие версий вызвало проблему для меня.


моя проблема была в меню Файл. Компилятор не предупредит вас, если строки, которые не существуют внутри strings.xml ссылки в файлах меню. Проверьте, если ваш items в вашем меню XML-файлы ссылаются на любые строки, которые не существуют в вашем strings.xml. Обычно в android:title.


для меня, эта ошибка была вызвана, когда я пытался дублировать существующий res/menu вместо создания с wizard.


все эти ответы не могут работать, если вы используете Maven. Решением для меня было добавить

<genDirectory>${project.basedir}/gen</genDirectory>

в раздел конфигурации Android-maven-plugin.


Я нашел решение, почему R.class не производится Eclipse после его повторного создания - 2 clean, build и т. д.

проблема здесь в строках.XML-код:

<string name="hello">Hello World, HelloAutoComplete!</string>

<string name="app_name">HelloAutoComplete</string>

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

определенно вы меняете строки.xml для вашего собственного требования. Иногда вы очищаете строку.xmls эти две строки из вашего кода:

это делает проблему в AndroidManifest.XML файл:

<application android:icon="@drawable/icon"  android:label="@string/app_name">
<activity android:name=".HelloAutoComplete" android:label="@string/app_name">

поэтому он не может общаться со строками.XML.


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