Начало работы с Firebase SQL Connect на Android

В этом кратком руководстве вы создадите и развернете небольшую тестовую базу данных и получите к ней доступ из приложения Android.

Требования

Чтобы выполнить инструкции из этого руководства, вам понадобится:

  • Среда, в которой установлены следующие инструменты:
    • Последняя версия Android Studio.
    • Интерфейс командной строки Firebase. Если у вас установлен 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

Добавьте зависимости 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.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:35.1.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. При инициализации проекта CLI Firebase создал несколько примеров определений, чтобы вы могли начать работу.

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. Разверните схемы и операции

При изменении схем, запросов или мутаций базы данных необходимо развернуть их, чтобы изменения вступили в силу.

firebase deploy --only dataconnect

6. Заполните базу данных примерами данных

Эти данные позволят вам увидеть, как работает пример приложения. Обратите внимание, что на этом шаге вы выполняете произвольный запрос GraphQL, что разрешено для административных задач.

firebase dataconnect:execute dataconnect/seed_data.gql

7. Как создать клиентский SDK для Android

Эта команда использует ваши определения GraphQL для создания клиентского SDK для Android специально для вашей базы данных. Она используется в клиентском приложении для выполнения всех операций с базой данных.

Вы можете создавать библиотеки для нескольких платформ, включая 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

Замените содержимое файла app/src/main/java/com/example/quickstartapp/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 – это ИИ-инструмент, который может генерировать схемы SQL Connect на основе описания вашего приложения на естественном языке. Он позволяет быстро начать работу, особенно если вы никогда не работали с реляционными базами данных.
  • Вы также можете создавать схемы баз данных, запросы и мутации непосредственно с помощью GraphQL. Начните с руководства Проектирование схем SQL Connect, а затем перейдите к следующим страницам, чтобы узнать, как писать операции.

Узнайте, как получать обновления от SQL Connect в реальном времени.

С помощью SQL Connect можно создавать клиентские приложения, которые реагируют на изменения данных в реальном времени. Подробнее о том, как получать обновления от SQL Connect в реальном времени…