Configuração nativa Android

Para permitir que o aplicativo Android se conecte com segurança ao seu projeto Firebase, um arquivo de configuração deve ser baixado e adicionado ao seu projeto.

Gerando credenciais Android

No console do Firebase, adicione um novo aplicativo Android e insira os detalhes do seu projeto. O "nome do pacote Android" deve corresponder ao nome do pacote de seus projetos locais, que pode ser encontrado dentro da tag de manifesto no arquivo /android/app/src/main/AndroidManifest.xml em seu projeto.

1280

Baixe o arquivo google-services.json e coloque-o dentro de seu projeto no seguinte local: /android/app/google-services.json.

Configure o Firebase com credenciais do Android

Para permitir que o Firebase no Android use as credenciais, o plug-in google-services deve estar ativado no projeto. Isso requer modificação em dois arquivos no diretório Android.

Primeiro, adicione o plug-in google-services como uma dependência dentro de seu arquivo */android/build.gradle:

buildscript {
  dependencies {
    // ... other dependencies
    classpath 'com.google.gms:google-services:4.3.10'
    // Add me --- /\
  }
}

Por último, execute o plug-in adicionando o seguinte ao seu arquivo /android/app/build.gradle:

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services' // <- Add this line

Configurações adicionais

Android Enabling Multidex

Conforme seu aplicativo começa a crescer com mais dependências nativas, suas compilações podem começar a falhar com o erro comum Falha de execução para a tarefa ': app: mergeDexDebug'. Este erro ocorre quando o Android atinge o limite de 64k métodos.

Uma solução comum é habilitar o suporte multidex para Android. Esta é uma solução comum para resolver o problema, no entanto, é recomendável que você leia a documentação do Android para entender como isso pode afetar seu aplicativo.

Depois de alterado, faça uma nova Build de seu aplicativo com npx react-native run-android.

project.ext {
  set('react-native', [
    versions: [
      // Overriding Build/Android SDK Versions
      android : [
        minSdk    : 16,
        targetSdk : 30,
        compileSdk: 30,
        buildTools: "30.0.2"
      ],

      // Overriding Library SDK Versions
      firebase: [
        // Override Firebase SDK Version
        bom           : "28.3.1"
      ],
    ],
  ])
}

Aumentando a memória de construção do Android

Conforme você adiciona mais módulos Firebase, há uma demanda incrível colocada no sistema de compilação do Android, e as configurações de memória padrão não funcionam. Para evitar erros OutOfMemory durante compilações do Android, você deve descomentar a configuração de memória Gradle alternativa presente em /android/gradle.properties:

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx10248m -XX:MaxPermSize=256m
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

Desempenho Android

No Android, o React Native Firebase usa o executor do pool de threads para fornecer melhor desempenho e recursos gerenciados. Para aumentar a capacidade, você pode ajustar o executor do pool de threads por meio do arquivo firebase.json na raiz do seu projeto:

// <project-root>/firebase.json
{
  "react-native": {
    "android_task_executor_maximum_pool_size": 10,
    "android_task_executor_keep_alive_seconds": 3
  }
}
android_task_executor_maximum_pool_sizeMaximum pool size of ThreadPoolExecutor. Defaults to 1. Larger values typically improve performance when executing large numbers of asynchronous tasks, e.g. Firestore queries. Setting this value to 0 completely disables the pooled executor and all tasks execute in serial per module.
android_task_executor_keep_alive_secondsTempo de manutenção de funcionamento de ThreadPoolExecutor, em segundos. O padrão é 3. Threads em excesso no executor do pool serão encerrados se ficarem inativos por mais do que o tempo de manutenção de funcionamento. Este valor não tem efeito quando o tamanho máximo do pool é inferior a 2.