Как переименовать имя пакета Android?

Нажатие Shift+F6, кажется, переименовывает только последний каталог.
Например, в проекте com.example.test будет предложено переименовать только test. То же самое происходит, если я перехожу к имени пакета в .java или файле манифеста и нажимаю Shift+F6.

Так есть ли способ переименовать пакет?


person sandalone    schedule 06.07.2011    source источник


Ответы (20)


Ты можешь это сделать:

  1. Измените имя пакета вручную в файле манифеста.
  2. Щелкните свой класс R.java и нажмите F6 (Рефакторинг->Переместить...). Это позволит вам переместить класс в другой пакет, и все ссылки на этот класс будут обновлены.
person Cristian    schedule 06.07.2011
comment
Он по-прежнему компилируется как com.old_name.test. Вы можете помочь с этим? - person sandalone; 07.07.2011
comment
Этого не должно быть, если вы измените имя пакета в манифесте. Просто попробовал это, и это сработало нормально. - person Cristian; 07.07.2011
comment
вы должны изменить имя пакета в манифесте - person Cristiana Chavez; 18.12.2013
comment
У меня сработало (используя Android Studio 0..9.1), но в обратном порядке. Сначала переместил класс R.java в новый пакет. Вторым шагом было удаление дубликата R.java (он появился в исходной папке в новом пакете). И, наконец, вручную изменил имя пакета в файле манифеста. - person Ivan Kušt; 20.11.2014
comment
FWIW, если вы используете Android Studio, вы можете просто «переместить» пакет (не переименовывать) и выбрать «переместить x.y.z» в другой пакет. Никаких других шагов не требуется. - person Mark McDonald; 23.11.2014
comment
весь мой импорт в классах действий и предыдущее имя пакета - person filthy_wizard; 09.03.2016
comment
Обратитесь к этому вопросу - лучшее решение stackoverflow.com/questions/16804093/< /а> - person Abhinav Arora; 26.03.2016
comment
Я новичок в Android. где я могу найти этот R.java? - person TSR; 02.10.2016
comment
спасибо, вы спасли мой день :) - person Mohamed Atef; 25.10.2016

Лучший способ решить эту проблему — перейти к AndroidManifest.xml: package="com.foocomp.fooapp:

  • Установите курсор на "foocomp"
  • Нажмите Shift+F6
  • Переименуйте пакет во что угодно
  • Повторите для "fooapp".

Работает на меня.

Кроме того, замените Path во всем проекте, так как это не все изменило. Затем очистите, перестройте, и все заработает -> В Android Studio/IntelliJ вы должны снять отметку «Компактные пустые средние пакеты».

person denis.d    schedule 23.05.2013
comment
Этот ответ должен быть помечен как правильный - person srgtuszy; 25.03.2014
comment
Именно, это и сделало дело. Также замените в пути во всем проекте, так как это не изменило все. Затем очистите, перестройте и все заработает. - person Tom; 06.05.2014
comment
также измените атрибут applicationId в файле app/build.gradle. - person Amandeep Rohila; 02.02.2016
comment
установить курсор на. не уверен, что это значит, я поместил курсор перед первой частью, и он рефакторит только первую часть. - person filthy_wizard; 09.03.2016
comment
Я отредактировал / улучшил первую часть этого ответа, так как он работал лучше всего для меня (самый простой способ) - person Khalil Khalaf; 01.12.2016
comment
Если вам нужно изменить часть com, удалите все файлы сборки вручную. Затем нажмите Shift+F6 и рефратор. Измените атрибут applicationId в файле app/build.gradle. - person Vineeth Kuttipurath kottayodan; 21.01.2017
comment
Возможно, вам также придется вручную изменить имя пакета в файле build.gradle. - person activesince93; 22.03.2017
comment
Вы также должны нажать Do refactor в самом низу Android Studio. Только после этого правильный текст переименовывается - person peterkodermac; 24.08.2017
comment
Что значит Также замените в Path in Whole Project, так как это не все изменило. иметь в виду? - person Roymunson; 13.05.2018

