Davet et, 1 ay ücretsiz Pro kazanNasıl çalışır?

Gemini CLI ile Kotlin ve Android projeleri: pratik rehber

Gemini CLI’yı Kotlin ve Android projelerinde nasıl kullanacağınızı öğrenin: GEMINI.md kurulumu, etkili çalışma döngüsü, test komutları ve sık yapılan hatalar.

Solviera Teknoloji 5 dk okuma

Gemini CLI, terminal üzerinden gemini komutuyla başlatılan bir kodlama ajanıdır; Kotlin ve Android projelerinde Gradle, test ve lint komutlarını kendisi çalıştırarak kod üretir, düzenler ve hata mesajlarını yorumlar. Bu rehberde GEMINI.md ile projeyi hazırlamayı, etkili bir çalışma döngüsü kurmayı ve Android’e özgü tuzaklardan kaçınmayı uygulamalı olarak anlatıyorum.

Neden Gemini CLI Kotlin ve Android işlerine uygun?

Gemini CLI, proje klasöründe gemini komutuyla çalıştığı için Gradle task’larını doğal bir terminal ajanı gibi kullanır. Kotlin’in statik tip sistemi ve Android Studio’nun ürettiği hata mesajları, ajanın düzeltme önerilerini netleştirir; özellikle type mismatch, nullability ve suspend fonksiyon hatalarını görüp düzeltebilir. Jetpack Compose, ViewModel ve coroutines gibi kalıp kodların çoğu deterministik olduğundan, ajan küçük adımlarla güvenilir diff’ler üretir. Örneğin bir StateFlow dönüşümünü veya repository katmanındaki suspend fonksiyon refactor’ünü birkaç iterasyonda tamamlayabilir. Ayrıca mevcut unit testleri çalıştırıp sonuçları yorumlayarak geliştiriciye geri bildirim verir. Gradle kataloğu taşıma, Compose UI testleri yazma veya espresso testleri güncelleme gibi tekrar eden işlerde ciddi zaman kazandırır. Genel kurulum ve temel özellikler için Gemini CLI sayfasındaki bilgiler işe yarar.

Projeyi ajan için hazırlama: GEMINI.md

GEMINI.md dosyasını proje köküne koyun; Gemini CLI bu dosyayı okuyarak build, test ve kod kurallarını varsayılan olarak uygular. Kotlin ve Android projesi için bu dosya kısa ve komut odaklı olmalı. Aşağıdaki örnek, Gradle, paket yapısı ve mimari kuralları içerir:

# GEMINI.md

## Komutlar
./gradlew assembleDebug
./gradlew testDebugUnitTest
./gradlew connectedDebugAndroidTest
./gradlew lintDebug

## Paket ve mimari
- Paket: com.example.myapp
- UI: Jetpack Compose, ekran başına ui/<feature>/<Screen>.kt
- State: ViewModel + StateFlow, UI state tek nesnede
- Veri: Repository + suspend fonksiyonlar, Result<T> dönüşü
- Coroutines: viewModelScope, ağır işler için withContext(Dispatchers.IO)

## Kurallar
- Manifest ve Gradle değişikliklerini ayrı commit'te tut
- Bağımlılık eklerken version catalog kullan
- Test: JUnit4, Espresso, Compose UI test; her yeni özellik için en az bir unit test yaz
- Android kaynak dosyalarında hardcoded string kullanma

Bu dosyayı özelleştirirken şunlara dikkat edin: build komutları olarak assembleDebug yeterlidir; testDebugUnitTest hızlı JVM testlerini çalıştırır. Eğer instrumentation testleriniz varsa connectedDebugAndroidTest komutunu ekleyin, ancak bu komut emülatör veya cihaz gerektirir ve ajanın çalıştığı ortamda cihaz yoksa başarısız olur. Lint komutu lintDebug kod kalitesi uyarılarını verir; ajan bu çıktıyı okuyabilir. Paket yapısı kısmında tek paket örneği verdim; gerçek projede feature paketleri veya modüler yapı varsa onları yazın. State yönetimi için StateFlow ve ViewModel kullanımını belirtin; ajan böylece eski LiveData kalıplarına dönmez. Coroutines kurallarında viewModelScope ve Dispatchers.IO kullanımını açıkça söyleyin. Ayrıca DI framework’ü (Hilt, Koin) ve veritabanı (Room) gibi projeye özgü kütüphaneleri de ekleyin. Daha ayrıntılı kullanım ipuçları için Gemini CLI nasıl kullanılır? Adım adım rehber sayfasına bakabilirsiniz.

