R не может быть разрешен - ошибка Android

Я только что загрузил и установил новый Android SDK. Я хотел создать простое приложение для тестирования диска.

Мастер создал этот код:

package eu.mauriziopz.gps;

import android.app.Activity;
import android.os.Bundle;

public class ggps extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

но Eclipse дает мне ошибку

R не может быть разрешено

в строке

setContentView(R.layout.main);

Почему?

PS: У меня есть XML файл с именем main.xml под res/layout/.

Ответы

Ответ 1

Что будет сказано правильно

R - автоматически созданный класс, который содержит константы, используемые для идентификации ваших ресурсов. Если у вас нет файла R.java(это будет gen/eu.mauriziopz.gps/R.java в > Eclipse с 1.5 SDK), я бы рекомендовал закрыть и снова открыть ваш проект или перейти > Project > Build all (и выберите "Build Automatically", а там, как рекомендовано > Josef). Если это не сработает, попробуйте создать новый проект, если проблема воссоздана, чем > пост здесь, и мы поговорим подробнее.

но я обнаружил, что была другая проблема, которая вызывала первую. У инструментов в каталоге SDK не было разрешений для выполнения, поэтому это было похоже на то, что не существовало для Eclipse, поэтому он не создавал файл R.java.

Таким образом, изменение разрешения и выбор "Build Automatically" решили проблему.

Ответ 2

После отслеживания этой проблемы я нашел эту заметку в документации на Android:

http://source.android.com/source/using-eclipse.html

* Примечание. Eclipse иногда любит добавлять инструкцию import android.R на верхней части ваших файлов, которые используют ресурсы, особенно когда вы спрашиваете Eclipse сортировать или иным образом управлять импортом. Эта приведет к тому, что ваш make сломается. Посмотрите за этот ошибочный импорт и удалять их. *

Просматривая учебные пособия для Android, я часто использовал команду Ctrl + Shift + O для "Organize Imports" и генерировал любые отсутствующие операторы импорта. Иногда это создавало бы неправильный оператор import, который скрывал бы класс R.java, который автоматически генерируется при создании.

Ответ 3

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

Ответ 4

Всякий раз, когда вы получаете

R не может быть разрешено

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

Если у вас есть дополнительные, даже неиспользуемые (!) или неопубликованные (!) изображения в папке res/drawables-mdpi, которые не соответствуют соглашениям об именах файлов (могут содержать только [a-z0-9_.]), класс R.java не может генерировать, вызывая цепочку событий, на которые ссылаются другие сообщения. Надеюсь, это поможет!

Ответ 5

В моем проекте есть r.java.at в начале, R.layout.main работает хорошо. Но после добавления некоторого кода он не работает, а ошибка R.layout.main не может быть решена. в чем проблема?

Посмотрите на свой импорт. Скорее всего, строка:

import android.R;

будет там. Если это произойдет, удалите его, чтобы ваш проект разрешил R не с классом ресурсов Android по умолчанию, а с одним автогенератором из папки/res/.

Ответ 6

И еще одна вещь, которая может вызвать эту проблему:

Я установил новый ADT (v. 22). Он прекратил создание папки gen, которая включает R.java. Решение заключалось также в установке новых Android SDK Build Tools из Android SDK Manager.

Решение найдено здесь

Ответ 7

R.java - это файл, который создаются плагинами Android Eclipse создавая ваше приложение. R.java создается под именем "gen" каталог. Этот файл генерируется из информации в "res" каталог. Если вы запустили выделение "Проект" → "Очистить..." на Eclipse меню, он удалит и затем восстановит файл R.java.

Проблема "R не может быть решена" происходит, когда вы меняете свой имя пакета в файле AndroidManifest.xml. Он использует ваш Android имя пакета для создания подкаталога в каталоге "gen", где он сохраняет файл R.java.

У Eclipse могут быть проблемы с выполнением чистых, потому что это путает где файл R.java - это когда вы изменили пакет Android имя. Вы можете либо переименовать подкаталог под gen, чтобы он соответствовал вашему новое имя пакета или вы можете изменить название своего пакета обратно на старый имя. Очистите, а затем измените имя пакета на новое имя вы хотите. Это лучше всего работает, если вы прекратите попытки Eclipse пытаться построить в то время как вы меняете имя пакета. В меню "Проект" снимите флажок "Автоматически создавать", а также Диалоговое окно "Чистота..." спрашивает, должно ли оно "немедленно начать сборку", снимите флажок, чтобы он не пытался строить, пока вы меняете имя пакета. После того, как вы изменили имя, вы можете включить "Build Автоматически "снова включить.

