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

Я видел, как System.Drawing выбрасывает OutOfMemoryExceptions даже тогда, когда его не хватает. Некоторые функции GDI +, по-видимому, просто возвращают глупый код ошибки.

IIRC, вы получите исключение OutOfMemoryException, если попытаетесь использовать LinearGradientBrush для заполнения прямоугольника, ширина или высота которого равна нулю. Могут быть и другие условия, но это основная проблема, с которой мы столкнулись.

В этом случае нет необходимости в try / catch. Просто добавьте оператор if в свой код чертежа и не заполняйте прямоугольник, если ширина или высота равны нулю.

Обновление: согласно комментариям к этот ответ , это также может произойти, если вы попытаетесь загрузить поврежденный файл изображения. Для этого у вас не будет выбора, кроме как попробовать / поймать.

Вероятно, вы можете безопасно вылавливать OutOfMemoryExceptions из GDI +, но как можно меньше блокируйте блоки try. Рассмотрите возможность регистрации исключений, чтобы вы могли анализировать журналы и, когда это возможно, добавлять защитный код. Вы не хотите замаскировать real OutOfMemoryException, но вы не хотите, чтобы глупый код ошибки GDI + также разбивал ваше приложение.

1046
задан 9 revs, 6 users 58% 16 June 2016 в 08:41
поделиться

36 ответов

То, что сказал Уилл, было правильно

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

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

Таким образом, изменение разрешения и выбор «Построить автоматически» решили проблему.

83
ответ дан 2 revs, 2 users 84% 16 June 2016 в 08:41
поделиться

Убедитесь, что вы ищете R.drawable.*, что файл существует в ваших drawable* папках.

0
ответ дан Graham P Heath 16 June 2016 в 08:41
поделиться

Мой R-файл исчез и не будет создан - консоль сообщила об этом:

[2010-09-22 16:19:40 - myproject] res \ drawable-ldpi \ downloadNow.png: Неверный файл name: должно содержать только [a-z0-9 _.]

Итак, оказалось, что имена ресурсов не могут иметь заглавные буквы - подтвердите, что они все строчные и содержат. и _ только

0
ответ дан sami 16 June 2016 в 08:41
поделиться

Существует несколько причин, по которым R не может быть устранена .

  1. В большинстве случаев эта ошибка возникает из-за ошибки файла XML. Эта ошибка может быть устранена с помощью Clean и rebuild вашего проекта, также вы можете перезапустить вашу андроид студию.

  2. Иногда, когда вы кодируете что-то неправильное в AndroidManifest, эта ошибка может возникнуть, поэтому, пожалуйста, проверьте это.

  3. Если ваши ресурсы содержат одно и то же имя или содержат недопустимые символы, эта ошибка может возникнуть.

Если вы уже проверили их, и все же столкнулись с той же проблемой, тогда продолжайте:


Эта ошибка может возникать, когда Android Studio не может сгенерировать файл R.java правильно, поэтому вы должны выполнить следующие шаги:

Шаг 1: Безопасное удаление папки build из каталога приложения.
Шаг 2: В Android Studio, File -> Invalidate Caches / Restart
Шаг 3: Build -> Clean Project Затем Build -> Rebuild Project.

, поэтому папка build будет восстановлена ​​и надеюсь, что ошибка исчезла.


Если ошибка все еще найдена, возможно, вы ранее выполнили рефакторинг имени пакета. В этом случае вы можете нажать ALT + ENTER вместе для импорта R.

1
ответ дан 2 revs 16 June 2016 в 08:41
поделиться

лучшее и более многообещающее решение

  1. закройте Eclipse и откройте каталог Workspace.
  2. найдите папку с именем «.metadata» и удалите эту папку.
  3. Открытое Затмение.

Ошибка должна уйти:)

1
ответ дан 2 revs, 2 users 92% 16 June 2016 в 08:41
поделиться

Убедитесь, что все ваши файлы ресурсов не имеют расширения в верхнем регистре. Я обнаружил, что сохранил несколько изображений с расширением в верхнем регистре .PNG. Я изменил его на .png и все вернулось на круги своя.

1
ответ дан Mansour Fahad 16 June 2016 в 08:41
поделиться

Нажмите Alt + enter и импортируйте

или

Ctrl + F9 < / kbd>

и решено.

-4
ответ дан 2 revs, 2 users 80% 16 June 2016 в 08:41
поделиться

Полагаю, вы просто скопировали и вставили коды, или нет. В любом случае проверьте файл AndroidManifest.xml, проверьте правильность имени package.

-2
ответ дан 2 revs, 2 users 67% 16 June 2016 в 08:41
поделиться

Я бы сказал, что «R не может быть решен» - это нечто слишком общее и может вводить в заблуждение время от времени. У меня также была такая же проблема много раз назад, даже когда я впервые создавал новый проект (что означает, что я еще не связывался с кодом). Большую часть времени мне просто нужно обновить мой менеджер SDK (как уже упоминали некоторые люди). Но в моем недавнем случае я обнаружил, что путь к файлу моего проекта слишком длинный (что-то вроде этого E:\R&D\ANDROID\ANDROID BASIC\Folder 1\ Folder 2\..... \Folder n\MyProject). Имена папок также содержат пробелы. Я подумал, что это может быть так, и это действительно так, когда я создал новый проект в другой папке с кратчайшим возможным путем, и ни в одном из имен папок, содержащих пробел, он работал как обычно.

0
ответ дан Great Question 16 June 2016 в 08:41
поделиться

О Боже, я Linux ( Ubuntu ), вот как я решил это:

Первое, что , проблема заключается в разрешении проблемы Я не видел никакой ошибки, связанной с восприятием, но это была проблема. У инструментов не было исполняемого разрешения.

