Android에서 Firebase SQL Connect 시작하기

이 빠른 시작에서는 작은 샘플 데이터베이스를 만들고 배포한 후 Android 앱에서 액세스합니다.

기본 요건

이 빠른 시작을 완료하려면 다음이 필요합니다.

  • 다음 도구가 설치된 환경:
    • 최신 버전의 Android 스튜디오
    • Firebase CLI NPM이 설치되어 있는 경우 다음을 실행합니다.
      npm install -g firebase-tools@latest
      그렇지 않은 경우 설치 안내를 위한 문서를 참고하세요.
  • Google 계정

튜토리얼

튜토리얼

1. 새 Android 스튜디오 프로젝트 만들기

Android 스튜디오에서 Empty Activity 템플릿으로 새 프로젝트를 만듭니다.

패키지 이름 com.example.quickstartapp으로 프로젝트 이름을 Quickstart App으로 지정합니다.

Android 스튜디오 새 프로젝트 대화상자

2. Android 스튜디오 프로젝트에 Firebase 추가

` build.gradle.kts` 파일에 Firebase 종속 항목과 Kotlin 직렬화 플러그인을 추가합니다.

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. Firebase 프로젝트 초기화

Android 스튜디오 프로젝트 디렉터리로 변경하고 그 안에서 Firebase 프로젝트를 초기화합니다.

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

메시지가 표시되면 다음 옵션을 선택합니다.

  • 새 Firebase 프로젝트를 만듭니다.
  • Gemini로 스키마를 만들지 않습니다 (이 튜토리얼에서는 미리 빌드된 예시 스키마를 사용합니다).
  • 무료 체험판 Cloud SQL 인스턴스와 데이터베이스를 프로비저닝합니다.

다른 모든 프롬프트에 대해서는 기본값을 사용합니다.

다음으로 Firebase 프로젝트에 Android 앱을 등록합니다.

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 클라이언트 SDK 생성

이 명령어는 GraphQL 정의를 사용하여 데이터베이스 전용 Android 클라이언트 SDK 를 생성합니다. 클라이언트 앱에서 이 라이브러리를 사용하여 모든 데이터베이스 작업을 실행합니다.

`connector.yaml`에 정의를 추가하여 iOS용 Swift, 웹용 JavaScript, Flutter를 비롯한 여러 플랫폼용 라이브러리를 생성할 수 있습니다.

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 클라이언트 작성

의 콘텐츠를 이 간단한 Android 앱으로 바꿉니다.app/src/main/java/com/example/quickstartapp/MainActivity.kt

앱이 생성된 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 스튜디오에서 예시 앱을 실행하여 작동 방식을 확인합니다.

다음 단계

SQL Connect VS Code 확장 프로그램 사용해 보기

SQL Connect로 개발할 때는 SQL Connect VS Code 확장 프로그램을 사용하는 것이 좋습니다. Visual Studio Code를 기본 개발 환경으로 사용하지 않더라도 이 확장 프로그램은 스키마 및 작업 개발을 더 편리하게 만들어 주는 여러 기능을 제공합니다.

  • SQL Connect에 특정한 구문 검사 및 자동 완성 추천 검색어를 제공하는 GraphQL 언어 서버SQL Connect
  • 스키마 정의 파일에서 데이터를 읽고 쓸 수 있으며 작업 정의에서 쿼리 및 변형을 실행할 수 있는 코드와 일치하는 CodeLens 버튼
  • 생성된 SDK를 GraphQL 정의와 자동으로 동기화
  • 간소화된 로컬 에뮬레이터 설정
  • 간소화된 프로덕션 배포

로컬 개발에 SQL Connect 에뮬레이터 사용

이 튜토리얼에서는 SQL Connect 스키마와 작업을 프로덕션에 직접 배포하는 방법을 보여주었지만 앱을 적극적으로 개발하는 동안에는 프로덕션 데이터베이스를 변경하지 않는 것이 좋습니다. 대신 SQL Connect 에뮬레이터 를 설정하고 프로덕션이 아닌 에뮬레이터를 대상으로 개발 작업을 실행합니다. 에뮬레이터 는 Cloud SQL의 라이브 PostgreSQL 인스턴스와 유사하게 동작하는 로컬 PGlite 인스턴스를 설정합니다.Cloud SQL

앱의 스키마 및 작업 작성 방법 알아보기

SQL Connect로 앱을 개발할 때는 스키마와 작업 설계 가 완료할 첫 번째이자 가장 중요한 개발 작업 중 하나입니다.

  • 콘솔의 Firebase Gemini는 앱의 자연어 설명에서 SQL Connect 스키마를 생성할 수 있는 AI 도구입니다. 이 도구를 사용하면 특히 관계형 데이터베이스를 사용해 본 적이 없는 경우 매우 빠르게 시작할 수 있습니다.
  • 또는 GraphQL을 사용하여 데이터베이스 스키마, 쿼리, 변형을 직접 작성할 수 있습니다. 스키마SQL Connect 설계의 안내로 시작한 후 후속 페이지로 이동하여 작업을 작성하는 방법을 알아보세요.

SQL Connect에서 실시간 업데이트를 가져오는 방법 알아보기

SQL Connect을 사용하여 변경되는 데이터에 실시간으로 반응하는 클라이언트 애플리케이션을 작성할 수 있습니다. 에서 실시간 업데이트 가져오기를 참고하세요.SQL Connect