Пакета R не существует

Я получаю страшный пакет R не существует, он меня убивает. Код в порядке. У меня есть приложения на рынке, на которых работает код.

Теперь он работает с простыми приложениями webview. o.0

R.string.app_name is error'd my main.xml и string.xml в порядке. Я смущен.

Я открыл более старую версию для "borrow" некоторого кода, и она была затоплена с помощью R. errors.. Я сделал чистую и ничего не менял, за исключением добавления R.android вверху.

Я даже загружаюсь в Netbeans, и я получаю то же самое. Чистота не работает. Могу ли я написать файл R.java?

Что это за R? не R. должен соответствовать R.java

Ответ 1

Для всех, кто столкнулся с этим, Я реорганизую, переименовывая папки пространства имен. Я просто забыл также редактировать AndroidManifest и почему я получил эту ошибку.

Обязательно проверьте это.

Ответ 2

Просто, чтобы сделать это просто:

import your.app.package.R;

Конечно, заменив your.app.package на ваш пакет приложений.

Во всех классах, которые используют ссылки ресурсов R, удалить любые другие import с помощью .R, то есть import android.R;

Ответ 3

TL; DR, если вы получите ошибку "пакет R не существует", возможны следующие причины:

  • некоторая ошибка в файлах ресурсов XML
    - > Исправить ошибки XML
  • текущий пакет отличается от пакета R (см. package атрибут в AndroidManifest.xml)
    - > import R класс, например. import com.example.android.R;
    - > или используйте соответствующий пакет в своем источнике, например. package com.example.android;
    - > или измените атрибут package в AndroidManifest.xml на <manifest xmlns:android="..." package="com.example.android" ...>, если соответствующий
  • используемые идентификаторы R относятся к системным ресурсам
    - > не импортировать android.R, но префикс идентификаторов-нарушителей с помощью android., например. android.R.layout.simple_list_item_2
    Вы можете импортировать android.R вместо префикса идентификаторов, конечно, но тогда вы больше не можете импортировать класс приложения R и должны префикс идентификаторов приложений, например. com.example.android.R.id.main_menu.

Класс R генерируется автоматически из приложения Ресурсы. Он содержит id для этих ресурсов и содержится в пакете, указанном в <manifest> тег в соответствующем файле AndroidManifest.xml.

Если в XML файлах ресурсов нет ошибок, источник R.java будет сгенерирован в подкаталоге пакета ниже gen/ и скомпилирован.


Существует еще один класс R, расположенный в пакете android. Этот класс android.R содержит некоторые вложенные классы, которые, в свою очередь, содержат id и другие значения для системных ресурсов.


Чтобы использовать класс в Java, вы должны назвать класс целым пакет, например.

java.util.List<Object> list = new java.util.ArrayList<Object>();

или импортируйте класс, а затем используйте его без пакета

import java.util.List;
import java.util.ArrayList;
List<Object> list = new ArrayList<Object>();

Вы также можете использовать класс без указания пакета, если оба текущий класс и используемый класс находятся в одном пакете, например.

package com.example.android;
public class A {
    /* ... */
}
package com.example.android;
public class B {
    public void useA() {
        A a = new A();
    }
}

Ответ 4

Никогда не пытайтесь сами писать класс R!

Вы импортировали правильный R-класс в свои файлы?

Выполнение

import android.R;

вместо

import com.example.R;

кажется проблемой для многих людей. После очистки и сборки мои классы иногда импортируют неправильный.

Ответ 5

R.java - это автогенерируемый файл, который обычно не компилируется, если у вас есть ошибки в XML файле.

Нет. Вы не можете написать свой собственный файл R.java, он должен быть сгенерирован компилятором ресурсов.

Проверьте наличие ошибок во всех ваших xml файлах.

Ответ 6

если вы разрабатываете студию android и реорганизовываете имя пакета, вы должны изменить имя пакета в файле android manifest и app gradle.

 applicationId "change here your package name"

и в файле манифеста

 package="change here your package name"

Ответ 7

Класс R - это код Java, автоматически генерируемый из ваших XML файлов (макет пользовательского интерфейса, строки интернационализации и т.д.). Если код раньше работал (как кажется, что это так), вам нужно сообщить своей среде IDE, чтобы как-то восстановить эти файлы:

  • в IntelliJ выберите Инструменты > Android > Сгенерировать источники для <project>
  • (Если вы знаете путь в другой среде IDE, не стесняйтесь редактировать этот ответ!)

Ответ 8

Я полагаю, что он работал, но теперь это не так.

Это может произойти, если вы измените имя PACKAGE внутри вашего файла MANIFEST

<manifest
   package="com.example.android...."