Обратите внимание, что если ваше имя пакета AndroidManifest.xml не совпадает ваше имя пакета Java, Eclipse автоматически добавит "import < название вашего Android-пакетa > .R;" во всех ваших файлах .java которые имеют любые ссылки на R. Если вы измените свой AndroidManifest.xml имя пакета, иногда Eclipse не обновляет все эти добавленные импорт. Если это произойдет, используйте рефакторинг Eclipse (ALT + Shift + R), чтобы изменить оператор импорта в одном из ваших файлов Java на ваше новое имя пакета AndroidManifest.xml. Лучше всего это сделать в то время как вы отключили "Build Automatically".

Ответ 8

R - автоматически сгенерированный класс, который содержит константы, используемые для идентификации ваших ресурсов. Если у вас нет файла R.java(это будет gen/eu.mauriziopz.gps/R.java в Eclipse с 1.5 SDK), я бы рекомендовал закрыть и снова открыть проект или перейти в Project > Build all (и выбрав "Build Automatically", в то время как там, как рекомендовано Josef). Если это не сработает, чем попытаться создать новый проект, если проблема воссоздана, чем сообщение здесь, и мы поговорим подробнее.

Ответ 9

Закройте все файлы, очистите проект, перезапустите Eclipse.

Ответ 10

Эта ошибка также может быть вызвана добавлением активности в пространство имен, которое отличается от корневого пространства имен для вашего пакета.

Например, если com.example.myapp является корневым пространством имен для вашего пакета, вы можете добавить активность в пространство имен com.example.myapp.activities.

Это приведет к ошибке "R не может быть разрешена".

Чтобы исправить импорт, R в пространстве имен по умолчанию в вашей деятельности должно быть:

import com.example.myapp.R;

Ответ 11

Наряду с замечательными предложениями в предыдущих ответах убедитесь, что установлена ​​целевая группа Android:

  • Щелкните правой кнопкой мыши на своем проекте
  • Выберите "Свойства"
  • Выберите Android в меню слева.
  • Отметьте поле рядом с соответствующей целью сборки проекта.
  • Нажмите "Применить" и "ОК"

Изменить: через год я нашел другую причину. У меня было изображение .jpg в моей папке с тем же именем, что и изображение .png. Ссылка на это изображение в моем коде должна была смутить программу, и это дало ошибку "R не удалось решить".

Ответ 12

Стоит проверить AndroidManifest.xml. Значение package имеет правильное значение.

То есть <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="your.correct.package.name" ...

После того, как вы измените это, R.java будет повторно сгенерирован.

Ответ 13

Удостоверьтесь, что вы установили форму разработчика sdk для Android.

Свойства правого клика проекта → Java BuildPath выберите Library и добавьте android-support.jar, выполните следующие действия.

Перейдите в Project- > Properties- > Java Build Path, а затем выберите вкладку "Заказ и экспорт". Установите поддержку библиотеки .jar для поддержки android и верните ее в начало списка. И очистите и перестройте. Он работает для большинства случаев.

enter image description here

Ответ 14

У меня была эта проблема в миллионный раз и я понял, что ее вызывает: я создал XML файл с заглавными буквами в названии. Все ваши имена файлов XML в /res должны соответствовать [a-z0-9\\._].

Ответ 15

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

Сохраните файл (например, main.xml), затем удалите файл R.java и посмотрите, разрешает ли регенерированная R.java проблему разрешения R.

Ответ 16

R - это сгенерированный класс. Если вы используете Android Development Tools (ADT), он генерируется всякий раз, когда проект построен. Возможно, вы отключили "Build Automatically".

Ответ 17

Проверьте имена файлов XML. Убедитесь, что все они в нижнем регистре.

Также убедитесь, что все имена ресурса изображений также находятся в LOWER CASE. У меня была заглавная буква во имя моего jpg файла, и это вызвало неразрешенную ошибку R в моем проекте.

