Pierwsze kroki z Firebase SQL Connect na Androidzie

W tym krótkim wprowadzeniu utworzysz i wdrożysz małą przykładową bazę danych oraz uzyskasz do niej dostęp z aplikacji na Androida.

Wymagania wstępne

Aby ukończyć to krótkie wprowadzenie, potrzebujesz:

  • Środowisko z zainstalowanymi tymi narzędziami:
    • najnowsza wersja Android Studio,
    • wiersz poleceń Firebase. Jeśli masz zainstalowany NPM, uruchom:
      npm install -g firebase-tools@latest
      W przeciwnym razie zapoznaj się z dokumentacją zawierającą instrukcje instalacji.
  • konto Google.

Samouczek

Samouczek

1. Utwórz nowy projekt w Android Studio

W Android Studio utwórz nowy projekt, korzystając z szablonu Pusta aktywność.

Nazwij projekt Quickstart App i użyj nazwy pakietu com.example.quickstartapp.

Okno nowego projektu w Android Studio

2. Dodaj Firebase do projektu w Android Studio

Dodaj zależności Firebase i wtyczkę serializacji Kotlin do swoich build.gradle.kts plików.

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. Zainicjuj projekt w Firebase

Przejdź do katalogu projektu Android Studio i zainicjuj w nim projekt w Firebase.

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

Po wyświetleniu pytania wybierz te opcje:

  • Utwórz nowy projekt w Firebase.
  • Nie twórz schematu za pomocą Gemini (w tym samouczku użyjesz gotowego przykładowego schematu).
  • Utwórz bezpłatną instancję próbną Cloud SQL i bazę danych.

Zaakceptuj domyślne wartości we wszystkich innych promptach.

Następnie zarejestruj aplikację na Androida w projekcie w Firebase.

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

4. Sprawdź przykładowe definicje GraphQL

W SQL Connect wszystkie schematy i operacje bazy danych definiujesz za pomocą GraphQL. Gdy zainicjujesz projekt, interfejs wiersza poleceń Firebase utworzy kilka przykładowych definicji, które pomogą Ci zacząć.

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

5. Wdróż schematy i operacje

Za każdym razem, gdy wprowadzisz zmiany w schematach bazy danych, zapytaniach lub mutacjach, musisz wdrożyć je, aby zmiany zaczęły obowiązywać w bazie danych.

firebase deploy --only dataconnect

6. Wypełnij bazę danych przykładowymi danymi

Te dane początkowe pozwolą Ci sprawdzić przykładową aplikację. Pamiętaj że w tym kroku wykonujesz dowolny kod GraphQL, co jest dozwolone w przypadku zadań administracyjnych.

firebase dataconnect:execute dataconnect/seed_data.gql

7. Wygeneruj pakiet SDK klienta na Androida

To polecenie używa definicji GraphQL do wygenerowania pakietu SDK klienta na Androida specjalnie dla Twojej bazy danych. Używasz tej biblioteki w aplikacji klienckiej do wykonywania wszystkich operacji na bazie danych.

Możesz wygenerować biblioteki dla wielu platform, w tym Swift na iOS, JavaScript na potrzeby internetu i Fluttera, dodając definicje do connector.yaml.

firebase dataconnect:sdk:generate
Automatycznie wygenerowany Android SDK (fragment)
public interface ExampleConnector : GeneratedConnector<ExampleConnector> {
  override val dataConnect: com.google.firebase.dataconnect.FirebaseDataConnect

  public val listMovies: ListMoviesQuery

  // ...
}

8. Napisz przykładowego klienta na Androida

Zastąp zawartość pliku app/src/main/java/com/example/sequel/MainActivity.kt tą prostą aplikacją na Androida.

Zwróć uwagę, że aplikacja wykonuje niezbędny dostęp do bazy danych za pomocą funkcji z wygenerowanego pakietu SDK.

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. Wypróbuj aplikację

W Android Studio uruchom przykładową aplikację, aby zobaczyć, jak działa.

Dalsze kroki

Wypróbuj rozszerzenie SQL Connect dla VS Code

Podczas programowania za pomocą SQL Connect zdecydowanie zalecamy używanie rozszerzenia SQL Connect dla VS Code. Nawet jeśli nie używasz Visual Studio Code jako głównego środowiska programistycznego rozszerzenie udostępnia kilka funkcji, które ułatwiają tworzenie schematów i operacji

  • Serwer języka GraphQL, który zapewnia sprawdzanie składni i sugestie autouzupełniania specyficzne dla SQL Connect
  • Przyciski CodeLens w wierszu kodu, które umożliwiają odczytywanie i zapisywanie danych z plików definicji schematu definicji operacji.
  • Automatyczne synchronizowanie wygenerowanych pakietów SDK z definicjami GraphQL.
  • Uproszczona konfiguracja emulatora lokalnego.
  • Uproszczone wdrażanie w środowisku produkcyjnym.

Używaj emulatora SQL Connect do programowania lokalnego

W tym samouczku pokazaliśmy, jak wdrożyć SQL Connect schematy i operacje bezpośrednio w środowisku produkcyjnym, ale prawdopodobnie nie będziesz chcieć wprowadzać zmian w bazie danych w środowisku produkcyjnym podczas aktywnego programowania aplikacji. Zamiast tego skonfiguruj SQL Connect emulator i programuj w nim, a nie w środowisku produkcyjnym. Emulator konfiguruje lokalną instancję PGlite, która działa podobnie do aktywnej instancji PostgreSQL w Cloud SQL.

Dowiedz się, jak pisać schematy i operacje dla aplikacji

Podczas tworzenia aplikacji za pomocą SQL Connect projektowanie schematów i operacji jest jednym z pierwszych i najważniejszych zadań programistycznych.

  • Gemini w konsoli Firebase to narzędzie AI które może generować schematy SQL Connect na podstawie opisu aplikacji w języku naturalnym. To narzędzie może pomóc Ci szybko zacząć, zwłaszcza jeśli nigdy wcześniej nie pracowałeś(-aś) z relacyjnymi bazami danych.
  • Możesz też pisać schematy bazy danych, zapytania i mutacje bezpośrednio za pomocą GraphQL. Zacznij od wskazówek w Projektowanie SQL Connect schematów, a następnie przejdź do kolejnych stron, aby dowiedzieć się, jak pisać operacje.