Если вы хотите изменить имя пакета

  • Измените имя пакета вручную в файле манифеста.
  • Нажмите на свой класс R.java и нажмите F6. Это позволит вам переместить класс в другой пакет, и все ссылки на этот класс будут обновлены.

Ответ 9

Удалить импорт android.R; из всех файлов.. как только очистить проект и построить проект.... Он будет генерировать

Ответ 10

В моем случае я понял, что создаю несколько пакетов в проекте. В манифесте Android я обнаружил, что имя провайдера неправильно хранило значение MyContentProvider вместо .provider.MyContentProvider. Мой основной пакет (с пользовательским интерфейсом) был co.companyname.database.provider вместо co.companyname.database.

Затем в операторах импорта для затронутого класса я просто щелкнул правой кнопкой мыши и попросил Android Studio (0.8.6) оптимизировать мои операторы импорта. Я также отметил, что если вы ищете .R в строке поиска AS в верхнем правом углу среды IDE, вы можете найти автоматически созданный файл R.java, который является частью вашего пакета. На этом этапе вам ничего не нужно менять. Студия должна исправить проект после исправления файла манифеста Android и его восстановления.

Еще один элемент - это то, что в одном классе я использовал toString(). length() для оценки строки, но менял местами для TextUtils.IsEmpty(stringVal); Не могу придумать ничего, что я сделал для решения проблемы.

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

NB - все это с AS 0.8.6

P.S.

R.java автоматически генерируется, поэтому читайте заголовок: /* AUTO-GENERATED FILE. НЕ ИЗМЕНИТЬ.  *  * Этот класс автоматически генерируется  * aapt tool из найденных данных ресурса. Это  * не следует изменять вручную.  */

Ответ 11

Когда я испытал это, я создал новый проект и скопировал файлы из моего старого проекта в новый.

  • Начать новый проект
  • Добавьте старые файлы в новый проект (скопируйте и щелкните правой кнопкой мыши Layout, drawables, com.packagename,...), чтобы вставить мои старые файлы проектов.

Однако у меня все еще была та же проблема: R does not exist. Затем я понял, что скопировал и вставил манифест из моего блокнота в манифесты Android Studio, и я не изменил имя пакета в файле манифеста.

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

Ответ 12

Какие файлы вы импортируете в файлы, получающие ошибку R?

Мое понимание файла R заключается в том, что они автоматически генерируют списки ссылок для всех атрибутов в приложении Android. Поэтому вы не можете изменить его самостоятельно.

Используете ли вы Eclipse для создания этого проекта? Были ли предыдущие проекты получены эти ошибки до обновления Eclipse? Каковы ссылки, которые получают ошибки?

Убедитесь, что вы не импортировали другой файл R из другого скопированного кода в другое приложение.

Ответ 13

Я сталкиваюсь с этой проблемой каждый раз, когда я переключаю компьютеры и пытаюсь импортировать старые проекты из файлов, передаваемых через USB.

Мое обходное решение - просто создать новый проект и скопировать (перетащить) файлы в среду IDE (в настоящее время используя Netbeans) и перестроить. Это раздражение и немного хакерское решение, но оно устраняет проблему.

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

Ответ 14

Если вы столкнулись с этой ошибкой в ​​Android Studio:

Проверьте файл модуля Gradle → defaultConfig → applicationId.

Проверьте тег пакета AndroidManifest.xml → manifest.

Проверьте объявления пакетов во всех файлах src java.

Синхронизировать, очистить, а затем перестроить с помощью Gradle.

НИКОГДА не создавайте свой собственный R файл. R автоматически генерируется из исходных java файлов и настроек сборки.

Ответ 15

У меня было: "ошибка: пакет R не существует" и предполагается, что javac не имел доступа к R.java.
Поэтому я добавил% PROJ_LOC%\gen к sourcepath, и он сработает! SourcePath =% PROJ_LOC%\SRC;% PROJ_LOC%\ген

Я не использую Android Studio или Ant (или XML).

Ответ 16

Вы можете попробовать

Главное меню Android Studio > Файл > Недействительный кеш/перезапуск...

Нажмите кнопку invalidate cache/restart для перезапуска проекта

Снова отредактируйте R.xxxx.xxx, если некоторая часть класса класса фрагмента R не решилась должным образом

затем перестройте свой проект

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

Ответ 17

Если эта ошибка возникла после разрешения конфликтов слияния, может помочь простой проект Build → Clean.

Ответ 18

Просто избавился от ошибки в моем проекте. Я импортировал образец проекта, я изменил папки папок, но я не обновил пакет в одном из java файлов.

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

Ответ 19

Иногда он решается, когда вы просто повторно импортируете проект в Android Studio.

Ответ 20

Я решаю свою проблему:

пакет R не существует

.

Откройте файл AndroidManifest.xml и измените minSDKVersion="17" на 19