Вопрос

Я только что скачал и установил новый 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 установлена:

  1. Щелкните правой кнопкой мыши на вашем проекте
  2. Выберите Свойства
  3. Выберите Android в левом меню
  4. Установите флажок рядом с соответствующей целью сборки проекта.
  5. Нажмите Применить и ОК

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

Убедитесь, что вы установили средство сборки Android form sdk manager

проект щелкните правой кнопкой мыши свойства-> Java BuildPath выберите Библиотеку и добавьте android-support.jar выполните следующие действия.

Перейдите в Project->Properties-> Java Build Path, затем выберите вкладку Order и export.Установите флажок android-support .jar library и переместите его в начало списка.А также очистить и перестроить..Это работает в большинстве случаев

enter image description here

Я только что столкнулся с этой проблемой в миллионный раз и понял, в чем ее причина:Я создал 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.один за другим удаляйте, исправляйте, какой из них подходит именно вам.enter image description here

Возможно, вам потребуется обновить SDK tools.Снова запустите Android SDK Manager и установите новый элемент:Инструменты для сборки Android SDK.

enter image description here

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

Сначала проверьте, есть ли какая-либо ошибка в любом xml-макете или нет, если затем сначала устраните ее.

В противном случае удалите зависимость junit из проекта и перестройте проект заново.

enter image description here

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

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

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

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

enter image description here

У меня были примеры 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-библиотек

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top