Çalışma döngüsü: planla, küçük adımlar, testleri çalıştır, diff incele

Android projelerinde en verimli döngü şudur: önce yapılacak değişikliği tek cümleyle sınırlandırın, gemini komutunu proje klasöründe çalıştırıp isteği verin. Ajan kodu ürettikten sonra önce diff’i inceleyin; ardından ./gradlew testDebugUnitTest ile hızlı testleri çalıştırın. Eğer emülatör veya cihaz bağlıysa ./gradlew connectedDebugAndroidTest ile instrumentation testlerini de koşun. Küçük adımlar, Gradle senkronizasyonu ve Compose önizleme hatalarını erken yakalamanızı sağlar. Prompt yazarken Kodlama ajanları için prompt nasıl yazılır? sayfasındaki ipuçları işe yarar. Aşağıda tipik görevler için örnek promptlar veriyorum:

  • ‘LoginViewModel içindeki formState’i tek bir data class StateFlow’a taşı, input validation’ı ViewModel’de yap ve birim test ekle.’
  • ‘UserRepository içindeki fetchUser fonksiyonunu Result<T> döndürecek şekilde refactor et, network hatasını coroutine exception olarak ilet ve mevcut testleri güncelle.’
  • ‘Compose HomeScreen içindeki state hoisting’i düzelt, remember ve collectAsStateWithLifecycle kullan ve Compose UI testi yaz.’
  • ‘build.gradle.kts içindeki hardcoded bağımlılık versiyonlarını libs.versions.toml kataloğuna taşı, kullanılmayan bağımlılıkları kaldır.’
  • ‘Retrofit servisinde suspend fonksiyonlara geç, coroutine exception handler ekle ve unit test ile hata durumunu doğrula.’
  • ‘MainActivity içindeki gereksiz setContent bloğunu ayır, AppNavigation composable’ını oluştur ve NavHost kullan.’ Her prompttan sonra ajanın ürettiği farkı inceleyin. Gradle dosyaları, manifest ve proguard değişikliklerini mutlaka gözden geçirin; tek bir commit içinde hem UI hem build değişikliği istemeyin. Testleri ajan çalıştırdıktan sonra siz de aynı komutu tekrar çalıştırıp sonuçları doğrulayın; bazen ajan önbellek nedeniyle yanlış sonuç raporlayabilir.

Ajanın iyi olduğu Kotlin ve Android işleri ve dikkat edilmesi gerekenler

Gemini CLI şu işlerde güvenilirdir: ViewModel state refactoring, Compose composable’ları, coroutine flow dönüşümleri, JUnit test yazımı, Gradle version catalog geçişi, basit DI ve Room şema güncellemeleri. Android’e özgü tuzaklar daha çok manifest, Gradle plugin sürümleri, resource linking ve proguard/R8 kurallarındadır. Ajan bu dosyaları değiştirdiğinde mutlaka diff’i inceleyin; bazen minSdk veya targetSdk değerini yanlış değiştirebilir. Compose preview’da görünen hatalar çalışma zamanında oluşmayabilir, bu yüzden emülatörde doğrulamak şarttır. Özellikle AndroidManifest.xml içindeki intent filter, permission veya provider değişikliklerinde dikkatli olun; ajan bazen gereksiz permission ekleyebilir veya mevcut bir provider’ı yanlış yapılandırabilir. proguard-rules.pro dosyasına eklenen kurallar, reflection kullanan kütüphaneleri kırabilir; bu yüzden R8 daraltma açıksa release build’i de test edin. Aşağıdaki tablo sık kullanılan işler için iyi prompt örneklerini gösteriyor:

İşİyi prompt
State yönetimi‘CartViewModel içindeki MutableStateFlow listesini immmutable StateFlow olarak dışarı aç ve UI state’i tek veri sınıfında topla.’
Coroutine dönüşümü‘loadUser fonksiyonunu callbackFlow yerine suspend + Result olarak yeniden yaz, mevcut testleri uyarla.’
Compose testi‘ProductCard için createComposeRule ile state ve click testi ekle, test tag kullan.’
Gradle kataloğu‘Bağımlılık versiyonlarını libs.versions.toml içine al, build.gradle.kts referanslarını güncelle.’
Manifest düzeltmesi‘AndroidManifest.xml içindeki exported attribute’unu API 31+ için düzelt ve gerekirse intent filter ekle.’

Test ve doğrulama