Так что просто быстрое исправление (Если вы знаете точный файл, для которого требуется разрешение на выполнение, примените к ним специально команду ff.)

перейдите в каталог, в который вы положили свой SDK, тогда:

sudo chmod +x -R .

После этого перейдите на project->clean->select your project->clean

Это сработало для меня!.

0
ответ дан dsharew 16 June 2016 в 08:41
поделиться

Я последовал совету по установке инструментов сборки платформы. Затем в консоли появилось сообщение

<package>/gen already exists but is not a source folder. Convert to a source folder or rename it.

. Поэтому я последовал совету и установил «gen» в качестве исходной папки. Это решило проблему.

0
ответ дан Wolfgang Fahl 16 June 2016 в 08:41
поделиться

Я перепробовал большинство опций в этой теме (и многие другие), но у меня ничего не получалось. Наконец-то это сработало, и я подумал поделиться им со всеми ...

У меня есть несколько версий Eclipse IDE на моей машине (потому что я также работаю над проектами, не относящимися к Android). Случайно я создал свой проект Android, используя рабочее пространство, которое использовалось другой (не Android) версией Eclipse. Из-за этого я предполагаю, что происходило что-то странное, и моя R.java никогда не генерировалась!

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

Итак, пока вы пробуете все другие варианты, попробуйте и этот. И надеюсь, что это сработает для вас ...

0
ответ дан Gautam Tandon 16 June 2016 в 08:41
поделиться

Еще одна причина, по которой это может произойти: сегодня вечером я встретил страшную ошибку и в конце концов обнаружил, что ошибочное перетаскивание мыши, по-видимому, переместило один из классов моих собственных пакетов в иерархию другого. На самом деле нет конца тому, как вы можете ввернуться в среду Eclipse.

1
ответ дан Mike Fahy 16 June 2016 в 08:41
поделиться

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

7
ответ дан 2 revs, 2 users 67% 16 June 2016 в 08:41
поделиться

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

5
ответ дан 2 revs, 2 users 50% 16 June 2016 в 08:41
поделиться

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

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

11
ответ дан 3 revs, 3 users 40% 16 June 2016 в 08:41
поделиться

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

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

13
ответ дан 3 revs 16 June 2016 в 08:41
поделиться

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

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

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

95
ответ дан 2 revs, 2 users 89% 16 June 2016 в 08:41
поделиться

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

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

Перейдите в Проект-> Свойства-> Путь сборки Java, затем выберите Порядок и вкладку экспорта. Установите проверенную библиотеку android-support .jar и поместите ее в начало списка. И очистить и восстановить .. Это работает для большинства случаев

enter image description here

17
ответ дан Sunil Kumar 16 June 2016 в 08:41
поделиться

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

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

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

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

198
ответ дан 4 revs, 4 users 43% 16 June 2016 в 08:41
поделиться

Просто зайдите в список верхнего меню Android. нажмите Build Menu, в разделе Build нажмите Rebuild Project .

enter image description here

5
ответ дан Gundu Bandgar 16 June 2016 в 08:41
поделиться

Если вы работаете на Mac, проверьте, был ли .DS_Store добавлен в каталог в /res (ls -al в командной строке терминала). Удалите его и обновите / восстановите.

1
ответ дан 2 revs, 2 users 67% 16 June 2016 в 08:41
поделиться

Проверьте файлы классов imports выше и убедитесь, что нет импорта android.R, если он его удалил, а затем нажмите Ctrl + Shift + o и выберите packagename.R импорт, а не другой.

3
ответ дан 2 revs, 2 users 50% 16 June 2016 в 08:41
поделиться

Для меня это было связано с использованием «приватных» отрисовок для Android:

[2015-11-26 18:59:48 - MyAndroidApp] 
/Users/myname/git/MyAndroidApp/res/menu/drawer_view.xml:24: 
error: Error: Resource is not public. (at 'icon' with value 
'@android:drawable/ic_menu_home').

Интересно, что эти ошибки не отображались в консоли, пока я не удалил ссылку на файл с помощью иконки (тьфу!).

android:entries="@menu/drawer_view"

Теперь решение было вполне очевидным, копируя иконки в мой проект (res / drawable-XXXX /) и переключаясь на локальные ссылки.

@drawable/ic_menu_home

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

2
ответ дан 2 revs 16 June 2016 в 08:41
поделиться

Так что я сталкивался с этой проблемой несколько раз при переключении целей сборки. Обычно делаю проект >> Чисто работало на меня. Однако в последний раз этого не произошло. Наконец я попытался открыть файл default.properties, расположенный в корневой папке проекта. Я получил сообщение об ошибке о том, что он не синхронизирован с файловой системой. Я на самом деле удалил его и скопировал версию коллег, которая позволила eclipse перестроить мой R-файл. Я буду вставлять, как это выглядит ниже. Он называется «default.properties».

# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
# 
# This file must be checked in Version Control Systems.
# 
# To customize properties used by the Ant build system use,
# "build.properties", and override values to adapt the script to your
# project structure.

# Indicates whether an apk should be generated for each density.
split.density=false
# Project target.
target=android-3
2
ответ дан user350617 16 June 2016 в 08:41
поделиться

В моем случае R.java не генерировал, потому что в файле AndroidManifest.xml возникла проблема, в которой я неправильно указал название действия!

4
ответ дан user3024292 16 June 2016 в 08:41
поделиться

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

4
ответ дан dvrm 16 June 2016 в 08:41
поделиться

Установите все Android SDK Build-tools и удалите import android.R из вашего класса Activity. После нажмите Project -> Очистить

import android.R;

enter image description here

4
ответ дан ethemsulan 16 June 2016 в 08:41
поделиться

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

12
ответ дан 19 December 2019 в 20:19
поделиться

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

39
ответ дан 19 December 2019 в 20:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: