Potencialize seus jogos C++ com nossos SDKs Firebase C++, que fornecem uma interface C++ sobre Firebase para iOS e Android.
Acesse o Firebase totalmente a partir do seu código C++, sem precisar escrever nenhum código nativo da plataforma. O Firebase SDK também traduz muitos idiomas específicos de linguagem usados pelo Firebase em uma interface mais familiar para desenvolvedores C++.
Encontre mais informações sobre como potencializar seus jogos com o Firebase em nossa página de jogos do Firebase .
Já adicionou o Firebase ao seu projeto C++? Verifique se você está usando a versão mais recente do Firebase C++ SDK .
Pré-requisitos
Instale seu editor ou IDE preferido, como Android Studio, IntelliJ ou VS Code.
Obtenha o Android SDK .
Certifique-se de que seu projeto atenda a estes requisitos:
Segmenta API de nível 19 (KitKat) ou superior
Usa Gradle e está configurado com CMake
Configure um dispositivo físico ou use um emulador para executar seu aplicativo.
Os emuladores devem usar uma imagem de emulador com o Google Play.
Para algumas bibliotecas C++, os serviços do Google Play são necessários no dispositivo cliente; reveja a lista nesta página.
Faça login no Firebase usando sua conta do Google.
Etapa 2 : criar um projeto do Firebase
Antes de adicionar o Firebase ao seu projeto C++, você precisa criar um projeto Firebase para se conectar ao seu projeto C++. Acesse Entenda os projetos do Firebase para saber mais sobre os projetos do Firebase.
Etapa 3 : registre seu aplicativo no Firebase
Para usar o Firebase em seu aplicativo Android, você precisa registrar seu aplicativo com seu projeto Firebase. Registrar seu aplicativo geralmente é chamado de "adicionar" seu aplicativo ao seu projeto.
Acesse o console do Firebase .
No centro da página de visão geral do projeto, clique no ícone do Android (
) ou Adicionar aplicativo para iniciar o fluxo de trabalho de configuração.Digite o nome do pacote do seu aplicativo no campo de nome do pacote Android .
Um nome de pacote identifica exclusivamente seu aplicativo no dispositivo e na Google Play Store.
Um nome de pacote geralmente é chamado de ID de aplicativo .
Encontre o nome do pacote do seu aplicativo no arquivo Gradle do módulo (nível do aplicativo), geralmente
app/build.gradle
(exemplo de nome do pacote:com.yourcompany.yourproject
).Esteja ciente de que o valor do nome do pacote diferencia maiúsculas de minúsculas e não pode ser alterado para este aplicativo Firebase para Android depois de registrado com seu projeto Firebase.
(Opcional) Insira outras informações do aplicativo: Apelido do aplicativo e Certificado de assinatura de depuração SHA-1 .
Apelido do aplicativo : um identificador de conveniência interno que só é visível para você no console do Firebase
Certificado de assinatura de depuração SHA-1 : um hash SHA-1 é exigido pelo Firebase Authentication (ao usar o Login do Google ou login com número de telefone ) e Firebase Dynamic Links .
Clique em Registrar aplicativo .
Etapa 4 : adicionar o arquivo de configuração do Firebase
Clique em Baixar google-services.json para obter o arquivo de configuração do Firebase Android.
O arquivo de configuração do Firebase contém identificadores exclusivos, mas não secretos, para seu projeto. Para saber mais sobre esse arquivo de configuração, visite Entenda os projetos do Firebase .
Você pode baixar o arquivo de configuração do Firebase novamente a qualquer momento.
Certifique-se de que o nome do arquivo de configuração não contenha caracteres adicionais, como
(2)
.
Abra seu projeto C++ em um IDE e adicione seu arquivo de configuração ao seu projeto:
Compilações do Gradle — Adicione seu arquivo de configuração ao mesmo diretório do arquivo
build.gradle
de nível superior.Outros sistemas de compilação — Consulte Sistemas de compilação personalizados abaixo para gerar Android String Resources .
(Somente compilações Gradle) Para ativar os serviços do Firebase em seu projeto C++, adicione o plug-in google-services ao arquivo
build.gradle
de nível superior.Adicione regras para incluir o plug-in Gradle do Google Services. Verifique se você também possui o repositório Maven do Google.
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 // ... } }
Aplique o plug-in Gradle do Google Services:
apply plugin: 'com.android.application' // Add the following line: apply plugin: 'com.google.gms.google-services' // Google Services plugin android { // ... }
Você concluiu as tarefas de configuração no console do Firebase. Continue para Adicionar SDKs do Firebase C++ abaixo.
Etapa 5 : adicionar SDKs C++ do Firebase
As etapas nesta seção são um exemplo de como adicionar produtos compatíveis do Firebase ao seu projeto Firebase C++.
Baixe o Firebase C++ SDK e descompacte o SDK em algum lugar conveniente.
O Firebase C++ SDK não é específico da plataforma, mas contém bibliotecas específicas da plataforma.
No arquivo
gradle.properties
do seu projeto, especifique a localização do SDK descompactado:systemProp.firebase_cpp_sdk.dir=full-path-to-SDK
No arquivo
settings.gradle
do seu projeto, adicione o seguinte conteúdo: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"
No arquivo Gradle do módulo (nível do aplicativo) (geralmente
app/build.gradle
), adicione o conteúdo a seguir.
Inclua as dependências da biblioteca para os produtos Firebase que você deseja usar em seu aplicativo.Análise habilitada
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 }
Análise não habilitada
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 }
No arquivo
CMakeLists.txt
do seu projeto, adicione o seguinte conteúdo.
Inclua as bibliotecas dos produtos Firebase que você deseja usar em seu aplicativo.Análise habilitada
# 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}")
Análise não habilitada
# 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}")
Sincronize seu aplicativo para garantir que todas as dependências tenham as versões necessárias.
Se você adicionou o Analytics, execute seu aplicativo para enviar ao Firebase a verificação de que você integrou o Firebase com sucesso. Caso contrário, você pode pular a etapa de verificação.
Os logs do seu dispositivo exibirão a verificação do Firebase de que a inicialização foi concluída. Se você executou seu aplicativo em um emulador com acesso à rede, o Firebase console notificará que a conexão do aplicativo foi concluída.
Está tudo pronto! Seu aplicativo C++ está registrado e configurado para usar os serviços do Firebase.
Bibliotecas disponíveis
Saiba mais sobre as bibliotecas C++ Firebase na documentação de referência e em nosso SDK de código aberto no GitHub .
Bibliotecas disponíveis para Android (usando CMake)
Observe que as bibliotecas C++ para iOS estão listadas na versão iOS desta página de configuração .
Produto Firebase | Referências de biblioteca ( firebaseCpp.dependencies para o arquivo build.gradle ) | Referências de biblioteca ( firebase_libs para arquivo CMakeLists.txt ) |
---|---|---|
AdMob | admob | firebase_admob (obrigatório) firebase_analytics (obrigatório) firebase_app |
Análise | analytics | firebase_analytics (obrigatório) firebase_app |
Autenticação | auth | firebase_auth (obrigatório) firebase_app |
Cloud Firestore | firestore | firebase_firestore (obrigatório) firebase_auth (obrigatório) firebase_app |
Funções da nuvem | functions | firebase_functions (obrigatório) firebase_app |
Mensagens na nuvem | messaging | firebase_messaging (recomendado) firebase_analytics (obrigatório) firebase_app |
Armazenamento na núvem | storage | firebase_storage (obrigatório) firebase_app |
Links dinâmicos | dynamicLinks | firebase_dynamic_links (recomendado) firebase_analytics (obrigatório) firebase_app |
banco de dados em tempo real | database | firebase_database (obrigatório) firebase_app |
Configuração Remota | remoteConfig | firebase_remote_config (recomendado) firebase_analytics (obrigatório) firebase_app |
Informações adicionais para configuração móvel
Obtenha relatórios de falhas do NDK
O Firebase Crashlytics oferece suporte a relatórios de falhas para aplicativos que usam bibliotecas nativas do Android. Para saber mais, consulte Obter relatórios de falhas do Android NDK .
Sistemas de construção personalizados
O Firebase fornece o script generate_xml_from_google_services_json.py
para converter google-services.json
em recursos .xml
que você pode incluir em seu projeto. Este script aplica a mesma transformação que o plug-in Gradle do Google Play Services executa ao criar aplicativos Android.
Se você não construir usando Gradle (por exemplo, você usa ndk-build, makefiles, Visual Studio, etc.), você pode usar este script para automatizar a geração de Android String Resources .
ProGuard
Muitos sistemas de compilação Android usam o ProGuard para compilações no modo Release para reduzir o tamanho dos aplicativos e proteger o código-fonte Java.
Se você usar o ProGuard, precisará adicionar os arquivos em libs/android/*.pro
correspondentes às bibliotecas Firebase C++ que está usando na configuração do ProGuard.
Por exemplo, com o Gradle, se você estiver usando o Google Analytics, seu arquivo build.gradle
ficaria assim:
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 } } }
Requisito de serviços do Google Play
A maioria das bibliotecas Firebase C++ exige que os serviços do Google Play estejam no dispositivo Android do cliente. Se uma biblioteca Firebase C++ retornar kInitResultFailedMissingDependency
na inicialização, isso significa que o Google Play Services não está disponível no dispositivo cliente (o que significa que ele precisa ser atualizado, reativado, permissões corrigidas etc.). A biblioteca Firebase não pode ser usada até que a situação no dispositivo cliente seja corrigida.
Você pode descobrir por que o Google Play Services está indisponível no dispositivo cliente (e tentar corrigi-lo) usando as funções em google_play_services/availability.h
.
A tabela a seguir lista se os serviços do Google Play são necessários em um dispositivo cliente para cada produto Firebase compatível.
Biblioteca Firebase C++ | Os serviços do Google Play são necessários no dispositivo cliente? |
---|---|
AdMob | Não é necessário (geralmente) |
Análise | Não requerido |
Autenticação | Requeridos |
Cloud Firestore | Requeridos |
Funções da nuvem | Requeridos |
Mensagens na nuvem | Requeridos |
Armazenamento na núvem | Requeridos |
Links dinâmicos | Requeridos |
banco de dados em tempo real | Requeridos |
Configuração Remota | Requeridos |
AdMob e serviços do Google Play
A maioria das versões do SDK de anúncios para celular do Google para Android pode funcionar corretamente sem os serviços do Google Play no dispositivo cliente. No entanto, se você estiver usando a dependência com.google.android.gms:play-services-ads-lite
, em vez da dependência padrão com.google.firebase:firebase-ads
listada acima, os serviços do Google Play serão necessários .
A inicialização da AdMob só retornará kInitResultFailedMissingDependency
quando ambos os itens a seguir forem verdadeiros:
- Os serviços do Google Play não estão disponíveis no dispositivo cliente.
- Você está usando
com.google.android.gms:play-services-ads-lite
.
Configurar um fluxo de trabalho de desktop ( beta )
Quando você está criando um jogo, geralmente é muito mais fácil testá-lo primeiro em plataformas de desktop e, posteriormente, implantar e testar em dispositivos móveis no desenvolvimento. Para oferecer suporte a esse fluxo de trabalho, fornecemos um subconjunto dos SDKs Firebase C++ que podem ser executados no Windows, macOS, Linux e no editor C++.
Para fluxos de trabalho de desktop, você precisa concluir o seguinte:
- Configure seu projeto C++ para CMake.
- Criar um projeto do Firebase
- Registre seu aplicativo (iOS ou Android) com o Firebase
- Adicionar um arquivo de configuração do Firebase para plataforma móvel
Crie uma versão para desktop do arquivo de configuração do Firebase:
Se você adicionou o arquivo
google-services.json
do Android — quando você executa seu aplicativo, o Firebase localiza esse arquivo móvel e gera automaticamente um arquivo de configuração do Firebase para desktop (google-services-desktop.json
).Se você adicionou o arquivo
GoogleService-Info.plist
do iOS — antes de executar seu aplicativo, você precisa converter esse arquivo móvel em um arquivo de configuração do Firebase para desktop . Para converter o arquivo, execute o seguinte comando no mesmo diretório do arquivoGoogleService-Info.plist
:generate_xml_from_google_services_json.py --plist -i GoogleService-Info.plist
Este arquivo de configuração da área de trabalho contém o ID do projeto C++ que você inseriu no fluxo de trabalho de configuração do Firebase console. Acesse Entenda os projetos do Firebase para saber mais sobre arquivos de configuração.
Adicione SDKs do Firebase ao seu projeto C++.
As etapas abaixo servem como exemplo de como adicionar qualquer produto compatível do Firebase ao seu projeto C++. Neste exemplo, explicamos como adicionar o Firebase Authentication e o Firebase Realtime Database.
Defina sua variável de ambiente
FIREBASE_CPP_SDK_DIR
para o local do Firebase C++ SDK descompactado.Ao arquivo
CMakeLists.txt
do seu projeto, adicione o seguinte conteúdo, incluindo as bibliotecas dos produtos Firebase que você deseja usar. Por exemplo, para usar o Firebase Authentication e o 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}")
Execute seu aplicativo C++.
Bibliotecas disponíveis (desktop)
O Firebase C++ SDK inclui suporte para fluxo de trabalho de desktop para um subconjunto de recursos, permitindo que certas partes do Firebase sejam usadas em compilações autônomas de desktop no Windows, macOS e Linux.
Produto Firebase | Referências de biblioteca (usando CMake) |
---|---|
Autenticação | firebase_auth (obrigatório) firebase_app |
Cloud Firestore | firebase_firestore firebase_auth firebase_app |
Funções da nuvem | firebase_functions (obrigatório) firebase_app |
Armazenamento na núvem | firebase_storage (obrigatório) firebase_app |
banco de dados em tempo real | firebase_database (obrigatório) firebase_app |
Configuração Remota | firebase_remote_config (obrigatório) firebase_app |
O Firebase fornece as bibliotecas de desktop restantes como implementações stub (não funcionais) para conveniência ao compilar para Windows, macOS e Linux. Portanto, você não precisa compilar código condicionalmente para direcionar a área de trabalho.
Área de trabalho do banco de dados em tempo real
O Realtime Database SDK para desktop usa REST para acessar seu banco de dados, portanto, você deve declarar os índices que usa com Query::OrderByChild()
no desktop ou seus ouvintes falharão.
Informações adicionais para configuração da área de trabalho
bibliotecas do Windows
Para Windows, as versões de biblioteca são fornecidas com base no seguinte:
- Plataforma de construção: modo de 32 bits (x86) vs 64 bits (x64)
- Ambiente de tempo de execução do Windows: Multithreaded / MT vs Multithreaded DLL /MD
- Alvo: Lançamento vs Depuração
Observe que as seguintes bibliotecas foram testadas usando o Visual Studio 2015 e 2017.
Ao criar aplicativos de área de trabalho C++ no Windows, vincule as seguintes bibliotecas SDK do Windows ao seu projeto. Consulte a documentação do compilador para obter mais informações.
Biblioteca Firebase C++ | Dependências da biblioteca do SDK do Windows |
---|---|
Autenticação | advapi32, ws2_32, crypt32 |
Cloud Firestore | advapi32, ws2_32, crypt32, rpcrt4, ole32, shell32 |
Funções da nuvem | advapi32, ws2_32, crypt32, rpcrt4, ole32 |
Armazenamento na núvem | advapi32, ws2_32, crypt32 |
banco de dados em tempo real | advapi32, ws2_32, crypt32, iphlpapi, psapi, userenv |
Configuração Remota | advapi32, ws2_32, crypt32, rpcrt4, ole32 |
bibliotecas macOS
Para macOS (Darwin), as versões da biblioteca são fornecidas para a plataforma de 64 bits (x86_64). Estruturas também são fornecidas para sua conveniência.
Observe que as bibliotecas do macOS foram testadas usando o Xcode 13.3.1.
Ao criar aplicativos de desktop C++ no macOS, vincule o seguinte ao seu projeto:
- biblioteca do sistema
pthread
- Estrutura do sistema macOS
CoreFoundation
- Estrutura do sistema macOS
Foundation
- Estrutura do sistema macOS de
Security
- Estrutura do sistema
GSS
macOS - Estrutura do sistema
Kerberos
macOS -
SystemConfiguration
estrutura do sistema macOS
Consulte a documentação do compilador para obter mais informações.
Bibliotecas do Linux
Para Linux, as versões da biblioteca são fornecidas para plataformas de 32 bits (i386) e 64 bits (x86_64).
Observe que as bibliotecas Linux foram testadas usando GCC 4.8.0, GCC 7.2.0 e Clang 5.0 no Ubuntu.
Ao criar aplicativos de desktop C++ no Linux, vincule a biblioteca do sistema pthread
ao seu projeto. Consulte a documentação do compilador para obter mais informações. Se você estiver construindo com GCC 5 ou posterior, defina -D_GLIBCXX_USE_CXX11_ABI=0
.
Próximos passos
Explore exemplos de aplicativos do Firebase .
Explore o SDK de código aberto no GitHub .
Prepare-se para lançar seu aplicativo:
- Configure alertas de orçamento para seu projeto no Console do Google Cloud.
- Monitore o painel de uso e cobrança no console do Firebase para obter uma visão geral do uso do seu projeto em vários serviços do Firebase.
- Revise a lista de verificação de lançamento do Firebase .