在本快速入门中,您将创建并部署一个小型示例数据库,并从一个 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。 |
|
2. 将 Firebase 添加到您的 Android Studio 项目将 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.4.4" apply false } 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 ~/QuickstartAppfirebase login --reauthfirebase init dataconnect出现提示时,请选择以下选项:
接受所有其他提示的默认值。 接下来,在您的 Firebase 项目中注册您的 Android 应用。 firebase apps:create -a com.example.quickstartapp android android-quickstartfirebase 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 } query ListMovies @auth(level: PUBLIC) { movies { id title imageUrl genre } } |
5. 部署架构和操作每当您更改数据库架构、查询或变更时,都必须 部署它们,以便更改在数据库中生效。 |
|
6. 使用示例数据为数据库植入种子数据当您测试示例应用时,这些种子数据将为您提供一些可供查看的内容。请注意 在此步骤中,您将执行任意 GraphQL,这对于管理任务是允许的 。 |
|
7. 生成 Android 客户端 SDK此命令使用您的 GraphQL 定义来生成专门针对您的数据库的 Android 客户端 SDK 。您可以在客户端应用中使用此库 来执行所有数据库操作。 您可以通过向 |
public interface ExampleConnector : GeneratedConnector<ExampleConnector> { override val dataConnect: com.google.firebase.dataconnect.FirebaseDataConnect public val listMovies: ListMoviesQuery // ... } |
8. 编写示例 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 开发应用时,架构和操作的设计 是您将完成的首批最重要的开发任务之一。
- 控制台中的 Firebase Gemini 是一种 AI 工具 ,可以根据应用的自然语言SQL Connect 描述生成架构。此工具可以帮助您快速入门 ,尤其是在您之前从未接触过关系型数据库的情况下。
- 或者,您也可以直接使用 GraphQL 编写数据库架构、查询和变更 直接使用 GraphQL。首先阅读 设计 SQL Connect 架构中的指南,然后继续阅读后续页面,了解如何编写操作。