Please Enable JavaScript!
Gon[ Enable JavaScript ]

안드로이드 스튜디오 Refactor 기능으로 한번에 패키지명 변경하는 방법

 

환경: Android Studio

 

안드로이드 스튜디오에서는 패키지 주소를 변경했을 때 import 문이나 소스에서 참조하고 있는 주소명을 수동으로 일일이 고치지 않아도 됩니다. Refactor 기능을 이용하면 패키지와 관련된 모든 주소는 에러 없이 한번에 수정할 수 있습니다. , build.gradle AndroidManifest.xml 의 일부 이름은 직접 찾아서 수정해 줘야 합니다. 이 기능은 소스 내에서 쓰는 변수명이나 클래스명도 포함됩니다. 이름 변경으로 인한 에러를 조금이라도 줄이려면 반드시 Refactor Rename 기능을 이용해야 합니다.

 

안드로이드 개발을 시작하기 위해 프로젝트를 생성하면 기본 패키지 주소는 com.example 가 됩니다. 나중에 자신의 도메인에 맞게 패키지 주소도 수정해 줘야 합니다. 안드로이드 스튜디오에서는 컴퓨터 폴더 변경하듯이 이름을 바꾸지는 않습니다. 에러 없이 이름을 변경하기 위해서는 패키지 주소를 선택하고 오른쪽 마우스를 눌러 Refactor > Rename 메뉴를 선택합니다.

안드로이드 스튜디오 Refactor 기능으로 한번에 패키지명 변경하는 방법

 

그런데 패키지 주소가 하나로 표시되는 경우 전체 주소를 모두 바꿀 수가 없습니다. 제일 마지막 패키지 주소만 수정이 가능하기 때문에 Android 섹션에서 탐색기에 표현 형태를 변경해 줘야 합니다

안드로이드 스튜디오 Refactor 기능으로 한번에 패키지명 변경하는 방법

 


상단 톱니 바퀴를 클릭해서 Compact Empty Middle Packages 를 체크 해제합니다

안드로이드 스튜디오 Refactor 기능으로 한번에 패키지명 변경하는 방법

 

그럼 패키지는 전체 주소가 아닌 단계별로 나눠 집니다. 이제 피라미드 형태로 바뀐 패키지들을 하나씩 변경할 수 있게 되었습니다. com 을 선택하고 오른쪽 마우스를 눌러 Refactor > Rename 을 선택합니다

안드로이드 스튜디오 Refactor 기능으로 한번에 패키지명 변경하는 방법

 

팝업창에서 바꿀 패키지 주소를 넣고 Refactor 버튼을 클릭합니다

안드로이드 스튜디오 Refactor 기능으로 한번에 패키지명 변경하는 방법

 

다음은 자동으로 수정이 되지 않는 파일들을 체크해 보겠습니다. Refactor 100% 완벽하게 수정해 주는 것은 아니거든요. Build 를 했을 때 에러가 난다고 해서 당황해 하실 필요는 없습니다. 에러는 많아도 수정할 곳은 얼마 안되기 때문입니다. 먼저 AndroidManifest.xml 에서 package 주소를 변경합니다

안드로이드 스튜디오 Refactor 기능으로 한번에 패키지명 변경하는 방법

 

또한 C2DM 메시지 서비스를 사용하기 위한 permission 도 자동으로 바뀌지 않습니다. C2DM 이란 Cloud To Device Messaging Framework 의 약자로 서버에서 클라이언드 앱에 메시지를 PUSH 하는 기능입니다. 이전에는 클라이언드 앱이 서버에 데이터를 요청했지만 지금은 서버에서도 데이터를 전송할 수 있게 되어 있습니다. 그것을 허락하는 permission C2D_MESSAGE 입니다

안드로이드 스튜디오 Refactor 기능으로 한번에 패키지명 변경하는 방법

 

두 번째 수동 변경 파일은 bulid.gradle 입니다. defaultConfig 에 포함된 applicationId 의 패키지 주소를 바뀐 값으로 변경해 줍니다. 이 외에도 수동 변경해야 될 부분이 있을 수 있습니다. 그것은 컴파일을 통해 위치를 쉽게 파악할 수 있으므로 더 이상 언급하지 않겠습니다. 대부분은 패키지 수정 후 지금까지 소개한 것만 변경해 줘도 문제가 없을 겁니다

안드로이드 스튜디오 Refactor 기능으로 한번에 패키지명 변경하는 방법

Posted by 녹두장군

댓글을 달아 주세요

  1. 한동석 2020.11.26 14:15  댓글주소  수정/삭제  댓글쓰기

    잘봤습니다.^^