Mulai menggunakan Firebase SQL Connect di Android

Dalam panduan memulai ini, Anda akan membuat dan men-deploy database contoh kecil serta mengaksesnya dari aplikasi Android.

Prasyarat

Untuk menyelesaikan panduan memulai ini, Anda memerlukan hal berikut:

  • Lingkungan dengan alat berikut yang diinstal:
  • Akun Google.

Tutorial

Tutorial

1. Membuat project Android Studio baru

Di Android Studio, buat project baru dengan template Empty Activity.

Beri nama project Quickstart App dengan nama paket com.example.quickstartapp.

Dialog project baru Android Studio

2. Menambahkan Firebase ke project Android Studio

Tambahkan dependensi Firebase dan plugin serialisasi Kotlin ke file build.gradle.kts Anda.

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.5.0" 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.15.0"))
  implementation("com.google.firebase:firebase-dataconnect")
}

3. Menginisialisasi project Firebase

Ubah ke direktori project Android Studio dan lakukan inisialisasi project Firebase di dalamnya.

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

Jika diminta, pilih opsi berikut:

  • Buat project Firebase baru.
  • Jangan membuat skema dengan Gemini (dalam tutorial ini, Anda akan menggunakan skema contoh bawaan ).
  • Sediakan instance dan database Cloud SQL uji coba gratis.

Terima nilai default untuk semua perintah lainnya.

Selanjutnya, daftarkan aplikasi Android Anda di project Firebase.

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

4. Meninjau definisi GraphQL contoh

Di SQL Connect, Anda menentukan semua skema dan operasi database menggunakan GraphQL. Saat Anda menginisialisasi project, Firebase CLI membuat beberapa definisi contoh untuk membantu Anda memulai.

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

5. Men-deploy skema dan operasi

Setiap kali Anda membuat perubahan pada skema, kueri, atau mutasi database, Anda harus men-deploy-nya agar perubahan diterapkan pada database.

firebase deploy --only dataconnect

6. Mengisi database dengan data contoh

Data awal ini akan memberi Anda sesuatu untuk dilihat saat menguji aplikasi contoh. Perhatikan bahwa pada langkah ini Anda menjalankan GraphQL arbitrer, yang diizinkan untuk tugas administratif.

firebase dataconnect:execute dataconnect/seed_data.gql

7. Membuat Android client SDK

Perintah ini menggunakan definisi GraphQL Anda untuk membuat Android client SDK khusus untuk database Anda. Anda menggunakan library ini di aplikasi klien untuk melakukan semua operasi database.

Anda dapat membuat library untuk beberapa platform, termasuk Swift untuk iOS, JavaScript untuk web, dan Flutter, dengan menambahkan definisi ke connector.yaml.

firebase dataconnect:sdk:generate
Android SDK yang dibuat otomatis (excerpt)
public interface ExampleConnector : GeneratedConnector<ExampleConnector> {
  override val dataConnect: com.google.firebase.dataconnect.FirebaseDataConnect

  public val listMovies: ListMoviesQuery

  // ...
}

8. Menulis klien Android contoh

Ganti konten app/src/main/java/com/example/quickstartapp/MainActivity.kt dengan aplikasi Android sederhana ini.

Perhatikan bahwa aplikasi menyelesaikan akses database yang diperlukan menggunakan fungsi dari SDK yang dibuat.

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. Coba aplikasinya

Dari Android Studio, jalankan aplikasi contoh untuk melihatnya beraksi.

Langkah berikutnya

Mencoba ekstensi VS Code SQL Connect

Saat mengembangkan dengan SQL Connect, sebaiknya gunakan ekstensi VS Code SQL Connect. Meskipun Anda tidak menggunakan Visual Studio Code sebagai lingkungan pengembangan utama, ekstensi ini menyediakan beberapa fitur yang membuat pengembangan skema dan operasi menjadi lebih mudah:

  • Server bahasa GraphQL, yang menyediakan pemeriksaan sintaksis dan saran pelengkapan otomatis khusus untuk SQL Connect
  • Tombol CodeLens sebaris dengan kode Anda yang memungkinkan Anda membaca dan menulis data dari file definisi skema serta menjalankan kueri dan mutasi dari definisi operasi.
  • Menjaga SDK yang dibuat tetap disinkronkan secara otomatis dengan definisi GraphQL Anda.
  • Penyiapan emulator lokal yang disederhanakan.
  • Deployment yang disederhanakan ke produksi.

Menggunakan emulator SQL Connect untuk pengembangan lokal

Meskipun tutorial ini menunjukkan cara men-deploy SQL Connect skema dan operasi langsung ke produksi, Anda mungkin tidak ingin membuat perubahan pada database produksi saat Anda aktif mengembangkan aplikasi. Sebagai gantinya, siapkan SQL Connect emulator dan lakukan pekerjaan pengembangan terhadapnya, bukan produksi. Emulator ini menyiapkan instance PGlite lokal yang berperilaku mirip dengan instance PostgreSQL aktif di Cloud SQL.

Mempelajari cara menulis skema dan operasi untuk aplikasi Anda

Saat mengembangkan aplikasi dengan SQL Connect, desain skema dan operasi adalah salah satu tugas pengembangan pertama dan terpenting yang akan Anda selesaikan.

  • Gemini di Firebase konsol adalah alat AI yang dapat membuat skema SQL Connect dari deskripsi bahasa alami aplikasi Anda. Alat ini dapat membantu Anda memulai dengan sangat cepat, terutama jika Anda belum pernah menggunakan database relasional sebelumnya.
  • Atau, Anda dapat menulis skema, kueri, dan mutasi database langsung menggunakan GraphQL. Mulai dengan panduan di Mendesain skema, lalu lanjutkan ke halaman lanjutan untuk mempelajari cara menulis operasi.SQL Connect

Mempelajari cara mendapatkan update real-time dari SQL Connect

Anda dapat menggunakan SQL Connect untuk menulis aplikasi klien yang bereaksi terhadap perubahan data secara real time. Lihat Mendapatkan update real-time dari SQL Connect.