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 환경 구성 방법
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 이상 버전을 이용했을때, 적용이 안되는 경우
💡 아래의 글을 참고하시어 적용을 하면 수행이 잘됨을 확인할 수 있습니다.
오늘도 감사합니다. 😀
반응형