SOFT MARKETING / ANDROID MÜHENDİSLİĞİ

Kotlin Uygulama Geliştirme

Kotlin uygulama geliştirme yaklaşımımız, ürünün gerçek çalışma koşullarından başlar. Bağlantı değişirken, uygulama arka plana geçerken ve ekipler büyürken işin devamını tasarlarız.

Android ürününüzü konuşalım
NATIVE ANDROID / TEKNOLOJİ UZMANLIĞIAndroid hizmetinin tamamını keşfedin
01 / İŞLEMİN ÖMRÜ

Bir dokunuş biter.
İşlemin sorumluluğu devam eder.

Kotlin uygulama geliştirme sırasında önce kritik işlemin ne zaman tamamlandığını tanımlarız. Örneğin bir saha formunu cihazda saklamak, sunucunun formu kabul ettiği anlamına gelmez.

ÖRNEK MÜHENDİSLİK SENARYOSUBir saha servis formunun yolculuğu

Bağlantı gitti. Kayıt cihazda bekliyor.

Önce formu ve gönderim niyetini aynı yerel işlemde saklarız. Ardından kullanıcıya “Cihazda kayıtlı, gönderim bekliyor” durumunu gösteririz.

  1. CİHAZDAKİ KAYITKalıcı kayıtForm ve işlem kimliği
  2. GÖNDERİM KUYRUĞUBağlantı bekliyorKoşullu yeniden deneme
  3. SUNUCUDAKİ KAYITHenüz onaylanmadıYerel başarı ≠ sunucu kabulü
Mühendislik kararı

Room ile kalıcı kuyruğu kurarız; uygun ertelenebilir işler için WorkManager kullanırız. Ayrıca işlem kimliğiyle tekrarlı gönderimleri sunucuda ayıklarız. Çevrimiçi onay gerektiren ödemeleri bu akıştan ayrı tutarız.

Ekran yeniden kurulur. İşlem yeniden yaratılmaz.

Sistem uygulama sürecini sonlandırmış olabilir. Bu nedenle açılışta işlemi yerel veriden okur, gönderim durumunu doğrularız. Bellekteki bir değişkeni kalıcı kayıt saymayız.

  1. CİHAZDAKİ KAYITYeniden okunurAynı form, aynı işlem kimliği
  2. GÖNDERİM KUYRUĞUDurum uzlaştırılırYeni kopya oluşturulmaz
  3. SUNUCUDAKİ KAYITKabul kontrol edilirYanıt kaybı da değerlendirilir
Mühendislik kararı

WorkManager kalıcı iş planını yönetir; çalışmanın tam saatini garanti etmez. Ayrıca kullanıcı uygulamayı zorla durdurursa normal arka plan devamlılığını varsaymayız. Yeniden açılışta bekleyen işleri uzlaştırırız.

İki değişiklik var. Karar iş kuralında.

Başka bir çalışan aynı kaydı güncellemiş olabilir. Bu nedenle sürüm bilgisini karşılaştırırız. Formu sessizce ezmek yerine çakışmayı ürünün karar akışına taşırız.

  1. CİHAZDAKİ KAYITYerel değişiklik korunurGönderilen sürüm bilgisi
  2. GÖNDERİM KUYRUĞUKarar bekliyorKörlemesine tekrar edilmez
  3. SUNUCUDAKİ KAYITDaha yeni sürümYetkili durum ve çakışma yanıtı
Mühendislik kararı

Alan bazında birleştirme, kullanıcı onayı veya sunucu önceliği arasından ürüne uygun kuralı seçeriz. Ardından çakışma senaryolarını API sözleşmesiyle birlikte test ederiz.

02 / ANDROID ÇALIŞMA MODELİ

Hangi iş,
ne kadar yaşamalı?

Ekrandaki arama ile kalıcı dosya gönderiminin ömrü aynı değildir. Bu nedenle görev sahibini, iptal davranışını ve verinin kalıcılığını birlikte belirleriz.

ARAYÜZÜN ÖMRÜ

Jetpack Compose

Arayüzü tek yönlü veri akışıyla kurarız. ViewModel ekran durumunu üretir; Compose kullanıcı olaylarını iletir. Ayrıca Flow akışlarını yaşam döngüsüne uygun toplarız.

Yükleniyor, boş, hata ve bekleyen işlem durumlarını açıkça modelleriz. Bununla birlikte ekran dönüşü, tablet penceresi ve süreç yeniden oluşturma senaryolarını test ederiz.

ASENKRON İŞİN ÖMRÜ

Coroutines

Coroutines kapsamını işin sahibine bağlarız. Ardından görev iptalini, zaman aşımını ve hata yayılımını tanımlarız. Ağ veya disk işlemlerinin ana iş parçacığını bloke etmesini önleriz.