Ajan, unit testleri ./gradlew testDebugUnitTest ile hızlıca çalıştırıp sonuçları yorumlar. Instrumentation testleri için ./gradlew connectedDebugAndroidTest komutu emülatör veya cihaz gerektirir; Gemini CLI bu komutu çalıştırabilir ancak cihaz yoksa başarısız olur. Lint için ./gradlew lintDebug çıktısını da inceletin; özellikle Compose ve Android kaynak uyarılarına dikkat edin. Test sonrası git diff ile ajanın değiştirdiği dosyaları tek tek gözden geçirin. Özellikle build.gradle.kts, AndroidManifest.xml, proguard-rules.pro ve libs.versions.toml değişikliklerini elle onaylamadan merge etmeyin. Ajan bir hatayı test ekleyerek doğrulayabilir; bunu isteyin. Ayrıca ajanın çalıştırdığı testlerin raporlarını app/build/reports/tests/ altında bulabilirsiniz; oradan hata detaylarını okuyun. Eğer CI kullanıyorsanız, ajanın commit’lerini CI’da da test ettirin; yerelde geçen testler CI’da farklı ortam nedeniyle başarısız olabilir. Son olarak, Compose UI testlerinde composeTestRule ile yazılan testlerin emülatörde stabilitesini kontrol edin; ajan bazen yanlış waitUntil koşulları ekleyebilir.

Aynı projede birden fazla ajan: AgentVera

AgentVera, Gemini CLI ve diğer terminal ajanlarının gerçek komut satırlarını aynı pencerede, her biri kendi terminal panelinde yan yana çalıştıran bir masaüstü uygulamasıdır. Ajanlar ayrı git worktree’lerde paralel çalışabildiği için biri Compose ekranını, diğeri ViewModel’i düzenlerken dosyalar çakışmaz. Tur sonunda ikinci bir model kod incelemesi yapar ve bulgular dosya:satır bağlantılarıyla gelir; bu, Kotlin nullability veya Gradle sürüm hatalarını erken yakalamak için çok değerlidir. Ayrıca her turun anlık görüntüsü alınır; yanlış bir Android manifest değişikliğini tek tıkla geri alabilirsiniz. Yapay zeka ajan ekibi: yönetici, roller ve iş teslimi sayfasında çok ajanlı iş teslimi anlatılıyor.

Sonuç

Gemini CLI, Kotlin ve Android projelerinde tek başına IDE yerine geçmez; ancak GEMINI.md ile doğru komutları ve kuralları verdiğinizde Gradle, test ve refactoring döngüsünü ciddi şekilde hızlandırır. Her değişikliği küçük tutun, diff’i okuyun ve testleri siz de çalıştırın. Zamanla GEMINI.md dosyanızı projeye özel kurallarla zenginleştirin; ajan da sizinle birlikte daha isabetli hale gelir. Özellikle Compose, ViewModel ve coroutines gibi modern Android bileşenlerinde ajanın üretkenliği yüksektir; kritik yapılandırma dosyalarında ise insan incelemesi şarttır.

Sık sorulanlar

Gemini CLI, Android projelerinde hangi komutları çalıştırabilir?

Gemini CLI, proje kökünde gemini komutuyla başlar ve GEMINI.md içinde tanımlı Gradle task’larını çalıştırabilir; örneğin ./gradlew assembleDebug, ./gradlew testDebugUnitTest, ./gradlew lintDebug gibi.

Gemini CLI için GEMINI.md dosyasına neler yazmalıyım?

Build, test ve lint komutlarını, paket yapısını, mimari kuralları (MVVM, Compose, StateFlow) ve test yaklaşımını yazın. Bu, ajanın doğru komutları seçmesini ve kod üretirken kurallara uymasını sağlar.

Gemini CLI, Jetpack Compose kodunu düzenleyebilir mi?

Evet, composable fonksiyonlar, state hoisting ve Compose testleri yazabilir. Ancak preview hataları çalışma zamanını yansıtmayabilir; emülatörde veya cihazda doğrulamak gerekir.

Gemini CLI, Android projelerinde en çok hangi hataları yapar?

Gradle versiyon uyumsuzlukları, manifest ve resource linking hataları, proguard/R8 kurallarını bozma ve minSdk/targetSdk değişiklikleri görülür. Bu dosyaları diff ile inceleyip elle onaylayın.

Ajanlarını bir masaya topla.

AgentVera’yı ücretsiz indir; kurulu CLI’ların hazır.

Diğer Gemini CLI rehberleri

Kotlin ve Android için diğer ajanlar