38 puan yazan xguru 2025-03-12 | 7 yorum | WhatsApp'ta paylaş

Günümüz standartlarına göre Android uygulama geliştirme ortamına giriş

  • Derleme: gradle
  • Derleme yapılandırması: convention plugin
  • Bağımlılık yönetimi: version catalog
  • build cache kullanımı
  • Derleme performansı analizi: build-scan
  • Modül yapısı: özellik bazında ayrım
  • Ağ iletişimi - retrofit
  • JSON eşleme - kotlinx serialization
  • Kalıcı veri depolama - jetpack datastore, room
  • DI - koin
  • Görsel yükleyici - coil
  • UI - compose
  • View ile ViewModel arasındaki iletişim - flow
  • Kod kalitesi yönetimi - ktlint, konsist
  • Birim testi - junit 4

7 yorum

 
kipsong133 2025-03-13

Güzel yazı için teşekkürler

 
ganadist 2025-03-12

Bir şekilde Android uygulama build mühendisi olarak yerleşmiş biri olarak fikrimi bırakacak olursam..

Build: gradle

Çok büyük ya da karmaşık olsa bile gradle kullanmak gerekiyor... (uzaklara dalan bakış)
Çok büyük ya da karmaşık projelerde gradle’ın build performansını iyileştirmek için aşağıdaki projeler yürütülüyor; bu yüzden büyük projelerde gradle kullanıyorsanız, migration hazırlıklarını şimdiden yapmakta fayda var.

Modül yapısı: feature bazında ayırma

Kişisel olarak, mimari katmanları özellikle build sistemine görünür kılmak için bir neden olmadığını düşünüyorum.
Benim yönettiğim uygulamada modülleri feature-api / feature-impl olarak build sistemine görünür olacak şekilde düzenliyoruz.

  • feature-app:
    • Veri modeli veya başka modüllerle entegre olan interface
  • feature-impl:
    • feature’ın gerçek implementasyonu

Bu şekilde yapılandırınca, feature-impl içindeki kod değişiklikleri feature-api’yi referans alan diğer modülleri etkilemediği için (dependency isolation), incremental build ya da build cache hit rate artışı açısından çok faydalı oluyor.

Birim testi - junit 4

Burada Google’ın kararının büyük rol oynadığını düşünüyorum.

 
ganadist 2025-03-12

Ancak en yeni teknolojileri(?) devreye almak istediğinizde JUnit4 sık sık ayak bağı olabiliyor; bu yüzden kişisel olarak JUnit5'e geçilmiş olmasını dileyen küçük bir temennim var.
https://docs.gradle.com/develocity/test-distribution/

junit-vintage-engine kullanılırsa büyük değişiklikler yapmadan junit4 testlerini junit5 üzerinde çalıştırmak mümkün, ancak ek yük oldukça fazla. (yaklaşık %20 kadar yavaşlıyor)

 
kingori 2025-03-12

Vay canına, aileniz adına ne büyük bir onur.

 
gera1d 2025-03-14

Ben Wilson!

 
brainer 2025-03-12

Hmm... Bu arada son birkaç yılda startup'ların çoğunun Flutter'ı tercih ettiği, META ve OpenAI gibi büyük şirketlerin ise native'e yöneldiği garip bir olgu gözlemleniyor..

 
tsboard 2025-03-12

Tam bu yıl bir Android uygulaması yapmayı düşünüyordum; oldukça faydalı bir rehber oldu. :)