앱을 출시한 이후에는 아예 앱 소유권을 이전할 수 있다고 하는데,
아직 출시 전이고 내부 테스트만 진행했던 앱! 조직 계정으로 전환하고 싶다는 요청이 들어왔다.
사실 앱을 새로 등록 및 개발하는 과정에 +기존에 있던 내용을 삭제해주는 작업만 추가된 것과 다름 없지만,
혹시나 누락사항이 생기지 않도록 참고할 수 있게 기록해둔다.
1. Package Name & Bundle ID 변경
Android는 긴가민가하다.
하지만 iOS는 확실하게, 출시하지 않았어도 이미 다른 개발자 계정에서 빌드한 Bundle ID라면 변경이 필요하다.
업체 측에서 둘다 제공해줬으므로 둘다 변경하는 걸로.
<Android Package Name>
1. /android/app/build.gradle 수정
android {
namespace "{변경할 패키지 네임}"
...
defaultConfig {
applicationId "{변경할 패키지 네임}"
...
2. Native Kotlin File 'pakage' 수정
우리 프로젝트는 Android Native 쪽 기능 구현도 되어 있어서 코틀린 코드 상단의 package import도 수정해줬다
package {변경한 namespace 이름(=변경한 패키지 네임)}
import android.content.Context ...
Flutter - Native 통신 시 사용하는 Channel ID의 경우 그냥 충돌 없는 고유한 값이면 되지만, 통일성을 위해 같이 변경해줬다.
회사 Android 개발자 분 말씀으로는 안드로이드 패키지 네임은 폴더 경로로도 사용되기 때문에 같이 수정해주면 좋을 것 같다고 하셔서 이것도 변경해줬다.
<iOS Bundle ID>
1. 개발자 페이지에 App ID 등록하기
사실 자동으로 와일드카드도 생기고 아카이빙 하면 개별로 등록도 되고 하긴 하는데,
아무래도 여러 팀에 소속되어 있어서 그런지 테스트한다고 빌드하는 사이에 정작 스토어 등록할 때 사용할 수 없는 아이디라고 뜨는 경우를 많이 봤어서 그냥 내가 애초부터 직접 등록하고 가는 게 맘편하더라
2. Xcdoe → project → targets → general 에서 수정
그리고 번들 아이디 수정 자체는 그냥 iOS 프로젝트 수정하듯이.
개발자 계정도 이때 여기서 같이 변경해주면 된다
2-a. 다른 target도 있다면 같이 수정
이 프로젝트에선 Push에서 이미지 띄워주는 기능 구현하면서 ImageNotification이라는 타겟 하나 더 있어서 같이 변경해줬다.
(번들 아이디, 계정 둘 다!)
A Firebase App named "[DEFAULT]" already exists
위처럼 변경해줬다면 일단 오류 없이 빌드되길 빌었는데 에러가 발생하더라.
근데 보다시피 매우 심플하고 간단한 오류다.
/// Firebase 초기화
await Firebase.initializeApp(
name: '{이름 지정}',
options: DefaultFirebaseOptions.currentPlatform,
);
2. Firebase 설정 변경
앱 개발하면 뭐 거의 항상 끼고 가는 Firebase
Firebase 프로젝트는 그대로 사용하되, 앱의 패키지네임과 번들 아이디가 바뀌었으니 이건 바꿔줘야 한다.
바로 어제 앱에 연결된 Firebase 프로젝트를 변경하는 포스팅을 올렸는데,
Firebase Console 프로젝트 변경 (ver. Flutter)
클라이언트 측에서 신규 기능 추가로 Google & Apple 로그인을 요청했다다만 이미 FCM을 사용 중인 프로젝트였는데 클라이언트 쪽에서 Firebase Console에 프로젝트를 새로 만들어 버린 것..클라이언트께
jecklight.tistory.com
이번에는 Firebase에 연결된 앱 정보를 변경하기
1. Friebase Console 페이지에 앱 등록
변경한 Package Name과 Bundle ID에 맞게 Android, iOS를 각각 하나씩 추가해준다.
원래 Flutter에서는 flutterfire 사용하면 자동으로 등록되는 부분이지만,
이러면 다른 정보들도 한꺼번에 알아서 등록돼버리니까 수정할 부분만 찾아서 하나씩 수정하려고 수동 추가해줬다.
Flutter 프로젝트에서 Firebase 이용하기 (공통 설정)
FCM, SNS Login 등등 앱 프로젝트에서 거의 항상 사용하게 되는 FirebaseFlutter 프로젝트에서 사용하기 위해 공통적으로 해주는 기본 설정만 내가 보기 편하게 따로 정리해봤다. 1. Firebase 계정에 프로
jecklight.tistory.com
2. 프로젝트 설정 추가
Android 프로젝트의 경우에는 SHA 인증서 지문을 기존 앱에서 복사해 와서 붙여 넣어줘야 하고,
(짬 있는 Android 개발자라면 당연히 알겠지만 스토어 SHA 지문도 있다.
아래에도 기재하겠지만, 추후 내부 테스트든 뭐든 아카이빙 할 때 잊지 말고 등록해주자.)
iOS 프로젝트의 경우에는 변경한 계정의 팀ID를 미리 추가해두면 좋다.
2-a. 클라우드 메시징 APN 인증키 등록
과정에서 어차피 등록해줘야 하는 팀ID라서..
App ID를 등록했던 개발자 페이지에 가서 APN 키도 하나 등록한다.
(짬 있는 iOS 개발자라면 당연히 알겠지만22 키 분실 시 재다운로드가 불가능하다.
잊지말고 클라이언트에게 꼭 전달해주거나 회사 클라우드에 잘 백업해두자.)
이후 Firebase Console에 파일 업로드 해주면 끝
3. Google json & plist 파일 업데이트
Firebase Console에서 google-services.json 파일과 GoogleService-Info.plist를 다운로드 받아서 Flutter 프로젝트에 덮어쓰기 해준다.
위치는 각각,
- Android: android/app 경로와 android/app/src 경로에 두 군데 존재
- iOS: ios/Runner 경로
4. 코드 업데이트
Firebase.initializeApp 에서 사용하는 option 값을 업데이트 된 id로 수정해줘야 한다.
- Android
static const FirebaseOptions android = FirebaseOptions(
apiKey: '{동일}',
appId: '{새 값으로 변경 필요}',
messagingSenderId: '{동일}',
projectId: '{동일}',
);
- iOS
static const FirebaseOptions ios = FirebaseOptions(
apiKey: '{동일}',
appId: '{새 값으로 변경 필요}',
messagingSenderId: '{동일}',
projectId: '{동일}',
iosClientId: '{새 값으로 변경 필요}',
iosBundleId: '{새 값으로 변경 필요}',
);
변경해야 하는 값들은 알아서 콘솔이나, json / plist 파일 보고 긁어오면 된다.
4-a. Google Login 사용을 위한 plist 업데이트
...
<!-- Google Sign-in Section -->
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>{REVERSED_CLIENT_ID}</string>
<string>{변경한 Bundle ID}</string>
</array>
</dict>
</array>
<!-- End of the Google Sign-in Section -->
...
3. Key Store 재생성
iOS는 이제 TestFlight 업로드가 가능하지만,
Android는 테스트 업로드를 위해서 앱 번들 생성 시 사용하는 키를 재생성 해줘야 한다.
기존에 사용하던 키파일을 삭제한 뒤,
앱 번들 생성을 위해서 Build → Generate Singed Bundle 메뉴 들어가 준다.
그리고 Key Store 선택하는 곳에서 Create New
경로, 비밀번호, Alias, 유효기간, Certificate 입력
(Certificate는 First and Last Name만 입력했는데 생성됐다. 아예 입력 안 하면 필수 필드 채워달라고 함)
새로 만든 키파일로 번들 만들어서 플레이스토어 콘솔에 업로드 해주면 된다.
플레이 콘솔 - 앱 - 테스트 및 출시 - 설정 - 앱 서명 에서 SHA-1 인증서 지문도 잊지 말고 Firebase에 등록하기!
'개발노트 > Flutter' 카테고리의 다른 글
Flutter 프로젝트에서 Google Login 설정하기 (2) | 2024.11.16 |
---|---|
Flutter 프로젝트에서 Firebase 이용하기 (공통 설정) (1) | 2024.11.14 |
Flutter에서 iOS Device run 안 될 때 (0) | 2024.11.11 |
Flutter의 Navigation(화면 전환) - GoRouter 패키지 (1) | 2024.11.09 |
Firebase Console 프로젝트 변경 (ver. Flutter) (2) | 2024.11.07 |