Comece a usar o Firebase SQL Connect no Android

Neste guia de início rápido, você vai criar e implantar um pequeno banco de dados de amostra e acessá-lo em um app Android.

Pré-requisitos

Para concluir este guia de início rápido, você vai precisar do seguinte:

  • Um ambiente com as seguintes ferramentas instaladas:
    • Uma versão recente do Android Studio.
    • A CLI do Firebase. Se você tiver o NPM instalado, execute:
      npm install -g firebase-tools@latest
      Caso contrário, consulte os documentos para instruções de instalação.
  • Uma Conta do Google.

Tutorial

Tutorial

1. Criar um novo projeto do Android Studio

No Android Studio, crie um novo projeto com o modelo Empty Activity.

Nomeie o projeto Quickstart App com o nome do pacote com.example.quickstartapp.

Caixa de diálogo "Novo projeto" do Android Studio

2. Adicionar o Firebase ao projeto do Android Studio

Adicione as dependências do Firebase e o plug-in de serialização do Kotlin aos seus build.gradle.kts arquivos.

QuickstartApp/build.gradle.kts
plugins {
  alias(libs.plugins.android.application) apply false
  alias(libs.plugins.kotlin.compose) apply false

  // Add this line.
  id("com.google.gms.google-services") version "4.4.4" apply false
}
QuickstartApp/app/build.gradle.kts
plugins {
  alias(libs.plugins.android.application)
  alias(libs.plugins.kotlin.compose)

  // Add these lines.
  kotlin("plugin.serialization") version libs.versions.kotlin
  id("com.google.gms.google-services")
}

// ...

dependencies {
  // ...

  // Add these lines.
  implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.11.0")
  implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:1.11.0")

  implementation(platform("com.google.firebase:firebase-bom:34.14.0"))
  implementation("com.google.firebase:firebase-dataconnect")
}

3. Inicializar um projeto do Firebase

Mude para o diretório do projeto do Android Studio e inicialize um projeto do Firebase em it.

cd ~/QuickstartApp
firebase login --reauth
firebase init dataconnect

Quando solicitado, escolha as seguintes opções:

  • Criar um novo projeto do Firebase.
  • Não crie um esquema com o Gemini (neste tutorial, você vai usar um esquema de exemplo pré-criado ).
  • Provisione uma instância e um banco de dados de teste sem custo financeiro Cloud SQL.

Aceite os valores padrão para todos os outros prompts.

Em seguida, registre seu app Android no projeto do Firebase.

firebase apps:create -a com.example.quickstartapp android android-quickstart
firebase apps:sdkconfig android -o app/google-services.json

4. Analisar as definições de exemplo do GraphQL

No SQL Connect, você define todos os esquemas e operações do banco de dados usando o GraphQL. Quando você inicializou o projeto, a Firebase CLI criou algumas definições de exemplo para você começar.

dataconnect/schema/schema.gql (trecho)
type Movie @table {
  title: String!
  imageUrl: String!
  genre: String
}

type MovieMetadata @table {
  movie: Movie! @unique
  rating: Float
  releaseYear: Int
  description: String
}
dataconnect/example/queries.gql (trecho)
query ListMovies @auth(level: PUBLIC) {
  movies {
    id
    title
    imageUrl
    genre
  }
}

5. Implantar esquemas e operações

Sempre que você fizer mudanças nos esquemas, consultas ou mutações do banco de dados, será necessário implantá-los para que as mudanças entrem em vigor no banco de dados.

firebase deploy --only dataconnect

6. Inicializar o banco de dados com dados de amostra

Esses dados iniciais vão fornecer algo para você analisar ao testar o app de exemplo. Observe que, nesta etapa, você está executando o GraphQL arbitrário, que é permitido para tarefas administrativas.

firebase dataconnect:execute dataconnect/seed_data.gql

7. Gerar um SDK do cliente Android

Esse comando usa as definições do GraphQL para gerar um SDK do cliente Android especificamente para seu banco de dados. Você usa essa biblioteca no app cliente para realizar todas as operações do banco de dados.

É possível gerar bibliotecas para várias plataformas, incluindo Swift para iOS, JavaScript para Web e Flutter, adicionando definições a connector.yaml.

firebase dataconnect:sdk:generate
SDK do Android gerado automaticamente (trecho)
public interface ExampleConnector : GeneratedConnector<ExampleConnector> {
  override val dataConnect: com.google.firebase.dataconnect.FirebaseDataConnect

  public val listMovies: ListMoviesQuery

  // ...
}

8. Escrever um cliente Android de amostra

Substitua o conteúdo de app/src/main/java/com/example/sequel/MainActivity.kt por este app Android simples.

Observe que o app conclui o acesso necessário ao banco de dados usando uma função do SDK gerado.

package com.example.quickstartapp

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import com.example.quickstartapp.ui.theme.QuickstartAppTheme
import com.google.firebase.dataconnect.generated.ExampleConnector
import com.google.firebase.dataconnect.generated.ListMoviesQuery
import com.google.firebase.dataconnect.generated.execute
import com.google.firebase.dataconnect.generated.instance

class MainActivity : ComponentActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    enableEdgeToEdge()
    setContent {
      QuickstartAppTheme() {
        Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
          var movies by remember {
            mutableStateOf(emptyList<ListMoviesQuery.Data.MoviesItem>())
          }
          LaunchedEffect(Unit) {
            // Queries need to be executed in a coroutine context
            try {
              movies = ExampleConnector.instance.listMovies.execute().data.movies
            } catch (e: Exception) {
              // TODO: Handle error, e.g., show a Toast or update a state variable to
              //   display an error message.
            }
          }
          LazyColumn(modifier = Modifier.padding(innerPadding)) {
            items(movies) { movie ->
              Text(text = movie.title)
            }
          }
        }
      }
    }
  }
}

9. Instale o app

No Android Studio, execute o app de exemplo para conferir o funcionamento dele.

Próximas etapas

Testar a extensão do SQL Connect VS Code

Ao desenvolver com SQL Connect, recomendamos o uso da extensão do SQL Connect VS Code. Mesmo que você não use o Visual Studio Code como ambiente de desenvolvimento principal, a extensão oferece vários recursos que tornam o desenvolvimento de esquemas e operações mais conveniente:

  • Um servidor de linguagem GraphQL, que oferece verificação de sintaxe e sugestões de preenchimento automático específicas do SQL Connect
  • Botões do CodeLens em linha com o código que permitem ler e gravar dados dos arquivos de definição de esquema e executar consultas e mutações das definições de operação.
  • Mantenha automaticamente os SDKs gerados sincronizados com as definições do GraphQL.
  • Configuração simplificada do emulador local.
  • Implantação simplificada na produção.

Usar o SQL Connect emulador para desenvolvimento local

Embora este tutorial tenha mostrado como implantar SQL Connect esquemas e operações diretamente na produção, provavelmente você não vai querer fazer mudanças no banco de dados de produção enquanto estiver desenvolvendo o app. Em vez disso, configure o SQL Connect emulador e faça o trabalho de desenvolvimento nele em vez da produção. O emulador configura uma instância local do PGlite que se comporta de maneira semelhante a uma instância ativa do PostgreSQL no Cloud SQL.

Aprenda a escrever esquemas e operações para seu app

Ao desenvolver apps com SQL Connect, o design dos esquemas e operações é uma das primeiras e mais importantes tarefas de desenvolvimento que você vai concluir.