Premiers pas avec Firebase SQL Connect sur Android

Dans ce guide de démarrage rapide, vous allez créer et déployer un petit exemple de base de données, puis y accéder à partir d'une application Android.

Prérequis

Pour suivre ce guide de démarrage rapide, vous avez besoin des éléments suivants :

  • Un environnement dans lequel les outils suivants sont installés :
    • Une version récente de Android Studio.
    • La CLI Firebase. Si NPM est installé, exécutez la commande suivante :
      npm install -g firebase-tools@latest
      Sinon, consultez la documentation pour obtenir des instructions d'installation.
  • Un compte Google

Tutoriel

Tutoriel

1. Créer un projet Android Studio

Dans Android Studio, créez un projet avec le modèle Empty Activity (Activité vide).

Nommez le projet Quickstart App avec le nom de package com.example.quickstartapp.

Boîte de dialogue "Nouveau projet" d'Android Studio

2. Ajouter Firebase à votre projet Android Studio

Ajoutez les dépendances Firebase et le plug-in de sérialisation Kotlin à vos build.gradle.kts fichiers.

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. Initialiser un projet Firebase

Accédez au répertoire du projet Android Studio et initialisez-y un projet Firebase.

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

Lorsque vous y êtes invité, choisissez les options suivantes :

  • Créer un projet Firebase
  • Ne pas créer de schéma avec Gemini (dans ce tutoriel, vous utiliserez un exemple de schéma prédéfini )
  • Provisionner une instance et une base de données Cloud SQL en essai sans frais

Acceptez les valeurs par défaut pour toutes les autres invites.

Ensuite, enregistrez votre application Android dans votre projet Firebase.

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

4. Examiner les exemples de définitions GraphQL

Dans SQL Connect, vous définissez tous vos schémas et opérations de base de données à l'aide de GraphQL. Lorsque vous avez initialisé votre projet, la Firebase CLI a créé des exemples de définitions pour vous aider à démarrer.

dataconnect/schema/schema.gql (extrait)
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 (extrait)
query ListMovies @auth(level: PUBLIC) {
  movies {
    id
    title
    imageUrl
    genre
  }
}

5. Déployer vos schémas et opérations

Chaque fois que vous modifiez vos schémas, requêtes ou mutations de base de données, vous devez les déployer pour que vos modifications prennent effet dans la base de données.

firebase deploy --only dataconnect

6. Insérer des exemples de données dans la base de données

Ces exemples de données vous permettront de tester l'application exemple. Note que, dans cette étape, vous exécutez du code GraphQL arbitraire, ce qui est autorisé pour les tâches administratives.

firebase dataconnect:execute dataconnect/seed_data.gql

7. Générer un SDK client Android

Cette commande utilise vos définitions GraphQL pour générer un SDK client Android spécifiquement pour votre base de données. Vous utilisez cette bibliothèque dans votre application cliente pour effectuer toutes les opérations de base de données.

Vous pouvez générer des bibliothèques pour plusieurs plates-formes, y compris Swift pour iOS, JavaScript pour le Web et Flutter, en ajoutant des définitions à connector.yaml.

firebase dataconnect:sdk:generate
SDK Android généré automatiquement (extrait)
public interface ExampleConnector : GeneratedConnector<ExampleConnector> {
  override val dataConnect: com.google.firebase.dataconnect.FirebaseDataConnect

  public val listMovies: ListMoviesQuery

  // ...
}

8. Écrire un exemple de client Android

Remplacez le contenu de app/src/main/java/com/example/sequel/MainActivity.kt par cette application Android simple.

Notez que l'application effectue l'accès nécessaire à la base de données à l'aide d'une fonction du SDK généré.

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. Essayer l'appli

Dans Android Studio, exécutez l'exemple d'application pour la voir en action.

Étapes suivantes

Essayer l'extension SQL Connect pour VS Code

Lorsque vous développez avec SQL Connect, nous vous recommandons vivement d'utiliser l' extension SQL Connect pour VS Code. Même si vous n'utilisez pas Visual Studio Code comme environnement de développement principal, l'extension offre plusieurs fonctionnalités qui facilitent le développement de schémas et d'opérations :

  • Un serveur de langage GraphQL, qui fournit une vérification de la syntaxe et des suggestions de saisie semi-automatique spécifiques à SQL Connect
  • Des boutons CodeLens alignés sur votre code qui vous permettent de lire et d'écrire des données à partir de vos fichiers de définition de schéma et d'exécuter des requêtes et des mutations à partir de vos définitions d'opération.
  • La synchronisation automatique de vos SDK générés avec vos définitions GraphQL.
  • La configuration simplifiée de l'émulateur local.
  • Le déploiement simplifié en production.

Utiliser l'émulateur SQL Connect pour le développement local

Bien que ce tutoriel vous ait montré comment déployer SQL Connect des schémas et des opérations directement en production, vous ne souhaiterez probablement pas apporter de modifications à votre base de données de production pendant que vous développez activement votre application. Configurez plutôt l'émulateur SQL Connect et effectuez votre travail de développement sur celui-ci plutôt qu'en production. L'émulateur configure une instance PGlite locale qui se comporte de la même manière qu'une instance PostgreSQL en direct sur Cloud SQL.

Découvrir comment écrire des schémas et opérations pour votre application

Lorsque vous développez des applications avec SQL Connect, la conception de vos schémas et opérations est l'une des premières et des plus importantes tâches de développement que vous effectuerez.

  • Gemini dans la console Firebase est un outil d'IA qui peut générer des schémas SQL Connect à partir d'une description en langage naturel de votre application. Cet outil peut vous aider à démarrer très rapidement, en particulier si vous n'avez jamais travaillé avec des bases de données relationnelles.
  • Vous pouvez également écrire directement des schémas, des requêtes et des mutations de base de données à l'aide de GraphQL. Commencez par les conseils de la section Concevoir des schémasSQL Connect, puis passez aux pages suivantes pour découvrir comment écrire des opérations.