Tüm Yazılar
KategoriAI
Okuma Süresi
8 dk
Yayın Tarihi
2026-04-18
Kelime Sayısı
1.680kelime

Kahveni hazırla - bu içerikli bir makale!

Gemini Nano (Android) + Apple Intelligence (iOS): Cross-Platform On-Device AI

Özet

On-device AI'da Android ve iOS iki ayrı yol izliyor: Gemini Nano (AICore + ML Kit GenAI) ve Apple'ın Foundation Models'i. Gerçek API'ler, Flutter/React Native entegrasyonu ve platform farkları.

  • Gemini Nano yalnızca Android'de çalışır (AICore + ML Kit GenAI API'leri üzerinden); Google'ın iOS için resmi bir Gemini Nano SDK'sı yok.
  • iOS'ta cihaz-içi LLM yolu Apple'ın kendi Foundation Models framework'ü (WWDC 2025'te duyuruldu, iOS 26 ile geldi).
  • Yayın tarihinde Flutter ve React Native için iki platformu birden saran resmi bir paket yok; native taraf platform channel ya da native module ile birleştiriliyor.
  • Nano-1 (1.8B) ve Nano-2 (3.25B) parametre sayıları Google'ın Gemini 1.0 teknik raporundan geliyor.
  • On-device ücretsiz, offline ve veriyi cihazda tutuyor; karmaşık akıl yürütme ve uzun bağlamda cloud modelleri daha güçlü.
Gemini Nano (Android) + Apple Intelligence (iOS): Cross-Platform On-Device AI

