Intereting Posts

Ошибка «Package R не существует» при создании с помощью Gradle из командной строки

Я пытаюсь создать проект Android с Gradle из командной строки, но обнаружил проблему, когда хочу изменить структуру каталогов.

В настоящее время:

 . └── main ├── AndroidManifest.xml ├── ic_launcher-web.png ├── java │ └── com │ └── myproject │ └── MainActivity.java └── res ├── ... ├── layout │ ├── activity_main.xml │ └── fragment_main.xml ├── ... ... 

Затем я выполняю:

 ./gradlew clean build 

Это заканчивается:

 BUILD SUCCESSFUL 

ОК. Все в порядке. Но теперь я хочу создать новый каталог, так что:

Я создаю каталог ui и передвигаю MainActivity.java :

 . └── main ├── AndroidManifest.xml ├── ic_launcher-web.png ├── java │  └── com │  └── myproject │  └── ui │  └── MainActivity.java └── res ├── ... ├── layout │  ├── activity_main.xml │  └── fragment_main.xml ├── ... ... 

Измените свой пакет:

 package com.myproject.ui; // imports public class MainActivity extends ActionBarActivity { ... } 

Измените свой android:name атрибут android:name в AndroidManifest.xml :

 <activity android:name=".ui.MainActivity" android:label="@string/app_name" > ... </activity> 

И попробуйте снова скомпилировать его:

 ./gradlew clean build 

Со следующими ошибками:

 /home/birei/MyDummyProject/MyProject/src/main/java/com/myproject/ui/MainActivity.java:19: error: package R does not exist setContentView(R.layout.activity_main); ^ /home/birei/MyDummyProject/MyProject/src/main/java/com/myproject/ui/MainActivity.java:23: error: package R does not exist .add(R.id.container, new PlaceholderFragment()) ^ /home/birei/MyDummyProject/MyProject/src/main/java/com/myproject/ui/MainActivity.java:33: error: package R does not exist getMenuInflater().inflate(R.menu.main, menu); ^ /home/birei/MyDummyProject/MyProject/src/main/java/com/myproject/ui/MainActivity.java:43: error: package R does not exist if (id == R.id.action_settings) { ^ /home/birei/MyDummyProject/MyProject/src/main/java/com/myproject/ui/MainActivity.java:60: error: package R does not exist View rootView = inflater.inflate(R.layout.fragment_main, container, false); BUILD FAILED 

Что я делаю не так? Есть идеи?

Спасибо.

Solutions Collecting From Web of "Ошибка «Package R не существует» при создании с помощью Gradle из командной строки"

Обычно это происходит, когда вы объявляете неправильный пакет в своей деятельности.

Убедитесь, что package com.example.blah; Объявление в вашей деятельности соответствует объявлению package в вашем AndroidManifest.xml .

Я понял, поэтому отвечу.

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

Итак, это было бы так:

 package com.myproject.ui; // lots of imports... // ... import com.myproject.R; public class MainActivity extends ActionBarActivity { ... } 

Я получил эту ошибку, потому что я изменил имя пакета в файлах .java и переименовал каталоги, но не обновил AndroidManifest.xml. Исправлена ​​проблема с изменением имени пакета в AndroidManifest.xml. Это согласуется с ответом loopj выше.

Полная процедура изменения имени пакета Java в проекте Android, который работал для меня, таков:

  1. Переименован пакет в .java-файлы.
  2. Переименованные каталоги, содержащие файлы .java.
  3. Переименованный пакет в AndroidManifest.xml, а также другие элементы в этом файле, если это необходимо.
  4. Переименован applicationId в build.gradle (тот, который используется для приложения).