En esta guía de inicio rápido, crearás e implementarás una pequeña base de datos de muestra y accederás a ella desde una app para Android.
Requisitos previos
Para completar esta guía de inicio rápido, necesitarás lo siguiente:
- Un entorno con las siguientes herramientas instaladas:
- Una versión reciente de Android Studio.
- Firebase CLI Si tienes NPM instalado, ejecuta lo siguiente:
De lo contrario, consulta la documentación para obtener instrucciones de instalación.npm install -g firebase-tools@latest
- Una Cuenta de Google
Instructivo
| Instructivo | |
|---|---|
1. Crea un proyecto nuevo de Android StudioEn Android Studio, crea un proyecto nuevo con la plantilla Empty Activity. Nombra el proyecto Quickstart App con el nombre de paquete com.example.quickstartapp. |
|
2. Agrega Firebase a tu proyecto de Android StudioAgrega las dependencias de Firebase y el complemento de serialización de Kotlin a tus
|
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. Inicializa un proyecto de FirebaseCambia al directorio del proyecto de Android Studio y, luego, inicializa un proyecto de Firebase en él. |
cd ~/QuickstartAppfirebase login --reauthfirebase init dataconnectCuando se te solicite, elige las siguientes opciones:
Acepta los valores predeterminados para todas las demás solicitudes. Luego, registra tu app para Android en tu proyecto de Firebase. firebase apps:create -a com.example.quickstartapp android android-quickstartfirebase apps:sdkconfig android -o app/google-services.json |
4. Revisa las definiciones de GraphQL de ejemploEn SQL Connect, defines todos los esquemas y las operaciones de tu base de datos con GraphQL. Cuando inicializaste tu proyecto, la Firebase CLI creó algunas definiciones de ejemplo para que comiences. |
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 } query ListMovies @auth(level: PUBLIC) { movies { id title imageUrl genre } } |
5. Implementa tus esquemas y operacionesCada vez que realices cambios en los esquemas, las consultas o las mutaciones de tu base de datos, debes implementarlos para que los cambios surtan efecto en la base de datos. |
|
6. Propaga la base de datos con datos de muestraEstos datos de origen te darán algo para ver cuando pruebes la app de ejemplo. Ten en cuenta que, en este paso, ejecutas GraphQL arbitrario, lo que se permite para las tareas administrativas. |
|
7. Genera un SDK de cliente de AndroidEste comando usa tus definiciones de GraphQL para generar un SDK de cliente de Android específicamente para tu base de datos. Usas esta biblioteca en tu app cliente para realizar todas las operaciones de la base de datos. Puedes generar bibliotecas para varias plataformas, incluidas
Swift para iOS, JavaScript para la Web y Flutter, agregando definiciones a
|
public interface ExampleConnector : GeneratedConnector<ExampleConnector> { override val dataConnect: com.google.firebase.dataconnect.FirebaseDataConnect public val listMovies: ListMoviesQuery // ... } |
8. Escribe un cliente de Android de muestraReemplaza el contenido de
Observa que la app completa el acceso necesario a la base de datos con una función de el SDK generado. |
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. Probar la aplicaciónDesde Android Studio, ejecuta la app de ejemplo para verla en acción. |
|
Próximos pasos
Prueba la extensión de SQL Connect para VS Code
Cuando desarrolles con SQL Connect, te recomendamos usar la extensión de SQL Connect para VS Code. Incluso si no usas Visual Studio Code como tu entorno de desarrollo principal, la extensión proporciona varias funciones que hacen que el desarrollo de esquemas y operaciones sea más conveniente:
- Un servidor de lenguaje GraphQL que proporciona verificación de sintaxis y sugerencias de autocompletar específicas a SQL Connect
- Botones de CodeLens en línea con tu código que te permiten leer y escribir datos desde tus archivos de definición de esquema y ejecutar consultas y mutaciones desde tus definiciones de operación
- Mantén automáticamente tus SDK generados sincronizados con tus definiciones de GraphQL.
- Configuración simplificada del emulador local
- Implementación simplificada en producción
Usa el SQL Connect emulador para el desarrollo local
Si bien en este instructivo se mostró cómo implementar SQL Connect esquemas y operaciones directamente en producción, es probable que no quieras realizar cambios en tu base de datos de producción mientras desarrollas tu app de forma activa. En su lugar, configura el SQL Connect emulador y realiza tu trabajo de desarrollo en él en lugar de en la producción. El emulador configura una instancia local de PGlite que se comporta de manera similar a una instancia activa de PostgreSQL en Cloud SQL.
Aprende a escribir esquemas y operaciones para tu app
Cuando desarrolles apps con SQL Connect, el diseño de tus esquemas y operaciones es una de las tareas de desarrollo más importantes y que debes completar primero.
- Gemini en la consola Firebase es una herramienta de IA que puede generar esquemas SQL Connect a partir de una descripción en lenguaje natural de tu app. Esta herramienta puede ayudarte a comenzar muy rápido, en especial si nunca trabajaste con bases de datos relacionales.
- Como alternativa, puedes escribir esquemas, consultas y mutaciones de bases de datos directamente con GraphQL. Comienza con la guía en Diseño de esquemas, y, luego, continúa con las páginas de seguimiento para aprender a escribir operaciones.SQL Connect