Erste Schritte mit Firebase SQL Connect für Android

In dieser Kurzanleitung erstellen und stellen Sie eine kleine Beispieldatenbank bereit und greifen über eine Android-App darauf zu.

Vorbereitung

Für diese Kurzanleitung benötigen Sie Folgendes:

  • Eine Umgebung mit den folgenden installierten Tools:
    • Eine aktuelle Version von Android Studio.
    • Die Firebase CLI Wenn Sie NPM installiert haben, führen Sie folgenden Befehl aus:
      npm install -g firebase-tools@latest
      Andernfalls finden Sie in der Dokumentation eine Installationsanleitung.
  • Ein Google-Konto.

Anleitung

Anleitung

1. Ein neues Android Studio-Projekt erstellen

Erstellen Sie in Android Studio ein neues Projekt mit der Vorlage Empty Activity (Leere Aktivität).

Nennen Sie das Projekt Quickstart App mit dem Paketnamen com.example.quickstartapp.

Dialogfeld „Neues Projekt“ in Android Studio

2. Firebase zu Ihrem Android Studio-Projekt hinzufügen

Fügen Sie den build.gradle.kts-Dateien die Firebase-Abhängigkeiten und das Kotlin-Serialisierungs-Plug-in hinzu.

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. Firebase-Projekt initialisieren

Wechseln Sie zum Android Studio-Projektverzeichnis und initialisieren Sie dort ein Firebase-Projekt.

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

Wählen Sie bei entsprechender Aufforderung die folgenden Optionen aus:

  • Erstellen Sie ein neues Firebase-Projekt.
  • Erstellen Sie kein Schema mit Gemini. In diesem Tutorial verwenden Sie ein vorgefertigtes Beispielschema.
  • Stellen Sie eine Cloud SQL-Instanz und -Datenbank für den kostenlosen Testzeitraum bereit.

Übernehmen Sie für alle anderen Aufforderungen die Standardwerte.

Registrieren Sie als Nächstes Ihre Android-App in Ihrem Firebase-Projekt.

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

4. Beispielhafte GraphQL-Definitionen ansehen

In SQL Connect definieren Sie alle Datenbankschemas und ‑vorgänge mit GraphQL. Als Sie Ihr Projekt initialisiert haben, hat die Firebase-Befehlszeile einige Beispieldefinitionen erstellt, damit Sie loslegen können.

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

5. Schemas und Vorgänge bereitstellen

Wenn Sie Änderungen an Ihren Datenbankschemas, Abfragen oder Mutationen vornehmen, müssen Sie sie bereitstellen, damit die Änderungen in der Datenbank wirksam werden.

firebase deploy --only dataconnect

6. Datenbank mit Beispieldaten füllen

Anhand dieser Startdaten können Sie die Beispiel-App testen. Beachten Sie, dass Sie in diesem Schritt beliebigen GraphQL-Code ausführen, was für administrative Aufgaben zulässig ist.

firebase dataconnect:execute dataconnect/seed_data.gql

7. Android-Client-SDK generieren

Mit diesem Befehl werden Ihre GraphQL-Definitionen verwendet, um ein Android-Client-SDK speziell für Ihre Datenbank zu generieren. Sie verwenden diese Bibliothek in Ihrer Client-App, um alle Datenbankvorgänge auszuführen.

Sie können Bibliotheken für mehrere Plattformen generieren, darunter Swift für iOS, JavaScript für das Web und Flutter, indem Sie connector.yaml Definitionen hinzufügen.

firebase dataconnect:sdk:generate
Automatisch generiertes Android SDK (Auszug)
public interface ExampleConnector : GeneratedConnector<ExampleConnector> {
  override val dataConnect: com.google.firebase.dataconnect.FirebaseDataConnect

  public val listMovies: ListMoviesQuery

  // ...
}

8. Android-Beispielclient schreiben

Ersetzen Sie den Inhalt von app/src/main/java/com/example/sequel/MainActivity.kt durch diese einfache Android-App.

Die App führt den erforderlichen Datenbankzugriff mit einer Funktion aus dem generierten SDK aus.

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. App testen

Führen Sie die Beispiel-App in Android Studio aus, um sie in Aktion zu sehen.

Nächste Schritte

SQL Connect-VS Code-Erweiterung ausprobieren

Bei der Entwicklung mit SQL Connect empfehlen wir dringend die Verwendung der SQL Connect-VS Code-Erweiterung. Auch wenn Sie Visual Studio Code nicht als primäre Entwicklungsumgebung verwenden, bietet die Erweiterung mehrere Funktionen, die die Entwicklung von Schemas und Vorgängen erleichtern:

  • Ein GraphQL-Sprachserver, der Syntaxprüfung und automatische Vervollständigungsvorschläge speziell für SQL Connect bietet.
  • CodeLens-Schaltflächen in der Zeile mit Ihrem Code, mit denen Sie Daten aus Ihren Schemadefinitionsdateien lesen und in diese schreiben sowie Abfragen und Mutationen aus Ihren Vorgangsdefinitionen ausführen können.
  • Generierte SDKs werden automatisch mit Ihren GraphQL-Definitionen synchronisiert.
  • Vereinfachte Einrichtung des lokalen Emulators.
  • Vereinfachte Bereitstellung in der Produktion.

SQL Connect-Emulator für die lokale Entwicklung verwenden

In dieser Anleitung wurde gezeigt, wie Sie SQL Connect-Schemas und ‑Vorgänge direkt in der Produktionsumgebung bereitstellen. Wahrscheinlich möchten Sie jedoch keine Änderungen an Ihrer Produktionsdatenbank vornehmen, während Sie Ihre App aktiv entwickeln. Richten Sie stattdessen den SQL Connect-Emulator ein und führen Sie Ihre Entwicklungsarbeiten damit durch. Der Emulator richtet eine lokale PGlite-Instanz ein, die sich ähnlich wie eine aktive PostgreSQL-Instanz auf Cloud SQL verhält.

Informationen zum Erstellen von Schemas und Vorgängen für Ihre App

Bei der Entwicklung von Apps mit SQL Connect ist das Design Ihrer Schemas und Vorgänge eine der ersten und wichtigsten Entwicklungsaufgaben, die Sie erledigen müssen.

  • Gemini in der Firebase-Konsole ist ein KI-Tool, mit dem SQL Connect-Schemas aus einer Beschreibung Ihrer App in natürlicher Sprache generiert werden können. Dieses Tool kann Ihnen den Einstieg erleichtern, insbesondere wenn Sie noch nie mit relationalen Datenbanken gearbeitet haben.
  • Alternativ können Sie Datenbankschemas, Abfragen und Mutationen direkt mit GraphQL schreiben. Beginnen Sie mit den Informationen unter SQL Connect-Schemas entwerfen und lesen Sie dann auf den Folgeseiten, wie Sie Vorgänge schreiben.