Android'de Firebase SQL Connect'i kullanmaya başlama

Bu hızlı başlangıç kılavuzunda küçük bir örnek veritabanı oluşturup dağıtacak ve bu veritabanına bir Android uygulamasından erişeceksiniz.

Ön koşullar

Bu hızlı başlangıç kılavuzunu tamamlamak için aşağıdakilere ihtiyacınız vardır:

  • Aşağıdaki araçların yüklü olduğu bir ortam:
    • Android Studio'nun son sürümlerinden biri.
    • Firebase CLI NPM yüklüyse şu komutu çalıştırın:
      npm install -g firebase-tools@latest
      Aksi takdirde, yükleme talimatları için dokümanlara bakın.
  • Google Hesabı

Eğitim

Eğitim

1. Yeni bir Android Studio projesi oluşturma

Android Studio'da Empty Activity (Boş Etkinlik) şablonunu kullanarak yeni bir proje oluşturun.

Projeyi Quickstart App (Hızlı Başlangıç Uygulaması) olarak adlandırın ve paket adı olarak com.example.quickstartapp'i kullanın.

Android Studio yeni proje iletişim kutusu

2. Firebase'i Android Studio projenize ekleme

Firebase bağımlılıklarını ve Kotlin serileştirme eklentisini build.gradle.kts dosyalarınıza ekleyin.

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 projesi başlatma

Android Studio proje dizinine geçin ve bu dizinde bir Firebase projesi başlatın.

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

İstendiğinde aşağıdaki seçenekleri belirleyin:

  • Yeni bir Firebase projesi oluşturun.
  • Gemini ile şema oluşturmayın (bu eğitimde, önceden oluşturulmuş bir örnek şema kullanacaksınız).
  • Ücretsiz deneme Cloud SQL örneği ve veritabanı sağlayın.

Diğer tüm istemler için varsayılan değerleri kabul edin.

Ardından, Android uygulamanızı Firebase projenize kaydedin.

firebase apps:create -a com.example.quickstartapp android android-quickstart
firebase apps:sdkconfig android -o app/google-services.json

4. Örnek GraphQL tanımlarını inceleyin

SQL Connect içinde, tüm veritabanı şemalarınızı ve işlemlerinizi GraphQL kullanarak tanımlarsınız. Projenizi başlattığınızda Firebase CLI, başlamanıza yardımcı olmak için bazı örnek tanımlar oluşturdu.

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. Şemalarınızı ve işlemlerinizi dağıtma

Veritabanı şemalarınızda, sorgularınızda veya mutasyonlarınızda değişiklik yaptığınızda, değişikliklerinizin veritabanında geçerli olması için bunları dağıtmanız gerekir.

firebase deploy --only dataconnect

6. Veritabanını örnek verilerle doldurma

Bu başlangıç verileri, örnek uygulamayı test ederken inceleyebileceğiniz bir şey sunar. Bu adımda, yönetim görevleri için izin verilen rastgele GraphQL'i yürüttüğünüzü unutmayın.

firebase dataconnect:execute dataconnect/seed_data.gql

7. Android istemci SDK'sı oluşturma

Bu komut, GraphQL tanımlarınızı kullanarak özellikle veritabanınız için bir Android istemci SDK'sı oluşturur. Tüm veritabanı işlemlerini gerçekleştirmek için bu kitaplığı istemci uygulamanızda kullanırsınız.

connector.yaml'ya tanımlar ekleyerek iOS için Swift, web için JavaScript ve Flutter dahil olmak üzere birden fazla platform için kitaplıklar oluşturabilirsiniz.

firebase dataconnect:sdk:generate
Otomatik olarak oluşturulan Android SDK'sı (alıntı)
public interface ExampleConnector : GeneratedConnector<ExampleConnector> {
  override val dataConnect: com.google.firebase.dataconnect.FirebaseDataConnect

  public val listMovies: ListMoviesQuery

  // ...
}

8. Örnek bir Android istemcisi yazma

app/src/main/java/com/example/sequel/MainActivity.kt içeriğini bu basit Android uygulamasıyla değiştirin.

Uygulamanın, oluşturulan SDK'daki bir işlevi kullanarak gerekli veritabanı erişimini tamamladığını unutmayın.

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. Uygulamayı deneyin

Çalışırken görmek için Android Studio'dan örnek uygulamayı çalıştırın.

Sonraki adımlar

SQL Connect VS Code uzantısını deneyin

SQL Connect ile geliştirme yaparken SQL Connect VS Code uzantısını kullanmanızı önemle tavsiye ederiz. Visual Studio Code'u birincil geliştirme ortamınız olarak kullanmasanız bile uzantı, şema ve işlem geliştirmeyi daha kolay hale getiren çeşitli özellikler sunar:

  • SQL Connect'ya özel söz dizimi denetimi ve otomatik tamamlama önerileri sağlayan bir GraphQL dil sunucusu
  • Şema tanımı dosyalarınızdan veri okumanıza ve yazmanıza, ayrıca işlem tanımlarınızdan sorgu ve mutasyon yürütmenize olanak tanıyan, kodunuzla aynı satırda bulunan CodeLens düğmeleri.
  • Oluşturulan SDK'larınızı GraphQL tanımlarınızla otomatik olarak senkronize tutun.
  • Basitleştirilmiş yerel emülatör kurulumu.
  • Üretim ortamına basitleştirilmiş dağıtım.

Yerel geliştirme için SQL Connect emülatörünü kullanma

Bu eğitimde SQL Connect şemalarının ve işlemlerinin doğrudan canlı sürüme nasıl dağıtılacağı gösterilse de uygulamanızı aktif olarak geliştirirken canlı veritabanınızda değişiklik yapmak istemeyebilirsiniz. Bunun yerine, SQL Connect emülatörünü ayarlayın ve geliştirme çalışmalarınızı canlı sürüm yerine emülatör üzerinde yapın. Emülatör, Cloud SQL üzerinde canlı bir PostgreSQL örneğine benzer şekilde davranan yerel bir PGlite örneği oluşturur.

Uygulamanız için şemaları ve işlemleri nasıl yazacağınızı öğrenin

SQL Connect ile uygulama geliştirirken şemalarınızın ve işlemlerinizin tasarımı, tamamlayacağınız ilk ve en önemli geliştirme görevlerinden biridir.

  • Firebase konsolundaki Gemini, uygulamanızın doğal dildeki açıklamasından SQL Connect şemaları oluşturabilen bir yapay zeka aracıdır. Bu araç, özellikle daha önce hiç ilişkisel veritabanlarıyla çalışmadıysanız çok hızlı bir şekilde başlamanıza yardımcı olabilir.
  • Alternatif olarak, veritabanı şemalarını, sorguları ve mutasyonları doğrudan GraphQL kullanarak yazabilirsiniz. SQL Connect şemaları tasarlama bölümündeki yönergelerle başlayın ve ardından işlemleri nasıl yazacağınızı öğrenmek için takip sayfalarına geçin.