Eclipse: щелкните правой кнопкой мыши проект > Инструменты Android > Переименовать пакет приложения.

Так просто, как, что...

введите здесь описание изображения

В Android Studio: откройте файл build.gradle> переименуйте applicationId в defaultConfig> синхронизировать

person Fernando Gallego    schedule 21.07.2014
comment
Спасибо, приятель... отлично работает... Это я хочу... - person Rikin Patel; 15.01.2015
comment
но он не переименовывает пакет после синхронизации, мне нужно вручную переименовывать все остальное, пакеты с java-файлами, а также в mainfest? - person lxknvlk; 29.03.2015
comment
В Android Studio это не обновляет имя пакета в манифесте. - person Mark; 18.04.2015
comment
чтобы уточнить то, что сказал МаркКартер, вам нужно изменить имя пакета, а не идентификатор приложения. проверьте tools.android.com/tech-docs/ система новой сборки/ - person cjayem13; 17.07.2015

  1. Перейдите к своему AndroidManifest.xml.
  2. поместите курсор в имя пакета, как показано ниже не выбирайте его, просто поместите его.

Просто наведите на него курсор

  1. Затем нажмите shift+F6, появится всплывающее окно, как показано ниже, выберите Переименовать пакет.

введите описание изображения здесь

  1. Введите новое имя и выберите Рефакторинг. (Обратите внимание, поскольку мой курсор находится на «что-то», только что-то переименовывается.)

Это сделано.

person priwiljay    schedule 28.01.2016

Я нашел другое решение для переименования пакета во всем проекте:

  1. Откройте файл в пакете.
  2. IntelliJ отображает хлебные крошки файла над открытым файлом.
  3. В пакете, который вы хотите переименовать: щелкните правой кнопкой мыши > Рефакторинг > Переименовать.

Это переименовывает пакет/каталог во всем проекте.

person Vlad    schedule 29.06.2013
comment
Этот сработал для меня, спасибо. С одним дополнением: пришлось вручную переименовывать ссылки в файлах в папке res. - person TewWe; 08.07.2014
comment
работает для меня, с необходимостью изменить имя пакета внутри файла манифеста - person Mahmoud Heretani; 11.05.2018
comment
Это прекрасно работало даже в Android Studio. Спасибо - person Jai Sharma; 13.05.2018

Снимите флажок «Скрыть пустые средние пакеты» в меню настроек Windows Project Explorer, после чего вы сможете реорганизовать каждый каталог.

person Michał Sokołowski    schedule 25.07.2013

Давайте рассмотрим два варианта использования

**Переименовать имя пакета или обрезать пакет**

com.mycompany.mystupidapplicationname в com.mycompany.brandname

or

com.someothercompany.mystupidapplicationname в com.someothercompany.mystupidapplicationname

or

com.someothercompany.mystupidapplicationname в someothercompany.brandname

  1. Выберите «Пакет» в раскрывающемся списке в Android Studio.

Выберите пакет в раскрывающемся списке

  1. Щелкните правой кнопкой мыши пакет, содержащий вашу MainActivity, и преломите его.

введите здесь описание изображения

  1. Выберите «Переименовать пакет», и все будет работать как часы.

Но это только переименует последнюю часть имени пакета

  1. Чтобы переименовать первую или вторую часть имени пакета . Создайте новый фиктивный файл в той части пакета, которую вы хотите переименовать. файл будет создан внутри mycompany.com.myapplicationame. Затем переместите файл внутрь mycompany (щелкните правой кнопкой мыши => переместить), чтобы mycompany появилась в виде дерева. Это сделает эту часть частью древовидного представления и поможет вам щелкнуть правой кнопкой мыши и переименовать эту часть.

введите здесь описание изображения

  1. Удалить фиктивный файл

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

