[Flutter]안드로이드 패키지명, iOS 식별자명 변경하기

민감자·2023년 7월 9일
0
post-thumbnail

저는 Flutter 유저로 딱히 중요할지는 모르겠지만
해당 문서는 Flutter 3.10.5 / Dart 3.0.5 버전을 사용하는 사람이 작성했음을 밝힙니다.

일단 저의 경우 애플 로그인을 구현하다가 마주한 An attribute in the provided entity has invalid value 에러를 해결하기 위해 앱 번들명 변경을 생각하게 되었습니다.

New Flutter Project 로 Flutter 프로젝트를 만들게 되셨다면 패키지명과 식별자명이 com.exmaple.프로젝트명 으로 되어 있으실텐데요. 만약 프로젝트명이 굉장히 흔한 이름이라면 이렇게 애플 개발자 계정같은 곳에서 남이 선점해버리는 불행한 일이 생깁니다. 저도 알고 싶지 않았습니다.
그래서 안드로이드 패키지명과 iOS 식별자명을 변경하는 방법을 소개드리고자 합니다.

아래에선 패키지명과 식별자명으로 이야기하지 않고 패키지명으로 통일해 이야기하도록 하겠습니다.

[1] 명명 규칙

우선 패키지명은 다른 앱들과 구분하는 고유값 역할을 하기 때문에 unique하게 작성해야 합니다. 이런 고유성을 지키기 위해서 보통 다음과 같은 명명 규칙을 지키게됩니다.

  1. (공통)일반적으로 회사가 개발한 도메인 이름을 거꾸로 배열한 후 프로젝트 명을 붙입니다.
    (예시) 도메인 potato.com, 프로젝트명 myapp ➡️ com.potato.myapp
  2. (안드로이드)두 개 이상의 세그먼트(한 개 이상의 점)로 구성해야 합니다.
    (예시) com.myapp ➡️ ✅, com.potato.myapp ➡️ ✅, myapp ➡️ ❌
  3. (안드로이드)각 세그먼트는 문자로 시작해야 합니다.
  4. (안드로이드)모든 문자는 영숫자나 밑줄[a~z, A~Z, 0~9 또는 _] 로 시작해야 합니다.
  5. (안드로이드)구글 플레이에 앱을 게시하기 위해선 com.example, com.android 네임스페이스는 피하셔야 합니다.

대문자에 관하여

애플 공식 개발자 사이트와 안드로이드 공식 개발자 사이트를 확인해보니 대문자를 사용하지 말라는 언급은 없었습니다.
다만 추정컨대 패키지명으로는 소문자를 사용하는 것이 관례이고 자바(JAVA)에서 클래스명과 구분하기 위해 소문자만 사용한다는 걸 보아 해당 관례가 그로부터 비롯되지 않았나 싶습니다.

[2] 안드로이드 패키지명 변경

1. build.gradle 파일의 applicationId 변경

android/app/build.gradle 파일에서 defaultConfig 를 찾아 applicationId 를 변경해주세요!

저의 경우 프로젝트명이 blabla 이므로 위처럼 바꿔주었습니다.

2. build.gradle 파일의 namespace 변경 또는 AndroidManifest.xml 파일의 package 변경

어 뭐야 왜 갑자기 분기가 나뉘어요

What's new in Android Build (Android Dev Submmit '22) 에 따르면 기존에 manifest 에 있던 package 속성이 build.gradle 의 namespace 로 변경되었다고 합니다. 기존 블로그를 확인할 때 package 속성을 변경하라고 언급한 블로그가 많아서 열심히 찾아봤지만 아무리 찾아봐도 안보여서 굉장히 당황했습니다. 최신 버전을 사용하신다면 없는 것이 당연하니 당황하지 마세요! 다만 구버전을 이용하시는 분들을 위해 두 가지 다 설명을 작성해둡니다:)

build.gradle 파일의 namespace 변경

applicationId 를 변경했던 곳과 같은 경로인 android/app/build.gradle 파일에서 namespace를 찾아 변경해주세요!

AndroidManifest.xml 파일의 package 변경

android/app/src/debug, android/app/src/main, android/app/src/profile 경로에 있는 AndroidManifest.xml 파일에 접속하셔서

<manifest xmls:android="http://schemas.android.com/apk/res/android"
    package="당신의.패키지.프로젝트명">

package 속성을 변경해주세요

3. MainActivity.kt 또는 MainActivity.java 수정

마찬가지로 MainActivity.java 가 구버전일 확률이 높습니다.
두 가지를 수정하셔야 하는데 MainActivity.kt 안의 package 명과 디렉토리 경로를 수정해주셔야 합니다.

3-1. MainActivity.kt 패키지 명 수정

android/app/src/main/kotlin/당신의/패키지/프로젝트명 경로에 있는 MainActivity.kt 파일에 접속하셔서 package 를 변경해주세요

3-2. 디렉토리 경로 수정

위 MainActivity.kt 가 위치해 있었던 경로를 변경된 패키지명으로 수정해주시면 됩니다.

[3] iOS 식별자명 변경

ios 는 매우 단순합니다. Runner.xcworkspace 를 실행하셔서 Bundle Identifier 를 변경해주기만 하면됩니다.

변경전 모습이긴 하지만 여기서 Bundle Identifier 를 변경하려는 패키지명으로 변경해주시면됩니다.
참고로 vscode 이용하시는 분은 터미널에 open ios/Runner.xcworkspace 를 입력해서 열어주시면 열립니다.

[4] Flutter

아 한번에 변경해버리고 싶다! 하시면 한 번에 변경해주는 라이브러리를 이용하시는 것도 방법입니다.
https://pub.dev/packages/rename 에 접속하셔서 설치 방법과 사용법을 따라하시면 됩니다.
저는 일회성으로 변경할 건데 라이브러리까지..? 싶어서 사용하지 않았습니다.

[5] 아이디 찾는 방법

프로젝트 패키지명이 안 겹치려면 사용하시려는 패키지명의 존재유무를 확인해볼 수 있습니다.

구글 플레이 스토어

구글 플레이스토어에 접속해 아무 앱이나 선택해보시면 url에 패키지명이 보이는 것을 확인할 수 있습니다.
play.google.com/store/apps/details?id=패키지명
이렇게 말이죠
id 뒤에 사용하시려는 패키지명을 넣어보시면 존재유무를 확인하실 수 있습니다.

앱스토어

https://offcornerdev.com/bundleid.html 에 접속하셔서 사용하시려는 패키지명을 검색해보시면 됩니다.


이상으로 패키지명 변경 기록을 마치도록 하겠습니다. 별 거 없지만.. 확실히 한 번 정리글을 적다보니 평소면 한 번 궁금하고 넘어갈 부분도 찾아보게 되는 것 같습니다. 자주 기록하도록 노력..해보겠습니다!

profile
코딩하는 감자

0개의 댓글