Firebase SDK 위에 C++ 인터페이스를 제공하는 Firebase C++ SDK로 C++ 게임을 강화하세요.
플랫폼 네이티브 코드를 작성할 필요 없이 C++ 코드에서 완전히 Firebase에 액세스하세요. 또한 Firebase SDK는 Firebase에서 사용하는 많은 언어별 관용구를 C++ 개발자에게 더 친숙한 인터페이스로 변환합니다.
Firebase 게임 페이지 에서 Firebase로 게임을 강화하는 방법에 대해 자세히 알아보세요.
C++ 프로젝트에 이미 Firebase를 추가하셨습니까? 최신 버전의 Firebase C++ SDK 를 사용하고 있는지 확인하세요.
전제 조건
Android Studio, IntelliJ 또는 VS Code와 같은 선호하는 편집기 또는 IDE를 설치합니다.
Android SDK 를 얻습니다.
프로젝트가 다음 요구 사항을 충족하는지 확인하십시오.
API 레벨 19(KitKat) 이상 대상
Gradle을 사용 하고 CMake로 구성됨
실제 기기를 설정하거나 에뮬레이터를 사용하여 앱을 실행합니다.
Google 계정을 사용하여 Firebase에 로그인 합니다.
2단계 : Firebase 프로젝트 생성
C++ 프로젝트에 Firebase를 추가하려면 C++ 프로젝트에 연결할 Firebase 프로젝트를 만들어야 합니다. Firebase 프로젝트에 대해 자세히 알아보려면 Firebase 프로젝트 이해 를 방문하세요.
3단계 : Firebase에 앱 등록
Android 앱에서 Firebase를 사용하려면 Firebase 프로젝트에 앱을 등록해야 합니다. 앱을 등록하는 것을 종종 프로젝트에 앱을 "추가"라고 합니다.
Firebase 콘솔 로 이동합니다.
프로젝트 개요 페이지 중앙에서 Android 아이콘(
) 또는 앱 추가 를 클릭하여 설정 워크플로를 시작합니다.Android 패키지 이름 필드에 앱의 패키지 이름을 입력합니다.
패키지 이름 은 기기와 Google Play 스토어에서 앱을 고유하게 식별합니다.
패키지 이름 은 종종 애플리케이션 ID 라고 합니다.
모듈(앱 수준) Gradle 파일(일반적으로
app/build.gradle
)에서 앱의 패키지 이름을 찾습니다(예: 패키지 이름:com.yourcompany.yourproject
).패키지 이름 값은 대소문자를 구분하며 Firebase 프로젝트에 등록한 후에는 이 Firebase Android 앱에 대해 변경할 수 없습니다.
(선택사항) 기타 앱 정보 입력: 앱 닉네임 및 디버그 서명 인증서 SHA-1 .
앱 닉네임 : Firebase 콘솔에서 나에게만 표시되는 내부 편의 식별자
디버그 서명 인증서 SHA-1 : SHA-1 해시 는 Firebase 인증( Google 로그인 또는 전화번호 로그인 사용 시 ) 및 Firebase 동적 링크 에 필요합니다.
앱 등록 을 클릭합니다.
4단계 : Firebase 구성 파일 추가
google-services.json 다운로드 를 클릭하여 Firebase Android 구성 파일을 가져옵니다.
Firebase 구성 파일에는 고유하지만 비밀이 아닌 프로젝트 식별자가 포함되어 있습니다. 이 구성 파일에 대해 자세히 알아보려면 Firebase 프로젝트 이해 를 방문하세요.
언제든지 Firebase 구성 파일 을 다시 다운로드할 수 있습니다.
구성 파일 이름에
(2)
와 같은 추가 문자가 추가되지 않았는지 확인하십시오.
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.3.15' // Google Services plugin implementation 'com.google.android.gms:18.1.0' } } allprojects { // ... repositories { // Check that you have the following line (if not, add it): google() // Google's Maven repository // ... } }
Google Services Gradle 플러그인을 적용합니다.
apply plugin: 'com.android.application' // Add the following line: apply plugin: 'com.google.gms.google-services' // Google Services plugin android { // ... }
Firebase 콘솔에서 작업 설정이 완료되었습니다. 아래에서 계속해서 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 제품의 라이브러리 종속성 을 포함합니다.애널리틱스 사용
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 }
애널리틱스가 사용 설정되지 않음
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 제품용 라이브러리 를 포함합니다.애널리틱스 사용
# 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}")
애널리틱스가 사용 설정되지 않음
# 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}")
모든 종속성이 필요한 버전을 갖도록 앱을 동기화하십시오.
애널리틱스를 추가한 경우 앱을 실행하여 Firebase를 성공적으로 통합했다는 확인을 Firebase에 보냅니다. 그렇지 않으면 확인 단계를 건너뛸 수 있습니다.
기기 로그에 초기화가 완료되었다는 Firebase 확인이 표시됩니다. 네트워크 액세스 권한이 있는 에뮬레이터에서 앱을 실행한 경우 Firebase 콘솔 에서 앱 연결이 완료되었음을 알립니다.
설정이 완료되었습니다. C++ 앱이 Firebase 서비스를 사용하도록 등록 및 구성되었습니다.
사용 가능한 라이브러리
참조 문서 및 GitHub 의 오픈 소스 SDK 릴리스에서 C++ Firebase 라이브러리에 대해 자세히 알아보세요.
Android용 사용 가능한 라이브러리 (CMake 사용)
Apple 플랫폼용 C++ 라이브러리 는 이 설정 페이지의 Apple 플랫폼(iOS+) 버전에 나열되어 있습니다.
Firebase 제품 | 라이브러리 참조 ( firebaseCpp.dependencies build.gradle 파일용) | 라이브러리 참조 ( firebase_libs CMakeLists.txt 파일의 경우) |
---|---|---|
애드몹 | admob | firebase_admob (필수) firebase_analytics (필수) firebase_app |
해석학 | analytics | firebase_analytics (필수) firebase_app |
입증 | auth | firebase_auth (필수) firebase_app |
클라우드 파이어스토어 | firestore | firebase_firestore (필수) firebase_auth (필수) firebase_app |
클라우드 함수 | functions | firebase_functions (필수) firebase_app |
클라우드 메시징 | messaging | firebase_messaging (권장) firebase_analytics (필수) firebase_app |
클라우드 스토리지 | storage | firebase_storage (필수) firebase_app |
동적 링크 | dynamicLinks | firebase_dynamic_links (권장) firebase_analytics (필수) firebase_app |
실시간 데이터베이스 | database | firebase_database (필수) firebase_app |
원격 구성 | 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 String Resources 생성을 자동화할 수 있습니다.
프로가드
많은 Android 빌드 시스템은 릴리스 모드 빌드에 ProGuard 를 사용하여 애플리케이션 크기를 줄이고 Java 소스 코드를 보호합니다.
ProGuard를 사용하는 경우 ProGuard 구성에서 사용 중인 Firebase C++ 라이브러리에 해당하는 libs/android/*.pro
에 파일을 추가해야 합니다.
예를 들어 Gradle에서 Google 애널리틱스를 사용하는 경우 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 및 Google Play 서비스
대부분의 Android용 Google 모바일 광고 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
사용 중입니다.
데스크톱 워크플로 설정( 베타 )
게임을 만들 때 먼저 데스크톱 플랫폼에서 게임을 테스트한 다음 나중에 개발 단계에서 모바일 장치에 배포하고 테스트하는 것이 훨씬 쉬운 경우가 많습니다. 이 워크플로를 지원하기 위해 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 콘솔 설정 워크플로에 입력한 C++ 프로젝트 ID가 포함되어 있습니다. 구성 파일에 대해 자세히 알아보려면 Firebase 프로젝트 이해 를 방문하세요.
C++ 프로젝트에 Firebase SDK를 추가합니다.
아래 단계는 지원되는 Firebase 제품 을 C++ 프로젝트에 추가하는 방법의 예입니다. 이 예에서는 Firebase 인증 및 Firebase 실시간 데이터베이스를 추가하는 과정을 안내합니다.
FIREBASE_CPP_SDK_DIR
환경 변수를 압축 해제된 Firebase C++ SDK의 위치로 설정합니다.프로젝트의
CMakeLists.txt
파일에 사용하려는 Firebase 제품의 라이브러리 를 포함하여 다음 콘텐츠를 추가합니다. 예를 들어 Firebase 인증 및 Firebase 실시간 데이터베이스를 사용하려면 다음을 수행합니다.# 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 사용) |
---|---|
입증 | firebase_auth (필수) firebase_app |
클라우드 파이어스토어 | firebase_firestore firebase_auth firebase_app |
클라우드 함수 | firebase_functions (필수) firebase_app |
클라우드 스토리지 | firebase_storage (필수) firebase_app |
실시간 데이터베이스 | firebase_database (필수) firebase_app |
원격 구성 | firebase_remote_config (필수) firebase_app |
Firebase는 Windows, macOS 및 Linux용으로 빌드할 때 편의를 위해 나머지 데스크톱 라이브러리를 스텁(비기능) 구현으로 제공합니다. 따라서 데스크톱을 대상으로 하는 코드를 조건부로 컴파일할 필요가 없습니다.
실시간 데이터베이스 데스크탑
데스크톱용 실시간 데이터베이스 SDK는 REST를 사용하여 데이터베이스에 액세스하므로 데스크톱에서 Query::OrderByChild()
와 함께 사용 하는 인덱스를 선언 해야 합니다. 그렇지 않으면 리스너가 실패합니다.
데스크톱 설정에 대한 추가 정보
Windows 라이브러리
Windows의 경우 다음을 기준으로 라이브러리 버전이 제공됩니다.
- 빌드 플랫폼: 32비트(x86) 대 64비트(x64) 모드
- Windows 런타임 환경: 다중 스레드/MT 대 다중 스레드 DLL/MD
- 대상: 릴리스와 디버그
다음 라이브러리는 Visual Studio 2015 및 2017을 사용하여 테스트되었습니다.
Windows에서 C++ 데스크톱 앱을 빌드할 때 다음 Windows SDK 라이브러리를 프로젝트에 연결합니다. 자세한 내용은 컴파일러 설명서를 참조하십시오.
Firebase C++ 라이브러리 | Windows SDK 라이브러리 종속성 |
---|---|
입증 | advapi32, ws2_32, crypt32 |
클라우드 파이어스토어 | advapi32, ws2_32, crypt32, rpcrt4, ole32, shell32 |
클라우드 기능 | advapi32, ws2_32, crypt32, rpcrt4, ole32 |
클라우드 스토리지 | advapi32, ws2_32, crypt32 |
실시간 데이터베이스 | advapi32, ws2_32, crypt32, iphlpapi, psapi, userenv |
원격 구성 | advapi32, ws2_32, crypt32, rpcrt4, ole32 |
macOS 라이브러리
macOS(Darwin)의 경우 64비트(x86_64) 플랫폼용 라이브러리 버전이 제공됩니다. 편의를 위해 프레임워크도 제공됩니다.
macOS 라이브러리는 Xcode 13.3.1을 사용하여 테스트되었습니다.
macOS에서 C++ 데스크톱 앱을 빌드할 때 프로젝트에 다음을 연결합니다.
-
pthread
시스템 라이브러리 -
CoreFoundation
macOS 시스템 프레임워크 -
Foundation
macOS 시스템 프레임워크 -
Security
macOS 시스템 프레임워크 -
GSS
macOS 시스템 프레임워크 -
Kerberos
macOS 시스템 프레임워크 -
SystemConfiguration
macOS 시스템 프레임워크
자세한 내용은 컴파일러 설명서를 참조하십시오.
리눅스 라이브러리
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 Console에서 프로젝트에 대한 예산 알림 을 설정하세요.
- Firebase Console에서 사용량 및 결제 대시보드 를 모니터링하여 여러 Firebase 서비스에서 프로젝트 사용량을 전체적으로 파악하세요.
- Firebase 출시 체크리스트 를 검토하세요.