Akbank’ın Android 6 ile imtihanı

Hadi Tok
3 min readFeb 21, 2016

--

İşim gereği bulabildiğim ilk anda Android 6'lı bir telefon aldım. Telefonu aldıktan sonra eski telefonda kullandığım uygullamarı yeni telefona yükledim. Tahminimden kolay oldu bu geçiş fakat bir uygulama beni hayal kırıklığına uğrattı. Bu da Akbank’ın Direkt Android uygulaması.

Bu uygulama uzun zamandır(yaklaşık iki senedir) arka plandan ön plana geçerken crash alıp kapanıyordu. Bu android uygulamalarının bir çoğunda karşılaşılan bir problem. Genellikle bir Activity açılırken intent içerisinde gönderilen parametrelerin onSaveInstanceState()’de gerektiği gibi saklanmamasından oluşan bir problem. Bu hatanın teşhisi için aslında Android Studio gereken araçları sağlıyor. Android Monitor tabında “Terminate Application” butonuna basıp sanki memory yetersizliği durumundaki gibi uygulama kapatılabiliyor arka planda iken. Böyle bir problemin çözülmemesi Akbank gibi platform uygulamaları konusunda iddalı bir banka için bence bir prestij kaybı. Bu bahsettiğim hata muhtemelen tüm platformlarda başınıza gelebilecek bir hata.

Gelgelelim Android 6 ile alakalı probleme. Uygulamaya giriş yaptıktan sonra bir kredi kartı ya da banka kartına tıkladığınızda uygulama crash oluyor. Google play’de olan uygulamalarda bir crash olduktan sonra rapor göndermek isterseniz raporun içeriğini görebiliyorsunuz, buns stack trace’de dahil. Benim durumumda soyle bir stack trace var:

Bu hatayı Google’da arattığınız zaman bu hatanın sebebinin Android sisteminde internal olarak kullanılan bir interface metodunun Android 6'da @hide annotasyonu ile dış kullanıma tamamen kapatılmış olması. Bu metodun dışarıdan override edilmemesi gerektiği comment ile belirtilmiş daha önceden. Bu konuda güzel bir yazı için : https://medium.com/@numan1617/android-framework-classes-choose-wisely-2f8300f6c255#.2grx3j228

Yukardaki linkde açıklandığı uzere quick&dirty bir çözüme gidilmiş. Böyle bir hack’e neden ihtiyaç duyulacağı konusunda hiç bir fikrim olmasa da konumuzdaki asıl problem bu değil. Bir sorunun çözümünde bir hack kullanmak gördüğüm kadarı ile yazılımcıların(benim de dahil) gerçekten keyif aldığı bir şey. Asıl problem bu crash’in zamanında çözülmemiş olması.

Google bir süredir Android sürümlerini resmi olarak yayınlamadan önce preview sürümü yayınlayıp geliştiricilerin yeni çıkacak sürümlerle alakalı gerekli testleri yapıp daha sonra gerkiyorsa adaptasyonlarını yapmalarını sağlıyor. Bu adaptasyonlar hem tasarım hem de kodda yapılması gereken değişiklikler olabilir. Akbank’ın bu preview sürümlerini kullanarak test etmediği belli. Üstüne üstlük Resmi olarak Android 6'nın yayınlanmasının üzerinden iki buçuk ay geçmesine rağmen bu hatayı düzeltmeye niyetleri yok gibi. Pardon niyetleri yok dersem sanırım biraz haksızlık etmiş olurum ki sebebbi şu:

Google play’de iki gün önce yayınlanan Akbank Direkt uygulamasında Android 6 ile uyumluluk sağlandığı söyleniyor:

Fakat aynı problem devam etmekte. Böyle bir güncellemeyi zaman kazanmaya çalışma mı yoksa düzgün test etmeme konusunda mı ele alsam bilemedim. Bu konuyu başka bir yazıda irdelemek daha doğru olur sanırım.

Genel olarak baktığımızda bu konudan şu dersleri çıkartabiliriz:

  • Uygulamanmızın yeni çıkacak sürümlere mümkünse yeni sürüm yayınlanmadan çalıştığına emin olmamız gerek.
  • Bir hack kullandığımız zaman bu hack’in artık uygulanamaz olduğunda bundan geri dönüşünün bize maliyetinin ne olacağını düşünmemiz gerekiyor.
  • Uygulamamızın kullanıcılarımızın bir kısmı için tamamen çalışmaz hale geldiğinde bunun çözümüne öncelik vermeliyiz.
  • Uygulamamızın bir şeyi yaptığını vaad ediyorsak bunu gerçekten yapabildiğimizden emin olmamız gerekir. Zaman kazanmak için ya da düzgün şekilde bunu test etmeden yaptığmızı iddia edip yapamıyorsak kullanıcının gözündeki değerimiz daha da aşağı düşer.

--

--

Hadi Tok
Hadi Tok

Written by Hadi Tok

Google Developers Expert for Android | Software Engineer @Facebook | ⋰Ẍ⋱Circassian⋰Ẍ⋱

No responses yet