Переименование пакета, в котором генерируется R.java - PullRequest
43 голосов
/ 30 марта 2011

Я использую eclipse, и я создал тестовый проект Android, и пакет в папке "gen", который содержит R.java, в настоящее время называется com.something.test (я думал, что я просто тестировал, но собрал на нем все свое приложение!)

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

Могу ли я переименовать его?

Ответы [ 7 ]

85 голосов
/ 30 марта 2011

Щелкните правой кнопкой мыши свой проект, затем выберите Инструменты Android -> Переименовать имя приложения:

enter image description here

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

21 голосов
/ 30 марта 2011

Проверьте AndroidManifest.xml, есть атрибут package в элементе верхнего уровня <manifest>.Именно здесь генерируется R.java, и вы должны быть осторожны, переименовывая его.

3 голосов
/ 24 июня 2011

Для тех, кто пытается вручную изменить его, утверждение о том, что файл R.java связан, является правильным.Если вы просто измените его в манифесте, вы получите длинную последовательность ошибок «R не может быть решена» во всех ваших java-файлах, которые ссылаются на ресурсы.Чтобы исправить это, вам нужно добавить импорт для класса R в каждый из этих файлов.

Так что если у вас изначально был ваш пакет как: "com.mycomp.myapp.android" и вы изменили его на "com.mynewcomp.myapp.android "вам нужно будет зайти в каждый файл класса Java и добавить:

import com.mynewcomp.myapp.android.R;

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

2 голосов
/ 11 августа 2016

Я знаю, что это старый вопрос, но мне он был нужен сейчас, и, возможно, кому-то еще это нужно.Я использую Android Studio 2.1.1

, чтобы заставить его работать, мне пришлось изменить:

  • пакет - на AndroidManifest.xml
  • applicationId - при сборке.Gradle из папки приложения

Таким образом, не было необходимости импортировать R в каждый класс Java.

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

Ссылка applicationId против имени пакета объясняет разницу между ними и почему их не следует изменять.

2 голосов
/ 29 апреля 2014

Еще одна вещь, которую нужно проверить, это наличие у вас пользовательских видов с пространствами имен xml. Мне потребовалась минута, чтобы понять, что мне нужно изменить атрибут xmlns.

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:myxmlnamespace="http://schemas.android.com/apk/res/com.mynew.packagename"
    ...
2 голосов
/ 30 марта 2011

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

0 голосов
/ 24 сентября 2012

Я провел рефакторинг пакета по одному, используя правый клик-> Refactor и Android Manifest.XML.Мой R-файл все еще строился на старом имени пакета.

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

...