Firebase SDK를 기반으로 C++ 인터페이스를 제공하는 Firebase C++ SDK를 사용하여 C++ 게임을 업그레이드하세요.
플랫폼 네이티브 코드를 작성할 필요 없이 C++ 코드만으로 Firebase에 액세스하세요. 또한 Firebase SDK는 Firebase에서 사용하는 여러 언어별 관용구를 C++ 개발자에게 보다 친숙한 인터페이스로 변환합니다.
Firebase 게임 페이지에서 Firebase로 게임을 업그레이드하는 방법을 자세히 알아보세요.
C++ 프로젝트에 Firebase를 이미 추가하셨나요? Firebase C++ SDK의 최신 버전을 사용하고 있는지 확인합니다.
기본 요건
Android 스튜디오, IntelliJ, VS Code 등 선호하는 편집기 또는 IDE를 설치합니다.
Android SDK를 가져옵니다.
프로젝트가 다음 요구사항을 충족하는지 확인합니다.
API 수준 21(Lollipop) 이상 타겟팅
Gradle을 사용하며 CMake로 구성
실제 기기를 설정하거나 에뮬레이터를 사용하여 앱을 실행합니다.
Google 계정을 사용하여 Firebase에 로그인합니다.
2단계: Firebase 프로젝트 만들기
C++ 프로젝트에 Firebase를 추가하려면 우선 C++ 프로젝트에 연결할 Firebase 프로젝트를 만들어야 합니다. Firebase 프로젝트에 대한 자세한 내용은 Firebase 프로젝트 이해를 참조하세요.
3단계: Firebase에 앱 등록
Android 앱에서 Firebase를 사용하려면 Firebase 프로젝트에 앱을 등록해야 합니다. 앱 등록이란 보통 프로젝트에 앱을 '추가'하는 것을 의미합니다.
Firebase 콘솔로 이동
프로젝트 개요 페이지 중앙에 있는 Android 아이콘(
) 또는 앱 추가를 클릭하여 설정 워크플로를 시작합니다.Android 패키지 이름 필드에 앱의 패키지 이름을 입력합니다.
(선택사항) 다른 앱 정보(앱 닉네임 및 디버그 서명 인증서 SHA-1)를 입력합니다.
앱 등록을 클릭합니다.
4단계: Firebase 구성 파일 추가
google-services.json 다운로드를 클릭하여 Firebase Android 구성 파일을 가져옵니다.
IDE에서 C++ 프로젝트를 열고 프로젝트에 구성 파일을 추가합니다.
Gradle 빌드 — 최상위
build.gradle
파일이 있는 디렉터리에 구성 파일을 추가합니다.기타 빌드 시스템 — 아래의 커스텀 빌드 시스템을 참조하여 Android 문자열 리소스를 생성합니다.
(Gradle 빌드에만 해당) C++ 프로젝트에서 Firebase 서비스를 사용 설정하려면 최상위
build.gradle
파일에 google-services 플러그인을 추가합니다.Google 서비스 Gradle 플러그인을 포함하는 규칙을 추가합니다. Google의 Maven 저장소도 있는지 확인합니다.
buildscript { repositories { // Check that you have the following line (if not, add it): google() // Google's Maven repository } dependencies { // ... // Add the following lines: classpath 'com.google.gms:google-services:4.4.2' // Google Services plugin implementation 'com.google.android.gms:18.5.0' } } allprojects { // ... repositories { // Check that you have the following line (if not, add it): google() // Google's Maven repository // ... } }
Google 서비스 Gradle 플러그인을 적용합니다.
apply plugin: 'com.android.application' // Add the following line: apply plugin: 'com.google.gms.google-services' // Google Services plugin android { // ... }
Firebase Console에서 설정 태스크를 마쳤습니다. 아래의 Firebase C++ SDK 추가로 진행하세요.
5단계: Firebase C++ SDK 추가
이 섹션의 단계는 지원되는 Firebase 제품을 Firebase C++ 프로젝트에 추가하는 방법의 예시입니다.
Firebase C++ SDK를 다운로드한 후 원하는 위치에 SDK 압축을 풉니다.
Firebase C++ SDK는 플랫폼별로 제공되지 않지만 플랫폼별 라이브러리를 포함합니다.
프로젝트의
gradle.properties
파일에서 압축을 푼 SDK의 위치를 지정합니다.systemProp.firebase_cpp_sdk.dir=full-path-to-SDK
프로젝트의
settings.gradle
파일에 다음 콘텐츠를 추가합니다.def firebase_cpp_sdk_dir = System.getProperty('firebase_cpp_sdk.dir') gradle.ext.firebase_cpp_sdk_dir = "$firebase_cpp_sdk_dir" includeBuild "$firebase_cpp_sdk_dir"
모듈(앱 수준) Gradle 파일(일반적으로
app/build.gradle
)에 다음 콘텐츠를 추가합니다.
앱에서 사용할 Firebase 제품의 라이브러리 종속 항목을 포함합니다.Analytics 사용 설정됨
android.defaultConfig.externalNativeBuild.cmake { arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir" } # Add the dependencies for the Firebase products you want to use in your app # For example, to use Analytics, Firebase Authentication, and Firebase Realtime Database apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle" firebaseCpp.dependencies { analytics auth database }
Analytics 사용 설정되지 않음
android.defaultConfig.externalNativeBuild.cmake { arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir" } # Add the dependencies for the Firebase products you want to use in your app # For example, to use Firebase Authentication and Firebase Realtime Database apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle" firebaseCpp.dependencies { auth database }
프로젝트의
CMakeLists.txt
파일에 다음 콘텐츠를 추가합니다.
앱에서 사용할 Firebase 제품의 라이브러리를 포함합니다.Analytics 사용 설정됨
# Add Firebase libraries to the target using the function from the SDK. add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL) # The Firebase C++ library `firebase_app` is required, # and it must always be listed last. # Add the Firebase SDKs for the products you want to use in your app # For example, to use Analytics, Firebase Authentication, and Firebase Realtime Database set(firebase_libs firebase_analytics firebase_auth firebase_database firebase_app ) target_link_libraries(${target_name} "${firebase_libs}")
Analytics 사용 설정되지 않음
# Add Firebase libraries to the target using the function from the SDK. add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL) # The Firebase C++ library `firebase_app` is required, # and it must always be listed last. # Add the Firebase SDKs for the products you want to use in your app # For example, to use Firebase Authentication and Firebase Realtime Database set(firebase_libs firebase_auth firebase_database firebase_app ) target_link_libraries(${target_name} "${firebase_libs}")
앱을 동기화하여 모든 종속 항목에 필요한 버전이 있는지 확인합니다.
Analytics를 추가한 경우 앱을 실행하여 Firebase를 성공적으로 통합했다는 확인을 Firebase에 보냅니다. 그렇지 않으면 확인 단계를 건너뛰어도 됩니다.
기기 로그에 초기화가 완료되었다는 Firebase 확인이 표시됩니다. 네트워크 액세스가 가능한 에뮬레이터에서 앱을 실행한 경우 Firebase Console에 앱이 연결되었다는 알림이 표시됩니다.
이제 준비가 끝났습니다. Firebase 서비스를 사용하기 위한 C++ 앱 등록 및 구성 작업을 마쳤습니다.
사용 가능한 라이브러리
C++ Firebase 라이브러리에 대한 자세한 내용은 참조 문서와 GitHub의 오픈소스 SDK 출시 버전을 참조하세요.
Android에 제공되는 라이브러리(CMake 사용 시)
Apple 플랫폼용 C++ 라이브러리는 이 설정 페이지의 Apple 플랫폼(iOS+) 버전을 참조하세요.
Firebase 제품 | 라이브러리 참조 ( build.gradle 파일의firebaseCpp.dependencies ) |
라이브러리 참조 ( CMakeLists.txt 파일의firebase_libs ) |
---|---|---|
AdMob | admob |
firebase_admob (필수) firebase_analytics (필수) firebase_app
|
Analytics | analytics |
firebase_analytics (필수) firebase_app
|
App Check | appCheck |
firebase_app_check (필수) firebase_app
|
Authentication | auth |
firebase_auth (필수) firebase_app
|
Cloud Firestore | firestore |
firebase_firestore (필수) firebase_auth (필수) firebase_app
|
Cloud Functions | functions |
firebase_functions (필수) firebase_app
|
Cloud Messaging | messaging |
firebase_messaging (권장) firebase_analytics (필수) firebase_app
|
Cloud Storage | storage |
firebase_storage (필수) firebase_app
|
Dynamic Links | dynamicLinks |
firebase_dynamic_links (권장) firebase_analytics (필수) firebase_app
|
Realtime Database | database |
firebase_database (필수) firebase_app
|
Remote Config | remoteConfig |
firebase_remote_config (권장) firebase_analytics (필수) firebase_app
|
모바일 설정 관련 추가 정보
NDK 비정상 종료 보고서 받기
Firebase Crashlytics는 Android 네이티브 라이브러리를 사용하는 앱에 대한 비정상 종료 보고를 지원합니다. 자세한 내용은 Android NDK 비정상 종료 보고서 받기를 참조하세요.
커스텀 빌드 시스템
Firebase는 google-services.json
을 프로젝트에 포함할 수 있는 .xml
리소스로 변환하는 generate_xml_from_google_services_json.py
스크립트를 제공합니다. 이 스크립트는 Android 애플리케이션을 빌드할 때 Google Play 서비스 Gradle 플러그인이 수행하는 것과 동일한 변환을 적용합니다.
Gradle을 사용하여 빌드하지 않는 경우(예: ndk-build, makefiles, Visual Studio 등을 사용하는 경우) 이 스크립트를 사용하여 Android 문자열 리소스 생성을 자동화할 수 있습니다.
ProGuard
여러 Android 빌드 시스템은 정식 출시 빌드에 ProGuard를 사용하여 애플리케이션의 크기를 줄이고 자바 소스 코드를 보호합니다.
ProGuard를 사용하는 경우 libs/android/*.pro
중에서 사용 중인 Firebase C++ 라이브러리에 해당하는 파일을 ProGuard 구성에 추가해야 합니다.
예를 들어 Gradle에서 Google Analytics를 사용하는 경우 build.gradle
파일은 다음과 같습니다.
android { // ... buildTypes { release { minifyEnabled true proguardFile getDefaultProguardFile('your-project-proguard-config.txt') proguardFile file(project.ext.your_local_firebase_sdk_dir + "/libs/android/app.pro") proguardFile file(project.ext.your_local_firebase_sdk_dir + "/libs/android/analytics.pro") // ... and so on, for each Firebase C++ library that you're using } } }
Google Play 서비스 요구사항
대부분의 Firebase C++ 라이브러리는 클라이언트의 Android 기기에 Google Play 서비스가 있어야 작동합니다. Firebase C++ 라이브러리를 초기화할 때 kInitResultFailedMissingDependency
가 반환되는 경우, 이는 클라이언트 기기에서 Google Play 서비스를 사용할 수 없음을 의미하며, 업데이트, 재활성화, 권한 수정 등을 수행해야 합니다. 클라이언트 기기에서 문제가 해결되기 전까지는 Firebase 라이브러리를 사용할 수 없습니다.
google_play_services/availability.h
의 함수를 사용하여 클라이언트 기기에서 Google Play 서비스를 사용할 수 없는 이유를 파악하고 해결을 시도할 수 있습니다.
다음 표에서는 지원되는 각 Firebase 제품별로 클라이언트 기기에 Google Play 서비스가 필요한지 여부를 보여줍니다.
Firebase C++ 라이브러리 | 클라이언트 기기에 Google Play 서비스가 필요한지 여부 |
---|---|
AdMob | 필수 아님(일반적인 경우) |
Analytics | 필수 아님 |
Authentication | 필수 |
Cloud Firestore | 필수 |
Cloud Functions | 필수 |
Cloud Messaging | 필수 |
Cloud Storage | 필수 |
Dynamic Links | 필수 |
Realtime Database | 필수 |
Remote Config | 필수 |
AdMob 및 Google Play 서비스
Android용 Google Mobile Ads SDK의 버전 대부분은 클라이언트 기기에 Google Play 서비스가 없어도 정상적으로 작동합니다. 그러나 위에 명시된 표준 com.google.firebase:firebase-ads
종속 항목 대신 com.google.android.gms:play-services-ads-lite
종속 항목을 사용하는 경우에는 Google Play 서비스가 필요합니다.
AdMob 초기화는 다음 조건을 모두 충족하는 경우에만 kInitResultFailedMissingDependency
를 반환합니다.
- 클라이언트 기기에서 Google Play 서비스를 사용할 수 없습니다.
com.google.android.gms:play-services-ads-lite
를 사용 중입니다.
데스크톱 워크플로(베타) 설정
게임을 만들 때는 우선 데스크톱 플랫폼에서 게임을 테스트하고 개발 과정 후반에 휴대기기에 배포하고 테스트하는 것이 한결 간편한 경우가 많습니다. Google은 이러한 워크플로를 지원하기 위해 Windows, macOS, Linux 및 C++ 편집기 내에서 실행될 수 있는 Firebase C++ SDK의 하위 집합을 제공합니다.
데스크톱 워크플로를 사용하려면 다음을 완료해야 합니다.
- CMake용으로 C++ 프로젝트 구성
- Firebase 프로젝트 만들기
- Firebase에 앱(iOS 또는 Android) 등록
- 모바일 플랫폼 Firebase 구성 파일 추가
Firebase 구성 파일의 데스크톱 버전을 만듭니다.
Android
google-services.json
파일을 추가한 경우 — 앱을 실행하면 Firebase가 이 모바일 파일을 찾은 후 데스크톱 Firebase 구성 파일(google-services-desktop.json
)을 자동으로 생성합니다.iOS
GoogleService-Info.plist
파일을 추가한 경우 — 앱을 실행하기 전에 이 모바일 파일을 데스크톱 Firebase 구성 파일로 변환해야 합니다. 파일을 변환하려면GoogleService-Info.plist
파일이 있는 디렉터리에서 다음 명령어를 실행합니다.generate_xml_from_google_services_json.py --plist -i GoogleService-Info.plist
이 데스크톱 구성 파일에는 Firebase Console 설정 워크플로에서 입력한 C++ 프로젝트 ID가 포함되어 있습니다. 구성 파일에 대한 자세한 내용은 Firebase 프로젝트 이해를 참조하세요.
C++ 프로젝트에 Firebase SDK를 추가합니다.
아래 단계는 지원되는 Firebase 제품을 C++ 프로젝트에 추가하는 방법의 예시입니다. 이 예시에서는 Firebase Authentication 및 Firebase Realtime Database를 추가하는 방법을 단계별로 설명합니다.
FIREBASE_CPP_SDK_DIR
환경 변수를 압축을 푼 Firebase C++ SDK의 위치로 설정합니다.프로젝트의
CMakeLists.txt
파일에 사용할 Firebase 제품의 라이브러리가 포함된 다음 콘텐츠를 추가합니다. 예를 들어 Firebase Authentication 및 Firebase Realtime Database을 사용하려면 다음 안내를 따르세요.# Add Firebase libraries to the target using the function from the SDK. add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL) # The Firebase C++ library `firebase_app` is required, # and it must always be listed last. # Add the Firebase SDKs for the products you want to use in your app # For example, to use Firebase Authentication and Firebase Realtime Database set(firebase_libs firebase_auth firebase_database firebase_app) target_link_libraries(${target_name} "${firebase_libs}")
C++ 앱을 실행합니다.
사용 가능한 라이브러리(데스크톱)
Firebase C++ SDK에는 Windows, macOS, Linux의 독립형 데스크톱 빌드에서 Firebase의 특정 부분을 사용할 수 있도록 일부 기능에 대한 데스크톱 워크플로 지원이 포함되어 있습니다.
Firebase 제품 | 라이브러리 참조(CMake 사용 시) |
---|---|
App Check |
firebase_app_check (필수) firebase_app
|
Authentication |
firebase_auth (필수) firebase_app
|
Cloud Firestore |
firebase_firestore firebase_auth firebase_app
|
Cloud Functions |
firebase_functions (필수) firebase_app
|
Cloud Storage |
firebase_storage (필수) firebase_app
|
Realtime Database |
firebase_database (필수) firebase_app
|
Remote Config |
firebase_remote_config (필수) firebase_app
|
Firebase는 Windows, macOS, Linux용으로 빌드할 때 편의상 비기능적 스텁 구현으로 나머지 데스크톱 라이브러리를 제공합니다. 따라서 데스크톱을 타겟팅하기 위해 코드를 조건부로 컴파일할 필요가 없습니다.
Realtime Database 데스크톱
데스크톱용 Realtime Database SDK는 REST를 사용하여 데이터베이스에 액세스하므로 데스크톱에서 Query::OrderByChild()
를 통해 사용하는 색인을 선언해야 합니다. 그렇지 않으면 리스너가 실패합니다.
데스크톱 설정 관련 추가 정보
Windows 라이브러리
Windows용 라이브러리 버전은 다음을 기준으로 제공됩니다.
- 빌드 플랫폼: 32비트(x86) 및 64비트(x64) 모드
- Windows 런타임 환경: Multithreaded / MT 및 Multithreaded DLL / MD
- 대상: 출시 및 디버그
다음 라이브러리는 Visual Studio 2015 및 2017로 테스트되었습니다.
Windows에서 C++ 데스크톱 앱을 빌드하는 경우 프로젝트에 다음과 같은 Windows SDK 라이브러리를 연결하세요. 자세한 내용은 컴파일러 문서를 참조하세요.
Firebase C++ 라이브러리 | Windows SDK 라이브러리 종속 항목 |
---|---|
App Check | advapi32, ws2_32, crypt32 |
Authentication | advapi32, ws2_32, crypt32 |
Cloud Firestore | advapi32, ws2_32, crypt32, rpcrt4, ole32, shell32 |
Cloud Functions | advapi32, ws2_32, crypt32, rpcrt4, ole32 |
Cloud Storage | advapi32, ws2_32, crypt32 |
Realtime Database | advapi32, ws2_32, crypt32, iphlpapi, psapi, userenv |
Remote Config | advapi32, ws2_32, crypt32, rpcrt4, ole32 |
macOS 라이브러리
macOS(Darwin)의 경우 64비트(x86_64) 플랫폼용 라이브러리 버전이 제공됩니다. 편의를 위해 프레임워크도 제공됩니다.
macOS 라이브러리는 13.3.1로 테스트되었습니다.
macOS에서 C++ 데스크톱 앱을 빌드하는 경우 프로젝트에 다음을 연결하세요.
pthread
시스템 라이브러리CoreFoundation
macOS 시스템 프레임워크Foundation
macOS 시스템 프레임워크Security
macOS 시스템 프레임워크GSS
macOS 시스템 프레임워크Kerberos
macOS 시스템 프레임워크SystemConfiguration
macOS 시스템 프레임워크
자세한 내용은 컴파일러 문서를 참조하세요.
Linux 라이브러리
Linux의 경우 32비트(i386) 및 64비트(x86_64) 플랫폼용 라이브러리 버전이 제공됩니다.
Linux 라이브러리는 Ubuntu에서 GCC 4.8.0, GCC 7.2.0, Clang 5.0으로 테스트되었습니다.
Linux에서 C++ 데스크톱 앱을 빌드하는 경우 프로젝트에 pthread
시스템 라이브러리를 연결하세요. 자세한 내용은 컴파일러 문서를 참조하세요. GCC 5 이상으로 빌드하는 경우 -D_GLIBCXX_USE_CXX11_ABI=0
을 정의합니다.
다음 단계
샘플 Firebase 앱을 살펴봅니다.
GitHub의 오픈소스 SDK를 살펴봅니다.
앱 출시 준비
- Google Cloud 콘솔에서 프로젝트의 예산 알림을 설정합니다.
- Firebase 콘솔에서 사용량 및 결제 대시보드를 모니터링하여 여러 Firebase 서비스에서 프로젝트 사용량을 전체적으로 파악합니다.
- Firebase 출시 체크리스트를 검토합니다.