R не может быть разрешен - ошибка Android
-
23-08-2019 - |
Вопрос
Я только что скачал и установил новый 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);
}
}
но Затмение выдает мне ошибку
R не может быть разрешен
на линии
setContentView(R.layout.main);
Почему?
PS:У меня действительно есть XML-файл с именем main.xml
под res/layout/
.
Решение 7
То, что сказал Уилл, было правдой
R - это автоматически сгенерированный класс, который содержит константы, используемые для идентификации ваших >ресурсов.Если у вас нет файла R.java (это было бы gen/eu.mauriziopz.gps/R.java в > Eclipse с пакетом SDK 1.5) Я бы рекомендовал закрыть и повторно открыть ваш проект или перейти в > Проект> Построить все (и выбрать "Построить автоматически", находясь там, как рекомендовано >Josef).Если это не сработает, попробуйте создать новый проект, если проблема повторится, чем > опубликуйте здесь еще раз, и мы рассмотрим более подробно.
но я выяснил, что была еще одна проблема, которая была причиной первой.Инструменты в каталоге SDK не имели разрешений на выполнение, так что это было похоже на то, что они не существовали для Eclipse, поэтому он не создавал R.java
файл.
Таким образом, изменение разрешения и выбор "Создавать автоматически" решили проблему.
Другие советы
После того, как я отследил и эту проблему, я нашел эту заметку в документации по Android:
http://source.android.com/source/using-eclipse.html
*Примечание:Eclipse иногда любит добавлять инструкцию "импортировать android.R" в начало ваших файлов, которые используют ресурсы, особенно когда вы просите Eclipse сортировать или иным образом управлять импортом.Это приведет к тому, что ваш сделать сломаться.Обратите внимание на эти ошибочные инструкции import и удалите их.*
Просматривая примеры руководств по Android, я бы часто использовал Ctrl + Сдвиг + O команда для "Упорядочивания импорта" и создания любых отсутствующих инструкций импорта.Иногда это приводило бы к генерации неправильного оператора import, который скрывал бы R.java
класс, который автоматически генерируется при сборке.
Каждый раз, когда у меня возникала проблема с тем, что R не был сгенерирован или даже исчез, это было связано с какой-то проблемой в файле XML layout, которая препятствовала сборке приложения.
Всякий раз, когда вы получаете
R не может быть разрешен
затем проверьте наличие /res
каталог и там должен быть какой-то файл, в котором содержится какая-то ошибка, препятствующая сборке приложения.Например, это может быть файл макета или это может быть связано с каким-то отсутствующим ресурсом, но вы уже определили его в XML-файле.
Если у вас есть какие-либо дополнительные, даже неиспользуемые (!) или не имеющие ссылок (!) изображения в папке типа res/drawables-mdpi, которые не соответствуют соглашениям об именовании файлов (могут содержать только [a-z0-9_.]), то R.java класс может не сгенерироваться, вызывая цепочку событий, на которые ссылаются все остальные записи.Надеюсь, это поможет!
мой проект включает в себя r.java.at начало, R.layout.main работает хорошо.Но после добавления некоторого кода он не работает, и ошибка R.layout.main не может быть решена. в чем проблема?
Посмотрите на свой импорт.Скорее всего, линия:
import android.R;
буду там.Если это так, удалите его, чтобы ваш проект разрешал R не с помощью класса ресурсов Android по умолчанию, а с помощью класса, автоматически сгенерированного из вашей папки / res /.
И еще одна вещь, которая может вызвать эту проблему:
Я установил новый ADT (v.22).Он перестал создавать gen
папка, которая включает в себя R.java
.Решение состояло также в установке новых инструментов сборки Android SDK из Android SDK Manager.
Решение найдено здесь
R.java
это файл, который плагины Android Eclipse создают во время
сборки вашего приложения. R.java
создается в каталоге "gen"
.Этот файл создается на основе информации в каталоге "res"
.Если вы запустите select "Project" -> "Clean ..." в меню Eclipse
, он удалит, а затем восстановит R.java
файл.
Проблема "R не может быть решена" возникает при изменении вашего
имени пакета в AndroidManifest.xml
файл.Он использует ваш Android
имя пакета для создания подкаталога в каталоге "gen", где
он хранит R.java
файл.
У Eclipse могут возникнуть проблемы с выполнением clean, потому что он запутался в том,
где R.java
файл создается, когда вы изменили пакет Android
название.Вы можете либо переименовать подкаталог в gen
чтобы соответствовать вашему
новому имени пакета, или вы можете изменить свое имя пакета обратно на старое
имя.Выполните очистку, а затем измените название пакета на новое имя
вы хотите.Это работает лучше всего, если вы остановите попытку Eclipse выполнить сборку
при изменении имени пакета.В меню "Проект"
снимите флажок с параметра "Строить автоматически", а также когда
Диалоговое окно "Очистить ..." спросит, следует ли "Немедленно начать сборку".
снимите флажок, чтобы он не пытался выполнить сборку во время изменения
имя пакета.После того, как вы изменили название, вы можете снова включить "Строить
автоматически".
Обратите внимание, что если ваш AndroidManifest.xml
имя пакета файла не совпадает
ваше имя пакета Java, Eclipse в конечном итоге автоматически добавит
строку "import <your Android="" package="" name="">.R;" во все ваши .java
файлы
в которых есть какие-либо ссылки на R.Если вы измените свой AndroidManifest.xml
имя пакета, иногда Eclipse не обновляет все эти добавленные
импортирует.Если это произойдет, используйте рефакторинг Eclipse (АЛЬТ +
Сдвиг + R) чтобы изменить инструкцию import в одном из ваших Java-файлов на
ваш новый AndroidManifest.xml
имя пакета.Лучше всего это делать
пока вы отключили "Автоматическое построение".
R - это автоматически сгенерированный класс, который содержит константы, используемые для идентификации ваших ресурсов.Если у вас нет файла R.java (это было бы gen/eu.mauriziopz.gps/R.java в Eclipse с пакетом SDK 1.5) Я бы рекомендовал закрыть и повторно открыть ваш проект или перейти в Project > Build all (и выбрать "Build Automatically", находясь там, как рекомендовал Josef).Если это не сработает, попробуйте создать новый проект, если проблема повторится, опубликуйте здесь еще раз, и мы рассмотрим более подробно.
Закройте все файлы, очистите проект, перезапустите Eclipse.
Это стоит проверить в AndroidManifest.xml
.Атрибут package
имеет правильное значение.
Это:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="your.correct.package.name"
...
После того, как вы это измените, R.java
будет сгенерирован повторно.
Эта ошибка также может быть вызвана добавлением действия в пространство имен, отличное от корневого пространства имен вашего пакета.
Например, если com.example.myapp
является корневым пространством имен для вашего пакета, затем вы можете добавить действие в com.example.myapp.activities
пространство имен.
Это приведет к появлению ошибки "R не может быть разрешен".
Чтобы исправить импорт, R в пространстве имен по умолчанию в вашей деятельности должно быть:
import com.example.myapp.R;
Наряду с замечательными предложениями, приведенными в предыдущих ответах, убедитесь, что ваша целевая версия Android установлена:
- Щелкните правой кнопкой мыши на вашем проекте
- Выберите Свойства
- Выберите Android в левом меню
- Установите флажок рядом с соответствующей целью сборки проекта.
- Нажмите Применить и ОК
Редактировать:Год спустя я нашел другую причину.У меня в папке с возможностью рисования было изображение в формате jpg с тем же именем, что и у изображения в формате png.Ссылка на это изображение в моем коде, должно быть, сбила программу с толку, и она выдала ошибку "R не может быть разрешен".
Убедитесь, что вы установили средство сборки Android form sdk manager
проект щелкните правой кнопкой мыши свойства-> Java BuildPath выберите Библиотеку и добавьте android-support.jar выполните следующие действия.
Перейдите в Project->Properties-> Java Build Path, затем выберите вкладку Order и export.Установите флажок android-support .jar library и переместите его в начало списка.А также очистить и перестроить..Это работает в большинстве случаев
Я только что столкнулся с этой проблемой в миллионный раз и понял, в чем ее причина:Я создал XML-файл с заглавными буквами в названии.Все ваши XML-имена файлов в /res
должен соответствовать [a-z0-9\\._]
.
Самое простое решение - иногда вам просто нужно сохранить XML-файл, над которым вы работали, чтобы запустить автогенератор.
Сохраните файл (например,main.xml ) затем удалите файл R.java и посмотрите, устраняет ли восстановленный R.java проблему R resolve.
R
является сгенерированным классом.Если вы используете Инструменты разработки для Android (ADT) он генерируется всякий раз, когда создается проект.Возможно, у вас отключена функция "Автоматическая сборка".
Проверьте имена XML-файлов.Убедитесь, что все они написаны строчными буквами.
Также убедитесь, что все имена ресурсов изображения также написаны СТРОЧНЫМИ БУКВАМИ.У меня была заглавная буква в названии моего jpg-файла, и это вызвало неразрешенную ошибку R прямо во всем моем проекте.
Эта ошибка возникла при моей установке x64 Linux Mint.Оказалось, что результатом стал сбой в ADB
двоичный, потому что ia32-libs
пакет не был установлен.Просто бегущий apt-get install ia32-libs
и повторный запуск Eclipse исправил ошибку.
Если в вашем дистрибутиве x64 нет ia32-библиотек, вам придется перейти к мультиархивированию.
Проверьте # 4 и # 5 в этом посте:http://crunchbang.org/forums/viewtopic.php?pid=277883#p277883
Надеюсь, это кому-то поможет.
Возможно, вам потребуется обновить SDK tools.Снова запустите Android SDK Manager и установите новый элемент:Инструменты для сборки Android SDK.
У меня тоже была эта проблема.Оказалось, что я непреднамеренно удалил строковый ресурс "app_name" из strings.xml
файл, который вызывал молчаливую ошибку.Как только я добавил его обратно, класс R был успешно сгенерирован, и все было восстановлено и запущено.
Попробуйте сделать имя вашего нового файла XML-макета строчным.Например, используйте my_file.xml
вместо того , чтобы myFile.xml
.
Еще одна причина R.java
возможно, автогенерация не будет произведена, если у вас есть каталоги типа разрешение / возможность рисования-hdpi, воспроизводимый / извлекаемый-mdpi, или разрешение / извлекаемый-ldpi.
1.6 +, похоже, устраивают эти каталоги, но 1.5 они не нужны.Когда я удалил эти каталоги, R.java
снова запустил автогенерацию для меня.
У меня были примеры Android 8, и я пытался использовать Android 7 SDK.Когда я закрыл проект и снова открыл папку приложения и решил использовать Android 8 SDK, он смог найти файл R.Надеюсь, это поможет.
В моем случае у меня была ошибка в моем AndroidManifest.xml
.Другие говорили, что в ваших XML-файлах не должно быть ошибок, но я искал только в папке res / .Найдите и исправьте как можно больше возможных ошибок, и проблема вполне может разрешиться сама собой.
Часто это происходит из-за номера версии 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> имя_пакета> R.java.
Удалить main.out.xml
.Я новичок в этом и пока не знаю, для чего используется этот файл, но его удаление устранило проблему.
К сожалению, ни один из существующих вопросов не помог.Поскольку моя проблема кажется специфичной для конкретной платформы, это может сработать только в том случае, если вы находитесь на 64- разрядная версия Ubuntu (В настоящее время я использую Ubuntu 12).Сначала я не увидел окна "Проблемы", которое уже намекало на решение, что в 64-разрядной среде вам нужны 32-разрядные библиотеки, которые могут отсутствовать:
sudo apt-получить установку ia32-библиотек
Я установил пакет и перестроил свой проект, что устранило проблему для меня.