Ancak suspend tek başına arka planda çalışma garantisi değildir. Bu nedenle uygun dispatcher seçer, iptal sinyalini yutmayız. Önceki arama sonucunun yeni sorguyu ezmesini de engelleriz.

KALICI İŞİN ÖMRÜ

Room + WorkManager

Form ve kuyruk verisini kalıcı depoda tutarız. Buna karşılık küçük ekran durumlarında SavedStateHandle gibi araçları değerlendiririz. Ardından ertelenebilir işleri ağ ve pil koşullarıyla planlarız.

Kullanıcının başlattığı uzun aktarım veya sürekli cihaz bağlantısı farklı gereksinimler taşır. Bu nedenle güncel Android arka plan API’lerini, izinleri ve görünürlük yükümlülüklerini senaryoya göre seçeriz.

03 / EKİPLER VE SİSTEMLER BÜYÜRKEN

Kurumsal Android mimarileri.
Net sınırlar, ortak sorumluluk.

Kotlin uygulama geliştirme projelerinde modülleri gerçek ürün sınırlarına göre ayırırız. Böylece sipariş, saha operasyonu ve kimlik ekipleri değişikliklerinin etkisini daha kolay izler.

Clean Architecture, kararların yerini netleştirir.

İş kurallarını Compose ekranlarına veya Android SDK nesnelerine bağlamayız. Ancak her akışa gereksiz katman eklemeyiz. Karmaşıklık, test ihtiyacı ve ekip sahipliği sınırları belirler.

Modül sınırları için örnek çalışma sözleşmesi
Ürün sınırıSorumluluğuDoğrulama biçimi
feature:operationsOperasyon akışlarıİş kuralları, kullanıcı olayları ve ekran durumu.Domain birim testleri ve Compose etkileşim testleri.
core:dataVeri sözleşmeleriAPI modelleri, yerel kaynak, kuyruk ve senkronizasyon.Sözleşme, veritabanı migration ve kesinti testleri.
integration:deviceDonanım sınırıCihaz SDK’sını ürünün kullandığı arayüze uyarlamak.Gerçek donanımda bağlantı, izin ve hata senaryoları.
appÜrünün birleşimiModülleri bağlamak, ortam ve sürüm yapılandırmasını yönetmek.Derleme matrisi, kritik yol ve dağıtım kontrolleri.
BÜYÜME KARARI

Ayrıca bağımlılık yönünü, Gradle derleme süresini ve ortak paketlerin sahipliğini takip ederiz. Kullanıcı yükü büyüdüğünde ise API kapasitesini, veri erişimini ve backend ölçeklenmesini ayrıca planlarız.

04 / UYGULAMANIN DIŞINDAKİ DÜNYA

Donanımla konuşur.
Sistemin geri kalanını anlar.

Kotlin uygulama geliştirme kapsamını ekran sayısıyla sınırlamayız. Cihaz entegrasyonları, API entegrasyonları ve olay akışları için hata davranışını baştan belirleriz.

ANDROID SDK / CİHAZ ENTEGRASYONLARI

İzin almak,
entegrasyonun başlangıcı.

Kamera, konum, Bluetooth LE ve NFC gereksinimlerini kullanım amacıyla birlikte inceleriz. Ayrıca üretici SDK’sını ve hedef donanımı gerçek cihazda doğrularız.

Bağlantı
Cihaz bulunamazsa, bağlantı koparsa veya eşleşme değişirse kullanıcıya uygulanabilir bir sonraki adım sunarız.
İzin
Reddedilen veya sonradan kaldırılan izinleri ele alırız. Ardından alternatif akışı ve tekrar isteme zamanını belirleriz.
Uyumluluk
Android sürümü, üretici ve donanım varyantlarını destek matrisiyle sınırlarız. Böylece saha testinin kapsamı açık olur.
API + BACKEND

İş kuralı iki tarafta da anlaşılır.

Kimlik doğrulama, token yenileme, sayfalama ve sürüm uyumluluğunu API sözleşmesine dahil ederiz. Ayrıca tekrar denemeyi işlem türüne göre sınırlarız; yetki hatasını bağlantı hatası gibi ele almayız.

Backend ekibiyle işlem kimliği, çakışma yanıtı ve hata kodlarında anlaşırız. Böylece istemcideki bekleyen durum, sunucudaki gerçek işlemle eşleşir.

FIREBASE + REALTIME

Yeni olay gelir. Durum doğrulanır.

Firebase servislerini ürünün veri ve yetki modeline göre seçeriz. Örneğin Firestore dinleyicilerini yaşam döngüsüyle yönetir, Security Rules için kullanıcı ve kurum ayrımını test ederiz.