Mobilde "on-device AI" iki farklı ekosistem demek: Android'de Google'ın Gemini Nano modeli (AICore + ML Kit GenAI API'leri), iOS'ta ise Apple'ın kendi Foundation Models framework'ü (Apple Intelligence'ın parçası). İkisi aynı model değil, aynı SDK'yı da paylaşmıyor — ama ikisi de aynı sorunu çözüyor: cihazda, internete veri göndermeden, düşük gecikmeli LLM çıkarımı. Bu yazı her iki platformun gerçek API'lerini, Flutter/React Native'de bunları nasıl birleştirebileceğini ve pratik kullanım senaryolarını kapsıyor.

💡 Pro Tip: On-device AI, verinin cihazdan çıkmadan işlenmesi demek — sağlık, finans, kişisel mesajlaşma gibi hassas verilerde önemli bir tercih sebebi. Karşılığında cloud modellere göre daha küçük/daha az yetenekli bir model kullanmış oluyorsun; bu yüzden çoğu production sistem "basit görev cihazda, karmaşık görev cloud'da" şeklinde hybrid çalışıyor.

İçindekiler


Gemini Nano Nedir

Gemini Nano, Google'ın Gemini model ailesinin en küçük, cihaz üzerinde çalışacak şekilde tasarlanmış üyesi. Google'ın Gemini 1.0 teknik raporuna göre iki boyutta eğitildi: Nano-1 (1.8B parametre) ve Nano-2 (3.25B parametre), sırasıyla düşük ve yüksek bellekli cihazlar hedeflenerek. Model, daha büyük Gemini modellerinden distillation ile türetilip 4-bit quantization ile cihaza sığacak hale getiriliyor.

Önemli bir nokta: Gemini Nano yalnızca Android'de, Android'in AICore sistem servisi üzerinden çalışıyor. Google'ın iOS için resmi bir Gemini Nano SDK'sı yok; iOS'ta cihaz-içi LLM çıkarımının resmi yolu Apple'ın kendi Foundation Models framework'ü (aşağıda detaylı).


Android: AICore ve ML Kit GenAI API'leri

Gemini Nano, Android'de AICore sistem servisinin içinde çalışır; model dağıtımını, güncellemelerini ve güvenlik filtrelemesini AICore yönetir, input/output verisi cihazda kalır. Uygulamalar modele iki yoldan biriyle erişir: ML Kit GenAI API'leri (Summarization, Proofreading, Rewriting, Image Description ve genel amaçlı Prompt API resmi olarak Beta aşamasında, Speech Recognition ise Alpha — henüz GA değil) ya da daha düşük seviyeli, deneysel Google AI Edge SDK. Pratikte çoğu uygulama ML Kit GenAI'yi kullanıyor. Örnek: metin özetleme.

kotlin
1// build.gradle (app)
2dependencies {
3 implementation("com.google.mlkit:genai-summarization:1.0.0-beta1")
4 implementation("org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.10.2")
5}
kotlin
1import com.google.mlkit.genai.summarization.Summarization
2import com.google.mlkit.genai.summarization.SummarizationRequest
3import com.google.mlkit.genai.summarization.SummarizerOptions
4import com.google.mlkit.genai.common.FeatureStatus
5import kotlinx.coroutines.guava.await
6 
7class SummarizationService(context: Context) {
8 private val options = SummarizerOptions.builder(context)
9 .setInputType(SummarizerOptions.InputType.ARTICLE)
10 .setOutputType(SummarizerOptions.OutputType.ONE_BULLET)
11 .setLanguage(SummarizerOptions.Language.ENGLISH)
12 .build()
13 
14 private val summarizer = Summarization.getClient(options)
15 
16 suspend fun summarize(text: String): String {
17 // UNAVAILABLE / DOWNLOADABLE / DOWNLOADING / AVAILABLE
18 val status = summarizer.checkFeatureStatus().await()
19 if (status == FeatureStatus.UNAVAILABLE) return ""
20 
21 val request = SummarizationRequest.builder(text).build()
22 return summarizer.runInference(request).get().summary
23 }
24 
25 fun close() = summarizer.close()
26}

checkFeatureStatus() ListenableFuture döndüğü için .await() uzantısını kotlinx-coroutines-guava paketinden almak gerekiyor (gms Task için kullanılan kotlinx-coroutines-play-services burada işe yaramaz). checkFeatureStatus() her zaman kontrol edilmeli: model cihazda henüz indirilmemiş olabilir (DOWNLOADABLE), indiriliyor olabilir (DOWNLOADING) ya da cihaz hiç desteklemiyor olabilir (UNAVAILABLE). AICore modeli tüm uygulamalar arasında paylaşır, yani her uygulama kendi kopyasını indirmek zorunda değil. Yukarıdaki örnek sadeleştirilmiş: production'da DOWNLOADABLE durumunda doğrudan runInference çağırmak yerine, Google'ın resmi örneğindeki gibi summarizer.downloadFeature(callback) ile indirmeyi açıkça başlatıp onDownloadStarted/onDownloadProgress/onDownloadCompleted callback'leriyle kullanıcıya ilerleme göstermek önerilen yöntem.


iOS: Apple Foundation Models

iOS'ta Google'ın değil, Apple'ın kendi modeli devrede: Foundation Models framework'ü, WWDC 2025'te duyuruldu ve iOS 26 ile geliştiricilere açıldı. Bu, Gemini Nano'nun iOS portu değil — tamamen ayrı, Apple'ın kendi eğittiği model.

swift
1import FoundationModels
2 
3func summarize(_ text: String) async throws -> String? {
4 let model = SystemLanguageModel.default
5 
6 switch model.availability {
7 case .available:
8 break
9 case .unavailable:
10 return nil // Cihaz desteklemiyor ya da Apple Intelligence kapalı
11 }
12 
13 let session = LanguageModelSession {
14 "Sen metinleri 2 cümlede özetleyen bir asistansın."
15 }
16 
17 let response = try await session.respond(to: text)
18 return response.content
19}

SystemLanguageModel.default.availability kontrolü zorunlu — model yalnızca Apple Intelligence açık ve desteklenen cihazlarda kullanılabilir; aksi halde .unavailable dönüyor ve fallback (cloud API ya da özelliği gizleme) gerekiyor.


Flutter'da Platform Channel Yaklaşımı

Bu yazının yayın tarihinde iki platformu birden saran resmi bir Flutter paketi yok. Gerçek yol: MethodChannel ile native tarafa (Android: Kotlin + ML Kit GenAI, iOS: Swift + Foundation Models) inmek:

dart
1// lib/on_device_ai.dart
2import 'package:flutter/services.dart';
3 
4class OnDeviceAI {
5 static const _channel = MethodChannel('on_device_ai');
6 
7 Future<String?> summarize(String text) async {
8 try {
9 return await _channel.invokeMethod<String>('summarize', {'text': text});
10 } on PlatformException {
11 return null; // Cihaz desteklemiyor -> cloud fallback'e düş
12 }
13 }
14}

Native handler Android'de yukarıdaki SummarizationService'i, iOS'ta FoundationModels çağrısını sarmalıyor. Cloud fallback için Firebase AI Logic'in resmi Flutter paketi kullanılabilir (eski google_generative_ai paketi pub.dev'de deprecated işaretli, yerine bu öneriliyor):

yaml
1# pubspec.yaml — cloud fallback (Gemini API, on-device değil)
2dependencies:
3 firebase_ai: ^3.11.0
4 firebase_core: ^4.7.0

React Native'de Native Module Yaklaşımı

Bu yazının yayın tarihinde (18 Nisan 2026) iki platformu birden saran hazır bir React Native paketi yoktu (sonraki gelişme için Güncelleme bölümüne bak). Aynı sonucu almanın yolu kendi Native Module / Turbo Module'ünü yazmak:

typescript
1// NativeOnDeviceAI.ts — Turbo Module spec
2import type { TurboModule } from "react-native";
3import { TurboModuleRegistry } from "react-native";
4 
5export interface Spec extends TurboModule {
6 summarize(text: string): Promise<string | null>;
7}
8 
9export default TurboModuleRegistry.getEnforcing<Spec>("OnDeviceAI");

Native tarafta Android implementasyonu ML Kit GenAI'yi, iOS implementasyonu FoundationModels'ı sarmalar — Flutter örneğindeki gibi. Tek bir "Gemini Nano" API'si yok; iki farklı native API'yi ortak arayüz arkasında birleştiriyorsun.


Model Boyutları: Nano-1 ve Nano-2

Varyant
Parametre
Hedef
Nano-1
1.8B
Düşük bellekli cihazlar
Nano-2
3.25B
Yüksek bellekli cihazlar

Bu rakamlar Google'ın Gemini 1.0 teknik raporunda (Aralık 2023) açıklandı. Hangi cihazda hangi varyant koştuğu dokümante edilmiyor — checkFeatureStatus() en güvenilir kontrol yöntemi.


Cihaz Gereksinimleri

Android

ML Kit GenAI API'leri, destek listesi sürekli genişleyen bir cihaz seti üzerinde çalışıyor; Google, ML Kit GenAI dokümantasyonunda özellik bazında resmi cihaz listeleri yayımlıyor (Summarization/Proofreading/Rewriting/Image Description ve Prompt API için ayrı listeler), ayrıca özelliğin "cihazın donanımına ve o cihaza indirilmiş modellere göre" değişebileceğini belirtip checkFeatureStatus() ile çalışma zamanında kontrol edilmesini öneriyor (API ayrıca Android 8.0 / API 26+ ve kilidi açılmamış bootloader gerektiriyor). Liste zamanla genişlediği için onu ezbere almak yerine her zaman bu runtime kontrolüne güvenmek daha doğru.

iOS

Apple Intelligence / Foundation Models, Apple Silicon Neural Engine gerektiriyor:

  • iPhone 15 Pro / Pro Max (A17 Pro) ve sonrası
  • iPhone 16 serisi (A18) ve sonrası
  • iPad (M1 ve üstü çip; ayrıca iPad mini, A17 Pro çip)
  • Mac (Apple Silicon, M1 ve üstü)

Desteklenmeyen cihazlarda SystemLanguageModel.default.availability değeri .unavailable dönüyor; kodun bunu kontrol edip cloud fallback'e geçmesi gerekiyor.


On-Device vs Cloud: Ne Zaman Hangisi

Gemini Nano / Foundation Models ile cloud modelleri (Gemini Flash/Pro, GPT vb.) aynı eksende karşılaştıran resmi bir Google/Apple benchmark tablosu yok — bu yüzden burada yüzde ya da latency rakamı verilmiyor. Genel trade-off: on-device ücretsiz, offline, veri cihazdan çıkmıyor, ama küçük model olduğu için karmaşık akıl yürütmede ve uzun bağlamda cloud'un gerisinde kalıyor; cloud daha güçlü ama maliyetli, internet gerektiriyor, veri sunucuya gidiyor. Karar vermeden önce kendi use case'in için gerçek bir kalite testi yapmak, genel ifadelere güvenmekten daha doğru.


Use Case'ler

  1. On-Device Chat Özeti — mesajlaşma geçmişinden özet çıkarma, cloud'a göndermeden. Privacy-sensitive uygulamalar için uygun.
  2. Offline Çeviri — network olmadığında (uçak, zayıf sinyal) çalışan çeviri.
  3. Content Moderation — kullanıcı içeriğini sunucuya göndermeden cihazda ön-tarama (spam/toxic tespiti).
  4. Smart Reply / Yazım Önerisi — ML Kit GenAI'nin Rewriting/Proofreading API'leri ve Apple'ın yazma araçları bu kategoriye giriyor.
  5. Görsel Açıklama — ML Kit GenAI'nin "Image Description" API'si, erişilebilirlik amaçlı görsel açıklama üretimi için tasarlandı.
  6. Fiş/Belge Anlama — fiş, kartvizit, belge gibi görsel içerikten yapılandırılmış veri çıkarımı.

ALTIN İPUCU

Bu yazının en değerli bilgisi

Bu ipucu, yazının en önemli çıkarımını içeriyor.

Easter Egg

Gizli bir bilgi buldun!

Bu bölümde gizli bir bilgi var. Keşfetmek ister misin?

Okuyucu Ödülü

Aşağıdaki örnek gerçek bir paket değil; Android (ML Kit GenAI) ve iOS (Foundation Models) native implementasyonlarını ortak bir arayüz arkasında nasıl birleştirebileceğini gösteren bir iskelet:

typescript
// shared/ai-service.ts — ortak arayüz, native taraf platforma göre değişir
interface AIService {
isAvailable(): Promise<boolean>;
summarize(text: string): Promise<string | null>;
}
 
class HybridAIService implements AIService {
async isAvailable(): Promise<boolean> {
try {
return await NativeOnDeviceAI.isAvailable();
} catch {
return false;
}
}
 
async summarize(text: string): Promise<string | null> {
if (await this.isAvailable()) {
return NativeOnDeviceAI.summarize(text);
}
// Cloud fallback — kendi backend'in ya da resmi Gemini API SDK'sı üzerinden
return CloudGemini.generate({ prompt: `Summarize: ${text}` });
}
}
 
export const ai = new HybridAIService();

NativeOnDeviceAI, yukarıdaki Turbo Module spec'ini native tarafta implemente eden senin kendi kodun — hazır bir paket değil.

External Resources:

Sonuç

Gemini Nano ve Apple'ın Foundation Models'ı, aynı problemi (cihazda, offline, privacy-first LLM çıkarımı) iki ayrı model ve iki ayrı API ile çözüyor. Android'de bu iş AICore + ML Kit GenAI API'leri üzerinden, iOS'ta Apple'ın kendi Foundation Models framework'ü üzerinden yürüyor. Cross-platform (Flutter/React Native) bir uygulama yazıyorsan, tek bir "Gemini Nano her yerde çalışır" paketi aramak yerine, iki native implementasyonu kendi platform channel/native module katmanında birleştirmen gerekiyor.

Güncelleme (Ekim 2026)

  • react-native-gemini-nano npm paketi ilk kez 19 Mayıs 2026'da yayımlandı (bu yazıdan sonra), güncel sürüm 0.1.10, kendini "Android & iOS Turbo Module" olarak tanımlıyor. iOS tarafında gerçekte çalışan model Gemini Nano değil Apple'ın Foundation Models'ı olmalı (resmi bir Gemini Nano iOS SDK'sı hâlâ yok) — kullanmadan önce iOS implementasyonunu kaynak koddan doğrula.
  • Android'de ML Kit GenAI'nin desteklediği cihaz listesi genişlemeye devam ediyor (yeni Pixel/Galaxy nesilleri dahil). Üretimde listeyi ezbere yazmak yerine checkFeatureStatus()'a güven.

İlgili yazılar: Gemini 2.5 Pro, AI iOS Features, Firebase AI Logic.

Etiketler

#AI#Gemini Nano#On-Device#iOS#Android#Cross-platform#Mobile AI#2026
Muhittin Çamdalı

Muhittin Çamdalı

Senior Mobile Engineer

12+ yıllık deneyime sahip Senior Mobile Engineer. iOS, Flutter ve React Native ile mobil ürünler geliştiriyorum; full-stack ve AI-native çalışıyorum.

iOS Geliştirme Haberleri

Haftalık Swift tips, SwiftUI tricks ve iOS best practices. Spam yok, sadece değerli içerik.

Onay e-postasındaki bağlantıyı açıp “Aboneliğimi onayla” düğmesine bastığında aboneliğin başlar. Bültende açılma/tıklama istatistikleri tutulur; dilediğin an tek tıkla ayrılabilirsin. Gizlilik

Paylaş

İlgili İçerik