Начните работу с Firebase SQL Connect на Android.

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

Предварительные требования

Для выполнения этого краткого руководства вам потребуется следующее:

  • Среда с установленными следующими инструментами:
  • Аккаунт Google.

Учебное пособие

Учебное пособие

1. Создайте новый проект Android Studio.

В Android Studio создайте новый проект, используя шаблон «Пустая активность» .

Назовите проект 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.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. Сгенерируйте SDK для Android-клиента.

Эта команда использует ваши определения GraphQL для генерации Android-клиента 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-клиента.

Замените содержимое файла 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 — это инструмент на основе искусственного интеллекта, который может генерировать схемы SQL Connect на основе описания вашего приложения на естественном языке. Этот инструмент позволит вам очень быстро начать работу, особенно если вы никогда раньше не работали с реляционными базами данных.
  • В качестве альтернативы вы можете создавать схемы баз данных, запросы и мутации непосредственно с помощью GraphQL. Начните с рекомендаций в разделе «Создание схем SQL Connect , а затем перейдите к следующим страницам, чтобы узнать, как писать операции.