Özel realtime altyapısında ise olay kimliği, sıralama ve yeniden bağlantıyı tanımlarız. Ayrıca kaçırılan değişiklikleri sunucuyla uzlaştırırız; sürekli açık bağlantıyı tek doğruluk kaynağı saymayız.

FCM / PUSH NOTIFICATION

Bildirim çağırır. Uygulama kontrol eder.

Push Notification akışında FCM token yenilemesini, bildirim kanallarını ve izinleri yönetiriz. Ardından deep link açıldığında oturumu ve kaynağın güncel yetkisini doğrularız.

Ancak bildirim teslimini kritik işlemin onayı saymayız. Gecikme, tekrar ve izin reddi durumlarında kullanıcı uygulama içindeki güncel kayda ulaşabilir.

05 / PRODUCTION İÇİN KABUL ÖLÇÜTLERİ

“Çalışıyor” demeden önce,
hangi koşulda çalıştığını biliriz.

Kotlin uygulama geliştirme sürecinde performans ve güvenlik hedeflerini somut kullanım koşullarıyla belirleriz. Ardından sürümün bu koşulları karşıladığını gösteren kanıtları toplarız.

01

Performans

Açılışı, uzun listeleri ve toplu veri güncellemelerini release derlemesinde ölçeriz. Ayrıca Macrobenchmark, Perfetto ve Android vitals ile takılma ve ANR nedenlerini inceleriz.

BEKLENEN KANIT

Hedef cihazlarda önce/sonra ölçümü; bellek, pil ve ana iş parçacığına ilişkin darboğaz analizi.

02

Güvenlik

Hassas anahtarları Android Keystore ile koruruz. Ayrıca yerel veri, yedekleme ve log politikasını tanımlarız. Kimlik ve işlem yetkisini sunucuda doğrular, uygulama paketinde sunucu sırları tutmayız.

BEKLENEN KANIT

Yetkisiz erişim, oturum sonlandırma ve kurumlar arası veri izolasyonu testleri; SDK veri erişimi incelemesi.

03

Süreklilik

Kuyruk tekrarını, ağ kesintisini, süreç yeniden oluşturmayı ve veritabanı geçişlerini test ederiz. Bununla birlikte kamera, okuyucu ve diğer donanımları gerçek cihazla doğrularız.

BEKLENEN KANIT

Kritik iş kuralları için birim testleri; Compose, API ve yerel veri için bütünleşik senaryolar.

GOOGLE PLAY / BAKIM VE GELİŞTİRME

Yayın, mühendisliğin
devam ettiği yer.

Google Play yayınlama planını geliştirme sırasında kurarız. Böylece imzalama, veri beyanı ve test dağıtımı son güne kalmaz.

01 / Hazırlıkİmzalı sürüm, izlenebilir çıktı

CI sürecine derleme, test ve sürümleme kontrollerini ekleriz. Ayrıca Play App Signing yapılandırmasını, yükleme anahtarı erişimini ve AAB çıktısını yönetiriz.

Data safety beyanını gerçek veri akışıyla eşleştiririz. Ardından hedef API, izinler ve güncel mağaza gereksinimlerini yayın kapsamına göre kontrol ederiz.

02 / DağıtımKontrollü kullanıcıya açılış

Önce uygun test kanallarında kritik akışları doğrularız. Ardından üretim dağıtımını, uygun olduğunda kademeli güncelleme planıyla yürütürüz. Mağaza onayı veya inceleme süresi için garanti vermeyiz.

Bir sorun görürsek dağıtımı durdurma ve düzeltme sürümü çıkarma kararını hazır tutarız. Ayrıca dağıtımı durdurmanın yüklenen sürümleri geri almadığını plana dahil ederiz.

03 / SüreklilikBir sonraki sürüme hazır ürün

Crashlytics ve Android vitals verilerini sürüm ve cihaz bağlamıyla inceleriz. Ardından ANR, çökme, senkronizasyon ve kullanıcı geri bildirimlerini önceliklendiririz.

Ayrıca Kotlin, Compose, SDK ve bağımlılık güncellemelerini uyumluluk testleriyle planlarız. Migration senaryoları, bakım sorumluluğu ve teknik karar kayıtları ekipte kalıcı bilgi oluşturur.

BİRLİKTE BAŞLAYALIM

En kritik Android akışınızı
birlikte ele alalım.

Kotlin uygulama geliştirme ihtiyacınızı mevcut ürün, backend ve cihaz koşullarıyla değerlendirelim. İlk olarak riskli akışı seçelim; ardından mimari sınırları, teknik doğrulama adımlarını ve teslim kapsamını netleştirelim.

Soft Marketing
info@softmarketing.net

Teknolojinin insan tarafı. :}