person HimalayanCoder    schedule 22.12.2015

Я нашел хорошее решение этой проблемы. Взяв пример, упомянутый в вопросе, ниже приведены шаги по изменению имени пакета с com.example.test на com.example2.test :

  1. создайте временный каталог, скажем, temp внутри каталога example (рядом с каталогом test).
  2. Вернитесь к проекту Intellij, выберите папку com.example и нажмите Shift + F6. Теперь предлагает переименовать текст example. Здесь вы можете ввести новый текст, который вы хотите, и IntelliJ сделает все остальное за вас.
  3. Удалите временный каталог temp из файловой системы.

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

Удачи!!

person 500865    schedule 13.09.2012
comment
Это также переименовывает имя пакета Manifest? Этот способ переименовывает пользовательские элементы, такие как com.example.test.mycoolbutton? - person sandalone; 15.09.2012
comment
Он переименовывает все в IntelliJ Idea Ultimate 11. - person 500865; 16.09.2012
comment
Вы можете просто попросить IntelliJ не делать Compact Empty Middle Packages (параметр в представлении иерархии проекта), а затем перейти к переименованию каждого каталога. Нет необходимости создавать временные каталоги :) - person RedGlyph; 23.09.2013

Эта модификация требует трех шагов:

  1. Изменить имя пакета в манифесте
  2. Рефакторинг имени вашего пакета, щелкнув правой кнопкой мыши -> рефакторинг -> переименовать в древовидном представлении, тогда студия Android отобразит окно, выберите «переименовать пакет»,
  3. Измените вручную идентификатор приложения в файле build.gradle: android/defaultconfig/идентификатор приложения

Затем очистите/перестройте проект

person Jean-Baptiste Leduc    schedule 13.08.2015

К сожалению, все вышеперечисленное не сработало для меня. После множества испытаний, что сработало для меня в Android Studio:

  1. выполните «перемещение» пакета на новое имя пакета, которое вы хотите (щелкните правой кнопкой мыши на пакете и выберите «Рефакторинг» -> «Переместить»). Если «Рефакторинг» -> «Переместить» не сработал для вас, создайте пакет с нужным именем и вручную переместите существующий пакет в новый, а затем удалите старый пустой пакет.

  2. Изменить имя пакета в манифесте (вручную)

  3. Замените старое имя пакета новым именем пакета глобально (в полном пути, выбрав «Правка» -> «Найти» -> «Заменить в пути»).
person madu    schedule 25.01.2017
comment
В моем случае сработал только этот ответ, когда мне пришлось удалить саму папку из имени пакета, например: изменить с com.company.name.customer на com.company.name - person Logesh R; 05.09.2018

Я сделал следующее:

Я просто создал пакет с нужным именем в папке src рядом с текущим пакетом с текущим именем.

Я перетащил все содержимое текущего пакета в новый пакет, intellij открыл диалоговое окно с вопросом, хочу ли я провести рефакторинг внутри ссылок на пакеты и ссылок на проект в новый пакет, я нажал «да», и TA-DAAA сработало как шарм.

person James Roeiter    schedule 29.03.2014

В Android Studio 1.1 самый простой способ — открыть проект manifest file, затем указать на каждую часть package name, которую вы хотите изменить, и нажать SHIFT + F6 , затем выберите rename package и напишите новое имя в диалоговом окне. Это все.

person Mohammad    schedule 06.05.2015

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

1) Перейдите на вкладку «Проект» и убедитесь, что «Пакеты» являются активной вкладкой в ​​раскрывающемся списке:

Выберите пакеты в раскрывающемся списке

найдите свой пакет com.example (обратите внимание, что test, поскольку в com.example.test его нет), щелкните правой кнопкой мыши и выберите Refactor->Rename...

Он выдаст предупреждение о том, что несколько каталогов... (что на самом деле является желаемым эффектом), нажмите «Переименовать пакет».

Введите новое имя пакета и Refactor...

