Разработка для 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 для механизма построения. Вам просто нужно сделать следующие шаги.
- обновление Android SDK Tool
- обновление Android SDK Platform Tool
- обновление Android SDK Build Tool
- добавьте путь инструмента сборки в переменную path. (путь до - - - - ваш каталог-путь\android-sdk\build-tools)
Это решит проблему.
Если ваш R.java не генерируется, одним из решений является удаление файла макета с именем "blabla.из.XML."
после удаления этого файла попробуйте очистить проект из меню проект ->очистить.
как обобщение ответа Глаукса, если у вас есть любой ошибки res
каталог, затем R.java может не генерировать-даже если вы очистите и перестроите. Сначала устраните эти ошибки.
в качестве примера: когда вы добавляете файл изображения, скажем, " myimage-2.jpg", система будет считать это ошибкой, так как имена файлов ограничены буквенно-цифровыми значениями. Обновите каталог " res " после добавления любых файлов и просмотрите вывод в окне консоли для любого файл предупреждений имя.
Если ваша ОС Ubuntu, я могу дать некоторые рекомендации:
-
установить или обновить ia32-lib:
sudo apt-get upgrade ia32-libs
-
проверьте, есть ли у вас правильное разрешение на папку aapt:
cd ANDROID/adt-bundle-linux-x86_64-20130522/sdk/build-tools/android-4.2.2 chmod 777 aapt
-
Запустите Eclipse:
sudo eclipse
запустить проект - > очистить в Eclipse
у вас 100% есть ошибка в XML-файле, но проверка XML не показывает вам ошибку. Именно по этой причине вам нужно сначала проверить свои XML-файлы!
всегда полезно взглянуть на проблемы вкладка в Eclipse. В моем случае я получал "android не удалось решить цель "android-8" " сообщение об ошибке, которое сохранило R.java от порождения. Итак, я исправил импортированный цель к тому, который я использовал в по умолчанию.свойства файл, Затем я выполнил очистку через проекты - > очистить и вуаля! R.java автоматически генерируется! Надеюсь, это поможет!
очистка проекта, закрытие Eclipse, его повторное открытие и запуск моего проекта, наконец, сделали мой R.java чтобы снова появиться... Надеюсь, это поможет
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
ссылки в файлах меню. Проверьте, если ваш item
s в вашем меню 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.