เริ่มต้นใช้งาน Firebase SQL Connect บน Android

ในการเริ่มต้นอย่างรวดเร็วนี้ คุณจะได้สร้างและติดตั้งใช้งานฐานข้อมูลตัวอย่างขนาดเล็ก รวมถึงเข้าถึงฐานข้อมูลดังกล่าวจากแอป Android

ข้อกำหนดเบื้องต้น

คุณต้องมีสิ่งต่อไปนี้จึงจะทำตามการเริ่มต้นอย่างรวดเร็วนี้ได้

  • สภาพแวดล้อมที่มีเครื่องมือต่อไปนี้ติดตั้งอยู่
    • Android Studio เวอร์ชันล่าสุด
    • Firebase CLI หากติดตั้ง NPM ไว้ ให้เรียกใช้คำสั่งต่อไปนี้
      npm install -g firebase-tools@latest
      หรือดูเอกสารประกอบสำหรับวิธีการติดตั้ง
  • บัญชี Google

บทแนะนำ

บทแนะนำ

1. สร้างโปรเจ็กต์ Android Studio ใหม่

ใน Android Studio ให้สร้างโปรเจ็กต์ใหม่ด้วยเทมเพลต Empty Activity

ตั้งชื่อโปรเจ็กต์ว่า Quickstart App โดยมีชื่อแพ็กเกจเป็น com.example.quickstartapp

กล่องโต้ตอบโปรเจ็กต์ใหม่ของ Android Studio

2. เพิ่ม Firebase ลงในโปรเจ็กต์ Android Studio

เพิ่มทรัพยากร Dependency ของ Firebase และปลั๊กอินการซีเรียลไลซ์ของ Kotlin ลงใน build.gradle.kts ไฟล์

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

เปลี่ยนเป็นไดเรกทอรีโปรเจ็กต์ Android Studio แล้วเริ่มต้นโปรเจ็กต์ Firebase ใน ไดเรกทอรีดังกล่าว

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

เมื่อได้รับแจ้ง ให้เลือกตัวเลือกต่อไปนี้

  • สร้างโปรเจ็กต์ Firebase ใหม่
  • อย่าสร้างสคีมาด้วย Gemini (ในบทแนะนำนี้ คุณจะใช้สคีมาตัวอย่างที่สร้างไว้ล่วงหน้า )
  • จัดเตรียมฐานข้อมูลและอินสแตนซ์ Cloud SQL สำหรับทดลองใช้ฟรี

ยอมรับค่าเริ่มต้นสำหรับข้อความแจ้งอื่นๆ ทั้งหมด

จากนั้นลงทะเบียนแอป Android ในโปรเจ็กต์ Firebase

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

4. ตรวจสอบคำจำกัดความของ GraphQL ตัวอย่าง

ใน SQL Connect คุณจะกำหนดสคีมาและดำเนินการฐานข้อมูลทั้งหมด โดยใช้ GraphQL เมื่อคุณเริ่มต้นโปรเจ็กต์ Firebase CLI จะสร้างคำจำกัดความตัวอย่างขึ้นมาเพื่อให้คุณเริ่มต้นใช้งานได้

dataconnect/schema/schema.gql (ตัวอย่าง)
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 (ตัวอย่าง)
query ListMovies @auth(level: PUBLIC) {
  movies {
    id
    title
    imageUrl
    genre
  }
}

5. ติดตั้งใช้งานสคีมาและการดำเนินการ

เมื่อใดก็ตามที่คุณทำการเปลี่ยนแปลงสคีมา คำค้นหา หรือการเปลี่ยนแปลงฐานข้อมูล คุณต้อง ติดตั้งใช้งานเพื่อให้การเปลี่ยนแปลงมีผลกับฐานข้อมูล

firebase deploy --only dataconnect

6. ป้อนข้อมูลตัวอย่างลงในฐานข้อมูล

ข้อมูลตัวอย่างนี้จะช่วยให้คุณมีข้อมูลให้ดูเมื่อทดสอบแอปตัวอย่าง โปรดทราบ ว่าในขั้นตอนนี้คุณกำลังเรียกใช้ GraphQL ที่กำหนดเอง ซึ่งระบบอนุญาตให้ทำได้สำหรับ งานดูแลระบบ

firebase dataconnect:execute dataconnect/seed_data.gql

7. สร้าง Android Client SDK

คำสั่งนี้ใช้คำจำกัดความของ GraphQL เพื่อสร้าง Android Client SDK สำหรับฐานข้อมูลของคุณโดยเฉพาะ คุณใช้ไลบรารีนี้ ในแอปไคลเอ็นต์เพื่อดำเนินการฐานข้อมูลทั้งหมด