Он выполнит поиск и покажет вам результаты рефакторинга.

Нажмите кнопку «Выполнить рефакторинг», и он сделает все и даже переименует задействованные папки и файлы ... каждая ссылка будет исправлена ​​​​на это новое имя.

2) Затем, наконец, измените файл AndroidManifest.xml.

:)

person Emmanuel Mahuni    schedule 02.04.2015
comment
Пропущен один шаг, измените имя пакета вручную в файле Gradle. :) - person Arfan Mirza; 01.08.2015
comment
Это кажется хорошим решением, но вы не можете изменить префикс com.example.. В этом примере вы можете изменить только суффикс test. И этого недостаточно для большинства разработчиков. - person The Original Android; 11.08.2015

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

person makimbio    schedule 21.04.2015

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

person Ampers4nd    schedule 13.08.2012

Я сделал следующее

  1. Изменить манифест.
  2. Закрыть androidStudio
  3. Откройте папку с помощью проводника Windows. Измените имена папок.
  4. Откройте androidStudio и выполните поиск и замену.

Сделанный!

person Reinherd    schedule 19.02.2014
comment
Это должен быть принятый ответ!!! - person Irshu; 07.07.2016

Если вы хотите переименовать полный пакет Android, это лучший способ сделать это:

  1. Отметить как отмеченный - Компактные пустые средние пакеты

  2. Щелкните правой кнопкой мыши пакет, который вы хотите изменить, а затем выберите Рефакторинг-> Переименовать-> Переименовать все

Видеоурок можно найти по этой ссылке: https://www.youtube.com/watch?v=A-rITYZQj0A

person Gjoko Bozhinov    schedule 18.02.2015
comment
Хотя теоретически это может ответить на вопрос, было бы предпочтительнее включить сюда основные части ответа и предоставить ссылку для справки. - person Waxen; 19.02.2015

В дополнение к ответу @Cristian выше, мне пришлось сделать еще два шага, чтобы заставить его работать правильно. Я суммирую все это здесь:

  1. Измените имя пакета вручную в файле манифеста.
  2. Нажмите на свой класс R.java и нажмите F6 (Refactor->Move...). Это позволит вам переместить класс в другой пакет, и все ссылки на этот класс будут обновлены.
  3. Измените вручную идентификатор приложения в файле build.gradle: android/defaultconfig/идентификатор приложения[источник].
  4. Создайте новый пакет с нужным именем, щелкнув правой кнопкой мыши папку java -> новый -> пакет, выберите и перетащите все свои классы в новый пакет. Android Studio произведет рефакторинг имени пакета везде[источник].
person Atul O Holic    schedule 16.11.2016

Решение 1. Я изменил имена подпапок src, файл манифеста, заголовки активности и конфигурацию запуска/отладки. И до сих пор есть ошибки сборки. Если ваш проект не такой большой, просто создайте новый проект, скопируйте и вставьте старые файлы и измените имена пакетов в заголовках файлов .java и манифесте Android.

Решение 2. В IntelliJ 12 перейдите к someFile.java и найдите старое имя пакета.

package com.myself.project2

нажмите на слово, которое вы хотите изменить. Нажмите Shift+F6.
Появится диалоговое окно, введите новое имя.

Затем перейдите к настройкам Run/Edit. Внутри радиокнопки Launch измените имя пакета на новое. Он должен работать.

Другие варианты переименования IntelliJ: http://www.jetbrains.com/idea/webhelp/rename-refactorings.html

person trante    schedule 10.05.2013

Супер простой подход:

  1. Найдите R.java в каталоге build/generated
  2. Создайте новые каталоги пакетов, снова в разделе build/generated/etc.
  3. Переместить R.java во вновь созданный пакет.
  4. Появится диалоговое окно. Выберите рефакторинг существующего кода с новым именем пакета.
  5. Очистить и перестроить

Сделанный!

person Alessandro Roaro    schedule 28.07.2016