Ответ 18

Эта ошибка возникла при установке моего x64 Linux Mint. Оказалось, что результатом был сбой в двоичном коде ADB, потому что пакет ia32-libs не был установлен. Просто запуск apt-get install ia32-libs и перезапуск Eclipse исправили ошибку.

Если у вашего x64-дистрибутива нет ia32-libs, вам нужно будет пойти Multiarch.

Отметьте # 4 и # 5 в этом сообщении: http://crunchbang.org/forums/viewtopic.php?pid=277883#p277883

Надеюсь, это поможет кому-то.

Ответ 19

Вам может потребоваться обновить инструменты SDK. Перезагрузите Android SDK Manager еще раз и установите новый элемент: Android SDK Build-tools.

enter image description here

Ответ 20

У меня тоже была эта проблема. Оказалось, что я случайно удалил строковый ресурс "app_name" из файла strings.xml, который вызывал молчащую ошибку. Как только я добавил его, класс R был сгенерирован успешно, и все было резервным и работающим.

Ответ 21

Вам может потребоваться обновить/установить инструменты SDK. Перезагрузите Android SDK Manager еще раз и установите новый элемент: Android SDK Build-tools.one одним удалением, исправьте, какой из них работает для вас. введите описание изображения здесь

Ответ 22

Еще одна причина: R.java может не получить автогенерирование, если у вас есть такие каталоги, как res/drawable-hdpi, res/drawable-mdpi или res/вытяжке-ldpi.

1.6+, похоже, в порядке с этими каталогами, но 1.5 не хочет их. Когда я удалил эти каталоги, R.java снова начал автогенерирование для меня.

Ответ 23

Попробуйте сделать свой новый файл с наименованием файла макета XML. Например, используйте my_file.xml вместо myFile.xml.

Ответ 24

К сожалению, ни один из существующих вопросов не помог. Поскольку моя проблема кажется специфичной для платформы, это может работать, только если вы находитесь на Ubuntu 64 бит (в настоящее время я использую Ubuntu 12). Сначала я не видел окна "Проблемы", которые уже намекали на решение, что на 64-битной среде вам нужны 32-битные библиотеки, которые могут отсутствовать:

sudo apt-get install ia32-libs

Я установил пакет и восстановил свой проект, который исправил эту проблему для меня.

Ответ 25

перезагрузите компьютер.
Ничто не помогло мне, кроме этого.

Ответ 26

Просто перейдите в список Android Top menu. нажмите Создать меню, в разделе Строка нажмите Перестроить проект.

введите описание изображения здесь

Ответ 27

Часто это происходит из-за номера версии MinSDK, который вы предоставили при создании проекта. Пример:

Если вы хотите, чтобы 2,1 был минимальным, Android 2.1 на самом деле является API-интерфейсом 7.

Вы можете видеть, о чем я говорю, когда вы просматриваете SDK, который вы загрузили и установили. Перейдите к месту, где вы установили SDK (например, C:\android-sdk-windows) и откройте папку с именем "платформы". Вы увидите что-то вроде "android-7", указанное как папка, и если вы откроете файл source.properties, который при открытии текстовым редактором покажет вам соответствующую версию платформы.

Когда вы создаете проект, и вы должны выбрать API "Build Target", последний столбец в этом списке с именем "Уровень API" отображает номер, который вы ищете при заполнении настройки MinSDK.

Это, вероятно, одна из самых распространенных ошибок, которая приводит к тому, что файл R.java не создается в Project > gen > packagename > R.java.

Ответ 28

Удалите main.out.xml. Я новичок в этом и еще не знаю, для чего используется этот файл, но удаление его очистило проблему.

Ответ 29

У меня были примеры Android 8 и я пытался использовать Android 7 SDK. Когда я закрыл проект и снова открыл папку приложения и решил использовать Android 8 SDK, он смог найти R файл. Надеюсь, это поможет.

Ответ 30

В моем случае у меня была ошибка в AndroidManifest.xml. Другие сказали, что ваши файлы XML должны быть свободны от ошибок, но я смотрел только в папке res/. Найдите и исправьте как можно больше ошибок, и проблема может решить проблему.