250205 TIL

나고수·2025년 2월 5일
0

2025 TIL

목록 보기
5/11
post-thumbnail

① 배운 것

firebase flavor별 설정

  • 새로운 프로젝트에 들어가게 되어서 flavor과 파이어베이스 설정부터 다시 하고있음
  • flavor은 환경에 따라 dev, prod, iap로 구분함
  • firebase도 flavor에 따라 다르게 설정해줘야함

방법
1. firebase 프로젝트자체는 1개만 만들고 그 안에 앱을 필요에 따라 만든다.
나같은 경우는
dev는 package가 co.example.example.dev이고 prod,iap는 package가 co.example.example이라서
패키지에 따라 안드로이드 2개, iOS 2개 씩 총 4개의 앱을 만들었음


  1. 안드로이드는 여러개 앱을 만들어도 아무 앱에서 google-services.json을 다운받으면 하나의 google-services.json에서 여러개 앱에 대한 정보가 다 나온다.
    이 google-services.json 파일을 기존처럼 안드로이드 루트 디렉토리에 넣어둔다.
    그리고 플러터 firebase_options.dart파일에서 필요한 부분을 변경해준다.
    나는 다른건 사용하고 있지 않기 때문에 appId부분만 바꿔주면 되었다.
 appId: environment == 'prod'
        ? '${prod_app_id}'
        : '${dev_app_id}',

  1. iOS는 여러개 앱을 만들면 각각의 GoogleService-info.plist를 다운 받아야한다.
    그리고 모든 파일을 관리해야하는데 나는
    iOS/FirebaseConfig/dev
    iOS/FirebaseConfig/prod
    iOS/FirebaseConfig/iap
    이렇게 3개의 폴더를 각각 만들고 그 안에 각 앱의 GoogleService-info.plist파일을 저장했다.

그 후 xCode > Build Phases > + > New Run Script Phase 을 클릭해 스크립트를 작성해줘야한다.

//나 같은 경우는 configuration이 debug-dev/release-prod/debug-iap 이런 식이라 
//'-'를 기준으로 뒤에것을 가져와서 활용했다.
if [[ $CONFIGURATION =~ -([^-]*)$ ]]; then
  flavor=${BASH_REMATCH[1]}
fi

//flavor에 따라 해당 폴더를 찾아가게 만듦
GOOGLESERVICE_INFO_PLIST=GoogleService-Info.plist
GOOGLESERVICE_INFO_FILE=${PROJECT_DIR}/FirebaseConfig/${flavor}/${GOOGLESERVICE_INFO_PLIST}

if [ ! -f "$GOOGLESERVICE_INFO_FILE" ]; then
  echo "No GoogleService-Info.plist found. Please ensure it's in the proper directory."
  exit 1
fi

PLIST_DESTINATION=${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app

cp "${GOOGLESERVICE_INFO_FILE}" "${PLIST_DESTINATION}"

Build Phase 의 Copy Bundle Resource에 GoogleService-info.plist파일이 이미 설정되어있다면 삭제해서 중복적으로 만들어 지지 않게 해야한다.

그리고 안드로이드와 동일하게 플러터 firebase_options.dart파일에서 필요한 부분을 변경해준다.
나는 다른건 사용하고 있지 않기 때문에 appId부분만 바꿔주면 되었다.

 appId: environment == 'prod'
        ? '${prod_app_id}'
        : '${dev_app_id}',

그리고 main.dart에서 firebase를 init할때 options 속성을 설정해서 초기화하면된다

await Firebase.initializeApp(
//google-services.json` 파일이랑  `GoogleService-Info.plist`파일이 있다면 자동으로 options를 만들어주지만
//우리는 flavor에 따라 다른 app_id를 사용하기 때문에 직접 설정해줘야한다.
      options: DefaultFirebaseOptions.currentPlatform,
    );

② 회고 (restropective)

③ 개선을 위한 방법

profile
되고싶다

0개의 댓글