คุณสามารถสร้างไลบรารีสำหรับหลายแพลตฟอร์ม รวมถึง Swift สำหรับ iOS, JavaScript สำหรับเว็บ และ Flutter ได้โดยเพิ่มคำจำกัดความลงใน connector.yaml

firebase dataconnect:sdk:generate
Android SDK ที่สร้างขึ้นโดยอัตโนมัติ (ตัวอย่าง)
public interface ExampleConnector : GeneratedConnector<ExampleConnector> {
  override val dataConnect: com.google.firebase.dataconnect.FirebaseDataConnect

  public val listMovies: ListMoviesQuery

  // ...
}

8. เขียน Android Client ตัวอย่าง

แทนที่เนื้อหาของ app/src/main/java/com/example/sequel/MainActivity.kt ด้วยแอป Android อย่างง่ายนี้

โปรดสังเกตว่าแอปจะเข้าถึงฐานข้อมูลที่จำเป็นโดยใช้ฟังก์ชันจาก 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. ลองใช้แอป

เรียกใช้แอปตัวอย่างจาก Android Studio เพื่อดูการทำงานของแอป

ขั้นตอนถัดไป

ลองใช้ส่วนขยาย SQL Connect VS Code

เมื่อพัฒนาด้วย SQL Connect เราขอแนะนำให้ใช้ ส่วนขยาย SQL Connect VS Code แม้ว่าคุณจะไม่ได้ใช้ Visual Studio Code เป็นสภาพแวดล้อมการพัฒนาหลัก แต่ส่วนขยายนี้ก็มีฟีเจอร์มากมายที่ช่วยให้การพัฒนาสคีมาและการดำเนินการสะดวกยิ่งขึ้น

  • เซิร์ฟเวอร์ภาษา GraphQL ที่ให้การตรวจสอบไวยากรณ์และคำแนะนำในการเติมข้อความอัตโนมัติที่เฉพาะเจาะจง กับ SQL Connect
  • ปุ่ม CodeLens ที่อยู่ในบรรทัดเดียวกับโค้ด ซึ่งช่วยให้คุณอ่านและเขียนข้อมูลจากไฟล์คำจำกัดความของสคีมา รวมถึงเรียกใช้คำค้นหาและการเปลี่ยนแปลงจากคำจำกัดความของการดำเนินการได้
  • ซิงค์ SDK ที่สร้างขึ้นกับคำจำกัดความของ GraphQL โดยอัตโนมัติ
  • การตั้งค่าโปรแกรมจำลองในเครื่องแบบง่าย
  • การติดตั้งใช้งานในเวอร์ชันที่ใช้งานจริงแบบง่าย

ใช้โปรแกรมจำลอง SQL Connect สำหรับ การพัฒนาในเครื่อง

แม้ว่าบทแนะนำนี้จะแสดงวิธีติดตั้งใช้งานSQL Connect สคีมาและการดำเนินการในเวอร์ชันที่ใช้งานจริงโดยตรง แต่คุณอาจไม่ต้องการ ทำการเปลี่ยนแปลงฐานข้อมูลในเวอร์ชันที่ใช้งานจริงขณะที่กำลังพัฒนา แอปอยู่ ให้ตั้งค่า SQL Connect โปรแกรมจำลอง และทำงานพัฒนาในโปรแกรมจำลองแทนที่จะทำในเวอร์ชันที่ใช้งานจริง โปรแกรมจำลอง จะตั้งค่าอินสแตนซ์ PGlite ในเครื่องซึ่งทำงานคล้ายกับอินสแตนซ์ PostgreSQL ที่ใช้งานจริงใน Cloud SQL

ดูวิธีเขียนสคีมาและ การดำเนินการสำหรับแอป

เมื่อพัฒนาแอปด้วย SQL Connect การออกแบบสคีมาและการดำเนินการ เป็นหนึ่งในงานพัฒนาแรกๆ และสำคัญที่สุดที่คุณจะต้องทำ

  • Gemini ในFirebase คอนโซล เป็นเครื่องมือ AI ที่สร้างสคีมาSQL Connect จากคำอธิบายแอปในภาษาที่เป็นธรรมชาติได้ เครื่องมือนี้จะช่วยให้คุณเริ่มต้นใช้งานได้อย่างรวดเร็ว โดยเฉพาะอย่างยิ่งหากคุณไม่เคยใช้ฐานข้อมูลเชิงสัมพันธ์มาก่อน
  • หรือคุณจะเขียนสคีมา คำค้นหา และการเปลี่ยนแปลงฐานข้อมูล โดยตรงโดยใช้ GraphQL ก็ได้ เริ่มต้นด้วยคำแนะนำใน หัวข้อการออกแบบสคีมาSQL Connect, แล้วไปที่หน้าติดตามเพื่อดูวิธีเขียนการดำเนินการ