Как изменить имя пакета в Android Studio.



Иногда возникают ситуации, когда по окончанию работы над проектом обнаруживается, что имя пакета, заданного при создании проекта, следует изменить. Подобная ситуация может возникнуть, если в магазине приложений Google Play данное имя уже используется или же, к примеру, вы допустили ошибку при создании проекта и теперь не можете обновить свое приложение. Такая неприятность легко решается если вы использовали в качестве IDE старенький Eclipse,но вот с Android Studio дела обстоят немного хуже.





Попытка сделать рефакторинг имени пакета в студии приводит к тому, что корректно изменится лишь название проекта – com.name.appname. Это происходит потому, что Anndroid Studio объединяет средние имена пакета (по сути папки) в одно название и считает остальную часть принадлежащей конкретному разработчику или компании, а значит является их идентификатором. Но все же изменить средние имена пакета можно и без особых проблем. Первым способом является изменение название папок внутри проекта, но за этим последует рутинное изменение всех связей в проекте, к тому же и так тормозной Gradle начнёт капризничать пуще прежнего и привести его работу в порядок будет крайне сложно. Потому я рекомендую воспользоваться вторым, более простым и быстрым способом полного изменения имени пакета.
Для начала необходимо открепить объединение средних имен в пакете, для этого нужно выбрать параметры отображения структуры проекта, которая находится над самой текстурой и убрать галочку “Compact Empty Middle Packages”.



Когда имена будут откреплены, каждое из имён можно изменить отдельно. Меняем необходимые имена выбрав из контекстного меню Refactor – > Rename или нажав сочетание клавиш Shift+F6. При появлении предупреждения нажимаем кнопку Rename Package.



При изменении первого имени пакета – com/ru/ua необходимо нажать “Rename all”, так как внутри этой папки расположены паки библиотек, в которых так же необходимо заменить имена.
Теперь имя пакета изменено, связи в классах переписаны, но настройки проекта еще не знают что мы что-то сделали. Для оповещения открываем файл с настройками Gradle который называется build.gradle (Module:app), находим в нём следующий участок кода и изменяем имя пакета на новое.
defaultConfig {

applicationId "com.name.test"

minSdkVersion 14

targetSdkVersion 21

versionCode 1

versionName "1.0"

 }
В большинстве случаев Gradle сам определит, что были внесены изменения и предложит синхронизироваться с проектом, показав соответствующее уведомление в правом верхнем углу. Но если этого не произошло -  необходимо выполнить синхронизацию вручную. Для этого отправляемся в меню студии Tools –> Android –> Sync Project With Gradle Files .
Последнее что осталось сделать, это изменить имя пакета в манифесте, хотя для активностей имена уже будут изменены. Открываем файл манифеста AndroidManifest.xml и в самом верху изменяем имя
<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

     package="com.awesomedevelop.test" > 



Если после выполнения всех шагов Android Studio не сможет инициализировать R.java , и будут выводиться соответствующие уведомления "Cannot resolve symbol R" - необходимо очистить проект перейдя в соответствующее меню студии Build -> Clean Project.

Share on Google Plus

Автор Unknown

Android разработчик и Google-фил. В рабочее время пишу код, в свободное - его читаю. Google+

Комментариев нет:

Отправить комментарий