Я только что скачал и установил новый 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/
.
android
eclipse
compiler-errors
android-resources
android-sdk-tools
Маурицио Поццобон
источник
источник
Ответы:
После обнаружения этой проблемы, я нашел это примечание в документации Android:
http://source.android.com/source/using-eclipse.html
Просматривая примеры учебных пособий по Android, я часто использовал команду Ctrl+ Shift+ Oдля «организации импорта» и генерирования любых пропущенных операторов импорта. Иногда это приводит к неверному оператору импорта, который скрывает
R.java
класс, который автоматически создается при сборке.источник
Каждый раз, когда у меня возникала проблема с R, которая не создавалась и даже не исчезала, это было связано с некоторой проблемой в файле макета XML, которая мешала созданию приложения.
источник
android:icon="@drawable/XXX"
декларация<item>
в ресурсе меню, но не было красной загвоздки, сигнализирующей, что нарисованный ресурс XXX не найден. В других случаях"@drawable/YYY"
был отмечен, когда YYY не был найден, но не в этом случае. По какой-то причине.Всякий раз, когда вы получаете
затем проверьте
/res
каталог, и должен быть какой-то файл, в котором есть какая-то ошибка, которая препятствует созданию приложения. Например, это может быть файл макета или это может быть связано с отсутствующим ресурсом, но вы уже определили его в файле XML.Если в папке, например, res / drawables-mdpi, есть какие-либо дополнительные, даже неиспользуемые (!) Или не имеющие ссылок (!) Изображения, которые не соответствуют соглашениям об именах файлов (может содержать только [a-z0-9_.]), Класс R.java может не генерироваться, вызывая цепочку событий всех других упомянутых постов. Надеюсь, поможет!
источник
Посмотрите на ваш импорт. Скорее всего, что линия:
буду там. Если это так, удалите его, чтобы ваш проект разрешил R не с классом Android Resources по умолчанию, а с классом, автоматически сгенерированным из вашей папки / res /.
источник
И еще одна вещь, которая может вызвать эту проблему:
Я установил новый ADT (ст. 22). Он перестал создавать
gen
папку, которая включает в себяR.java
. Решением было также установить новые инструменты сборки Android SDK из Android SDK Manager.Решение найдено здесь
источник
R.java
файл, создаваемый плагинами Android Eclipse при создании приложенияR.java
создается в каталоге "gen". Этот файл генерируется из информации в каталоге "res". Если вы запустите команду «Проект» -> «Очистить ...» в меню Eclipse, она удалит, а затем заново создастR.java
файл.Проблема «R не может быть решена» возникает, когда вы меняете имя пакета в
AndroidManifest.xml
файле. Он использует имя вашего пакета Android для создания подкаталога в каталоге «gen», где хранитсяR.java
файл.Eclipse может иметь проблемы с выполнением clean, потому что он не
R.java
понимает, где находится файл, когда вы изменили имя пакета Android. Вы можете либо переименовать подкаталогgen
в соответствии с вашим новым именем пакета, либо вы можете изменить свое имя пакета обратно на старое имя. Сделайте чистку, а затем измените имя пакета на новое имя, которое вы хотите. Это работает лучше всего, если вы останавливаете Eclipse от попыток сборки во время изменения имени пакета. В меню «Проект» снимите флажок «Автоматически строить», а также когда диалоговое окно «Очистить ...» спросит, следует ли ему «Начать сборку немедленно», снимите флажок, чтобы он не пытался строить во время изменения название пакета. После того, как вы изменили имя, вы можете снова включить «Автоматическая сборка».Обратите внимание: если имя вашего
AndroidManifest.xml
файлового пакета не совпадает с именем вашего Java-пакета, Eclipse автоматически добавит «import <имя вашего Android-пакета> .R;» строка во всех ваших.java
файлах, которые имеют какие-либо ссылки на R. Если вы изменитеAndroidManifest.xml
имя вашего пакета, иногда Eclipse не обновляет все эти добавленные импорта. Если это произойдет, используйте рефакторинг Eclipse ( ALT+ Shift+ R), чтобы изменить оператор импорта в одном из ваших файлов Java на новоеAndroidManifest.xml
имя пакета. Лучше всего делать это, пока вы отключили «Автоматически строить».источник
import com.example.main.package.name.R;
То, что сказал Уилл, было правильно
но я узнал, что была другая проблема, которая вызывала первую. У инструментов в каталоге SDK не было разрешений для выполнения, поэтому он был как будто не существует для Eclipse, поэтому он не создавал
R.java
файл.Таким образом, изменение разрешения и выбор «Автоматически строить» решили проблему.
источник
cd $ANDROID_SDK_ROOT/build-tools/<version>
. Затемchmod a+x
на файлы , такие какaapt
,aidl
,dexdump
,dx
и т.д. ,ANDROID_SDK_ROOT
должны быть установлены в вашей среде, и он будет указывать на вашей установки SDK. Например,/opt/android-sdk
. Важно установить и то,ANDROID_SDK_ROOT
и другое,ANDROID_NDK_ROOT
потому что инструменты Android используют их внутренне. Смотрите рекомендуемый каталог NDK? в списке пользователей NDK.R - это автоматически сгенерированный класс, который содержит константы, используемые для идентификации ваших ресурсов. Если у вас нет файла R.java (это будет gen / eu.mauriziopz.gps / R.java в Eclipse с 1.5 SDK), я бы порекомендовал закрыть и снова открыть ваш проект или перейти в Project> Build all (и выбрав "Построить автоматически" в то время как там, как рекомендовал Йозеф). Если это не сработает, тогда попробуйте создать новый проект, если проблема воссоздается, а затем опубликуйте здесь снова, и мы рассмотрим более подробно.
источник
Закройте все файлы, очистите проект, перезапустите Eclipse.
источник
Это стоит проверить
AndroidManifest.xml
. Атрибутpackage
имеет правильное значение.Это:
После того, как вы это измените,
R.java
будет сгенерировано заново.источник
Эта ошибка также может быть вызвана добавлением действия в пространство имен, которое отличается от корневого пространства имен для вашего пакета.
Например, если
com.example.myapp
корневое пространство имен для вашего пакета, вы можете добавить действие кcom.example.myapp.activities
пространство имен.Это приведет к ошибке «R не может быть решена».
Чтобы исправить импорт, R в пространстве имен по умолчанию в вашей деятельности должно быть:
источник
Наряду с отличными советами в предыдущих ответах, убедитесь, что ваша цель Android установлена:
Редактировать: год спустя я нашел другую причину. У меня в папке для рисования было изображение .jpg с тем же именем, что и изображение .png. Ссылка на это изображение в моем коде, должно быть, запутала программу, и это выдало ошибку «R не может быть решена».
источник
Убедитесь, что вы установили инструмент для сборки Android из sdk manager
щелкните правой кнопкой мыши свойства проекта-> Java BuildPath, выберите «Библиотека» и добавьте android-support.jar, выполнив следующие действия.
Перейдите в Проект-> Свойства-> Путь сборки Java, затем выберите Порядок и вкладку экспорта. Установите проверенную библиотеку android-support .jar и поместите ее в начало списка. И очистить и восстановить .. Это работает для большинства случаев
источник
У меня была эта проблема в миллионный раз, и я понял, что ее вызвало: я создал XML-файл с заглавными буквами в имени. Все ваши имена в XML
/res
должны совпадать[a-z0-9\\._]
.источник
Самое простое решение - иногда вам просто нужно сохранить XML-файл, над которым вы работали, чтобы включить автогенератор.
Сохраните файл (например, main.xml), затем удалите файл R.java и посмотрите, решает ли восстановленный R.java проблему с разрешением R.
источник
Проверьте имена файлов XML. Будьте уверены, что они все в нижнем регистре.
Также убедитесь, что все имена ресурсов изображений также находятся в нижнем регистре. У меня была заглавная буква в имени моего jpg-файла, и это вызвало неразрешенную ошибку R прямо в моем проекте.
источник
R
это сгенерированный класс. Если вы используете Android Development Tools (ADT), он генерируется при сборке проекта. Возможно, у вас отключена функция «Автоматически строить».источник
Эта ошибка возникла на моей установке 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
Надеюсь, это кому-нибудь поможет.
источник
Вам может потребоваться обновить / установить инструменты SDK. Снова перезапустите Android SDK Manager и установите новый элемент: Android SDK Build-tools.one один за другим, исправьте, какой из них работает для вас.
источник
Возможно, вам придется обновить инструменты SDK. Снова перезапустите Android SDK Manager и установите новый элемент: Android SDK Build-tools.
источник
У меня тоже была эта проблема. Оказалось, что я случайно удалил строковый ресурс «app_name» из
strings.xml
файла, что вызывало тихую ошибку. Как только я добавил его обратно, класс R был сгенерирован успешно, и все было восстановлено.источник
Попробуйте сделать имя нового файла макета XML строчными. Например, используйте
my_file.xml
вместоmyFile.xml
.источник
Еще одна причина, по которой
R.java
может не произойти автоматическое создание , заключается в том, что у вас есть каталоги, такие как res / drawable-hdpi , res / drawable-mdpi или res / drawable-ldpi .1.6+ вроде бы в порядке с этими каталогами, но 1.5 не хочет их. Когда я удалил эти каталоги,
R.java
для меня снова началась автогенерация.источник
Сначала проверьте, есть ли какая-либо ошибка в любом макете XML или нет, если затем разрешите ее.
В противном случае удалите зависимость junit из проекта и пересоберите проект.
источник
Часто это происходит из-за номера версии MinSDK, который вы указали при создании проекта. Пример:
Если вы хотите, чтобы 2.1 был минимальным, Android 2.1 на самом деле является API уровня 7.
Вы можете видеть то, о чем я говорю, когда просматриваете загруженный и установленный SDK. Перейдите к месту, где вы установили SDK (
C:\android-sdk-windows
например), и откройте папку с именем «платформы». Вы увидите что-то вроде «android-7» в списке в виде папки, и если вы откроете, что естьsource.properties
файл, который при открытии в текстовом редакторе покажет вам соответствующую версию платформы.Когда вы создаете проект и должны выбрать API «Build Target», последний столбец в этом списке с именем «API Level» показывает число, которое вы ищете при заполнении параметра MinSDK.
Вероятно, это одна из наиболее распространенных ошибок, которая приводит к тому, что
R.java
файл не создается в Project> gen> packagename> R.java.источник
Удалить
main.out.xml
. Я новичок в этом и еще не знаю, для чего этот файл используется, но удаление его решило проблему.источник
Просто зайдите в список верхнего меню Android. нажмите на меню Build , в под Build нажмите на перестроить проект .
источник
У меня были примеры Android 8 и я пытался использовать Android 7 SDK. Когда я закрыл проект, снова открыл папку приложения и решил использовать Android 8 SDK, он смог найти файл R. Надеюсь это поможет.
источник
В моем случае у меня была ошибка в моем
AndroidManifest.xml
. Другие говорили, что ваши XML-файлы не должны содержать ошибок, но я смотрел только в папку res /. Найдите и исправьте как можно больше ошибок, и проблема вполне может решиться сама собой.источник
В случае, если кому-то интересно (я мог бы спасти вашу жизнь здесь), у меня была ошибка, которая
R.xml
не может быть исправлена , немного отличается в проекте GLS. Хммм. ПосмотревR.java
, я нашел автоматически сгенерированный класс,XML.java
, (я думаю) там не было.Решение? Нужна была новая папка в
res
:res\xml
и файлdefault_values.xml
там. Тогда все было в порядке.На тот случай, если у вас нет этого файла, это:
источник