React & React Native/환경 설정 및 구성

[RN] React Native firebase 개발/운영 분리: Android google-services.json

adjh54 2023. 10. 26. 15:50
반응형
해당 글에서는 firebase 관리 기능을 사용하는 도중 개발 단계와 운영단계를 분리하기 위한 방법에 대해서 알아봅니다.

 

 

💡 React Native 환경에서 Firebase 설정에 관련된 링크들입니다.
분류 플랫폼 링크
Firebase Analytics + Crashlytics 이해 및 설정 방법 Android https://adjh54.tistory.com/254
Firebase Analytics + Crashlytics 이해 및 설정 방법 iOS https://adjh54.tistory.com/530
firebase 개발/운영 분리(Android) google-services.json Android https://adjh54.tistory.com/297
firebase 개발/운영 분리(iOS) : GoogleService-Info.plist iOS https://adjh54.tistory.com/531
Firebase Cloud Message(FCM) 이해 및 환경설정, 간단 테스트 Android https://adjh54.tistory.com/431

 

1) 적용계기


💡 기존에는 개발 단계에서 1개의 firebase 환경 파일(google-services.json)만을 이용하여 Analytics나 Crashlytics를 이용하였습니다.

💡 그러나 개발 단계와 운영 단계에 동일한 firebase를 사용하면 혼동이 오기에 각각을 분리할 필요가 생겼습니다.

 

💡 [참고] Firebase 환경 구성 방법
 

[RN] React Native Firebase Analytics + Crashlytics 이해 및 설정 방법 : Andriod

해당 글에서는 React Native에서 Andriod 개발환경에서 Firebase Analytics와 Crashlytics를 이해하고 설정하는 방법에 대해 확인합니다. 1) React Native Firebase 💡 React Native Firebase - React Native 애플리케이션에서 F

adjh54.tistory.com

 

 

2) 적용방법: FlavorDimensions


💡 FlavorDimensions

- 안드로이드 개발에서 앱의 다양한 구성을 생성하고 관리할 수 있는 기능입니다. 이를 통해 공통 코드를 공유하면서 다른 동작과 리소스를 가진 제품 플레이버(product flavors)를 생성할 수 있습니다.

- 특정 차원 또는 특성을 기반으로 앱의 다양한 변형을 조직화하고 구축하는 데 도움이 됩니다.
- 예를 들어, 개발, 스테이징 및 프로덕션과 같은 다른 환경에 대한 플레이버를 가질 수 있습니다. 또는 다른 기능 또는 대상 사용자에 대한 플레이버를 가질 수도 있습니다.

 
 

3) FlavorDimensions 설정방법


1. src 폴더 내에 dev / prd 폴더를 생성합니다.


 
 

2. 각각 폴더(dev/prd)에 개발/운영에 맞게 google-services.json을 옮겨둡니다.


 
 
 

3. app/build.gradle 파일 내에 코드를 작성합니다.


💡 해당 소스코드는 개발 단계와 운영 단계를 분리하기 위한 설정입니다.
1. flavorDimensions "environment"을 사용하여 FlavorDimensions를 설정합니다. 이를 통해 앱의 다양한 구성을 생성하고 관리할 수 있습니다.

2. productFlavors를 사용하여 플레이버(Product Flavors)를 정의합니다. prd와 dev라는 두 개의 플레이버를 생성하고, 각각 "environment" 차원과 연결합니다. (해당 구분은 app 기준 폴더를 의미합니다)

3. 이 코드를 사용하여 개발과 운영에 따라 google-services.json 파일을 적절한 폴더(dev/prd)에 배치할 수 있습니다. 이를 통해 firebase 환경 파일을 분리하여 사용할 수 있습니다.
android {
		// firebase 개발/운영환경 변경
    flavorDimensions "environment"

    productFlavors {
        prd {
            dimension "environment"
        }
        dev {
            dimension "environment"
        }
    }
}

 
 

[더 알아보기 ]

💡 productFlavors

- 실제로 앱을 구성하는 플레이버를 정의하는 데 사용됩니다. 개발, 스테이징 및 프로덕션과 같은 다른 환경에 대한 플레이버를 생성할 수 있습니다. 이를 통해 공통 코드를 공유하면서도 각각의 플레이버에 대한 다른 동작과 리소스를 설정할 수 있습니다.


💡 어떻게 dev와 prd 파일이 분리된것을 알 수 있을까?

- 운영(prd) 및 개발(dev) 환경은 앱의 빌드 타입 또는 빌드 버전을 통해 구분할 수 있습니다. 보통 개발자는 개발 환경에서 앱을 실행하고 디버깅하며, 운영 환경에서 앱을 릴리스하고 배포합니다. FlavorDimensions를 사용하여 각 환경에 대한 google-services.json 파일을 분리하고, 앱의 빌드 타입 또는 빌드 버전에 따라 올바른 파일이 로드되도록 설정할 수 있습니다.

 

 

 

 

 

4. 강제로 오류를 발생시켜서 연결을 확인합니다.


import crashlytics from '@react-native-firebase/crashlytics';
const App = () => {
	useEffect(() => {
		crashlytics().crash();
	}, []);
	return <></>;
};
export default App;

 
 

 

 

 

5) react-native 0.74 이상 버전을 이용했을때, 적용이 안되는 경우


💡 아래의 글을 참고하시어 적용을 하면 수행이 잘됨을 확인할 수 있습니다.
 

[RN/오류노트] Cannot locate tasks that match 'app:installDebug' as task 'installDebug' is ambiguous in project ':app'.

해당 글에서는 React-native 환경에서 빌드 시 발생하는 오류에 대해 알아봅니다. 1) 문제점 💡 문제점- Cannot locate tasks that match 'app:installDebug' as task 'installDebug' is ambiguous in project ':app'. Candidates are:

adjh54.tistory.com

 

 

 

 

 


 
오늘도 감사합니다. 😀
 
 
 
 

반응형