안드로이드 스튜디오 Refactor 기능으로 한번에 패키지명 변경하는 방법 |
환경: Android Studio |
안드로이드 스튜디오에서는 패키지 주소를 변경했을 때 import 문이나 소스에서 참조하고 있는 주소명을 수동으로 일일이 고치지 않아도 됩니다. Refactor 기능을 이용하면 패키지와 관련된 모든 주소는 에러 없이 한번에 수정할 수 있습니다. 단, build.gradle 와 AndroidManifest.xml 의 일부 이름은 직접 찾아서 수정해 줘야 합니다. 이 기능은 소스 내에서 쓰는 변수명이나 클래스명도 포함됩니다. 이름 변경으로 인한 에러를 조금이라도 줄이려면 반드시 Refactor 의 Rename 기능을 이용해야 합니다.
▼ 안드로이드 개발을 시작하기 위해 프로젝트를 생성하면 기본 패키지 주소는 com.example 가 됩니다. 나중에 자신의 도메인에 맞게 패키지 주소도 수정해 줘야 합니다. 안드로이드 스튜디오에서는 컴퓨터 폴더 변경하듯이 이름을 바꾸지는 않습니다. 에러 없이 이름을 변경하기 위해서는 패키지 주소를 선택하고 오른쪽 마우스를 눌러 Refactor > Rename 메뉴를 선택합니다.
▼ 그런데 패키지 주소가 하나로 표시되는 경우 전체 주소를 모두 바꿀 수가 없습니다. 제일 마지막 패키지 주소만 수정이 가능하기 때문에 Android 섹션에서 탐색기에 표현 형태를 변경해 줘야 합니다.
▼ 상단 톱니 바퀴를 클릭해서 Compact Empty Middle Packages 를 체크 해제합니다.
▼ 그럼 패키지는 전체 주소가 아닌 단계별로 나눠 집니다. 이제 피라미드 형태로 바뀐 패키지들을 하나씩 변경할 수 있게 되었습니다. com 을 선택하고 오른쪽 마우스를 눌러 Refactor > Rename 을 선택합니다.
▼ 팝업창에서 바꿀 패키지 주소를 넣고 Refactor 버튼을 클릭합니다.
▼ 다음은 자동으로 수정이 되지 않는 파일들을 체크해 보겠습니다. Refactor 가100% 완벽하게 수정해 주는 것은 아니거든요. Build 를 했을 때 에러가 난다고 해서 당황해 하실 필요는 없습니다. 에러는 많아도 수정할 곳은 얼마 안되기 때문입니다. 먼저 AndroidManifest.xml 에서 package 주소를 변경합니다.
▼ 또한 C2DM 메시지 서비스를 사용하기 위한 permission 도 자동으로 바뀌지 않습니다. C2DM 이란 Cloud To Device Messaging Framework 의 약자로 서버에서 클라이언드 앱에 메시지를 PUSH 하는 기능입니다. 이전에는 클라이언드 앱이 서버에 데이터를 요청했지만 지금은 서버에서도 데이터를 전송할 수 있게 되어 있습니다. 그것을 허락하는 permission 이 C2D_MESSAGE 입니다.
▼ 두 번째 수동 변경 파일은 bulid.gradle 입니다. defaultConfig 에 포함된 applicationId 의 패키지 주소를 바뀐 값으로 변경해 줍니다. 이 외에도 수동 변경해야 될 부분이 있을 수 있습니다. 그것은 컴파일을 통해 위치를 쉽게 파악할 수 있으므로 더 이상 언급하지 않겠습니다. 대부분은 패키지 수정 후 지금까지 소개한 것만 변경해 줘도 문제가 없을 겁니다.
'프로그래밍 툴 > 안드로이드 스튜디오' 카테고리의 다른 글
안드로이드 스튜디오 GitHub 와 연동해서 소스 다운로드 받는 방법 (3) | 2019.09.13 |
---|---|
안드로이드 스튜디오 단축키로 자동 import 가 잘 안될 때 해결 방법 (0) | 2019.09.12 |
안드로이드 스튜디오 Refactor 기능으로 한번에 패키지명 변경하는 방법 (2) | 2019.09.10 |
안드로이드 스튜디오 SVN not all local changes may be shown due to an error 해결하는 방법 (0) | 2019.09.10 |
안드로이드 스튜디오 sqlite DB 조회를 위한 브라우저 사용하기 (1) | 2019.09.09 |
안드로이드 스튜디오 if, if-else, try-catch 코드 자동 완성 기능과 블록 해제하는 방법 (0) | 2019.09.09 |
댓글을 달아 주세요
한동석 2020.11.26 14:15 댓글주소 수정/삭제 댓글쓰기
잘봤습니다.^^
네 감사합니다. ^^