Bir süredir online/offline olarak yazılım topluluklarının içerisindeyim. Elimden geldiğince bildiklerimi paylaşmaya çalışıyorum. Bunun bir yolu da Slack, Telegram gibi ortamlarda soru cevaplamaya çalışmak. Yazılım alanında tecrübe kazandıkça nasıl soru sorulması gerektiği daha çok anlaşılıyor fakat yazılıma yeni başlayanların da bu kuralları bilmeleri sorularına cevap alma şanslarını arttıracaktır. Türkçe böyle bir kaynak var mı diye bakındım fakat bulamadım. Sizin de aklınıza gelen eksik kalan yerler varsa yorum yazarsanız sevinirim.

Soru sormadan önce

Probleminizi Google’da aratın. Google’da arama yapabilmek bir yazılımcı için en gerekli becerilerden birisidir. Ne kadar tecrübeli olursa olsun bir insanın herşeyi bilme veya hatırlama şansı yok. Yazılım’a yeni başlıyorsanız sormak istediğiniz şey…


İlk yazıda Google’ın Türkiye’de satılacak telefonlara uygulama lisansı vermemesinin Türkiye’deki yazılım geliştiricileri neden ve nasıl etkileyeceğinden bahsetmiştim. Bu yazıda Android projelerde neler yapmanız gerektiğinden bahsedeceğim. Tabi Türkiye pazarını hedeflemiyorsanız bunlar gerekli değil. İlk yazıya aşağıdaki linkten erişebilirsiniz.

Google Play Services ve Firebase Kullanımı

İlk başta yapmanız gereken, en kısa sürede hangi Google Play Services ve Firebase Servislerini kullandığınızı belirlemeniz. Google Play Services kütüphanelerinin listesine buradan Firebase kütüphanelerinin listesine buradan erişebilirsiniz. Cihazda Google Play Services’in olup olmadığını ve versiyonunu kontrol ettiğimiz isGooglePlayServicesAvailable (Context context) fonksiyonunun sonucunda ne yaptığınızı incelemek iyi bir fikir olabilir. Eğer Google Play Services cihazda yüklü değil ise uygulamayı kapatıyorsanız bu kodu gözden geçirmek…


Google ile Rekabet Kurumunun anlaşmazlığı sonucu Google’ın Türkiye’de satılacak telefonlar için Google uygulama lisansı vermeyecegi haberi gündeme bomba gibi düştü. Hem durum biz Android geliştiricileri ve uygulamalarımızı nasıl etkileyecek, hem de şimdi ve bu anlaşmazlığın devam etmesi durumunda nasıl bir planlama yapmamız gerektiği ile ilgili aklıma gelenleri paylaşmak istedim.

İlk başta Google uygulama lisansı ne demek ondan bahsedeyim. Android bildiğiniz üzere açık kaynak bir işletim sistemi. İsteyen herkes kaynağı alıp kendi cihazı için derleyip bu işletim sistemini kullanabilir. Bunun en bilinen örneği Amazon Fire ya da Fire OS. Amazon çıkardığı tabletlere kendi Android versiyonununu koydu. İçerisinde Google uygulamaları ve Google…


In this series I have been talking about the problems with Android development and things we use to solve them. They were chronic problems and some of them are solved by the community. I think by the time Google was busy solving problems facing user side. Improvements on the development tools was limited. Release of Android Studio eased some of the pain but there were other problems.

About two years ago Google released the first Android Architecture Component which is Lifecycle. Since then more Android Architecture Components(AAC) are released to solve different problems. I think they have easy to use…


Android mimarisi ve Dependency injection hakkındaki ikinci bölüme burdan erişebilirsiniz:

Bu yazı dizisinde Android geliştirme ile alakalı problemleri ve bunları nasıl çözdüğümüzden bahsettim. Bu problemlerin bazıları yazılımcı komunitesi tarafından çözüldü. Bu sırada Google son kullanıcı tarafındaki problemleri çözmekle meşguldü. Geliştirme araçları tarafında gelişim oldukça kısıtlıydı. Android Studio’nun gelişi problemlerin bir kısmını çözdü fakat çözemediği bir çok problem vardı.

Yaklaşık iki sene önce Google ilk Android Architecture Component olan Lifecycle’ı yayınladı. Daha sonra başka problemleri çözen başka Android Architecture Components(AAC)’lar yayınlandı. AAC kütüphaneleri kullanımı kolay, üzerinde iyi düşünülmüş ve birlikte de çok güzel çalışan kütüphaneler. Fakat aslında bunların bazılarına hiç ihtiyacımız…


Merhabalar,

Etkinliklere katılım durumunuz değiştiğinde Meetup üzerinden de güncellemesinin önemini vurgulamak istiyoruz.

GDG İstanbul ekibi olarak düzenlediğimiz etkinliklere gösterdiğiniz yoğun katılım isteği bizi çok mutlu ediyor. Fakat şöyle bir problemimiz var; Etkinliklere “katılıyorum” olarak işaretleyip etkinliğe gelmeyen/gelemeyen katılımcılar (no-show). Bu durum, hem ekip hem de katılımcılar açısından ciddi sorunlara neden oluyor. Diğer komünitelerin de aynı problemle karşılaştıklarını sosyal medya üzerinden gördük.

Etkinliklerimiz için mümkün olduğunca büyük ve herkesin rahatça vakit geçirebileceği yerler seçmeye çalışıyoruz. Fakat bu her zaman mümkün olmayabiliyor. …


I attended my first I/O this year, and it was a really good experience. While there, I Tweeted about some of the announcements in real-time. You can check them out on my twitter page.

But I wanted to dig a bit deeper and give more detail about news related to Android development that came out of I/O. There are other developments and Android-related announcements, but here I’ll only mention one connected specifically to Android development.

Many people I spoke to think that the announcements weren’t quite as shiny as in previous years. I kind of agree with this, but at…


Coroutine’ler Kotlin’de ve Android geliştirmede gündemdeki konulardan. CitizenMe Android uygulamasında coroutine’ler RxJava'nın Single, Maybe ve Completable classlarının yerini aldı. Devfest istanbul’da bu konu ile alakalı yaptığım sunuma buradan erişebilirsiniz. Bugün bu geçişten sonraki deneyimlerimizden bahsedeceğim. Başlamadan önce Channel’ları henüz kullanmaya başlamadık. Cold streaming özelliği geldiği zaman bu konuyu tekrar değerlendirmeyi düşünüyorum. Yani Channel’lar bu yazının kapsamının dışında.

Söylemeliyim ki RxJava’yı gerçekten seviyorum. Daha önceki bir yazımda RxJava’nın Android’de neden kullanılması gerektiğini düşündüğümü anlatmıştım. RxJava Java dünyasında asenkron programlama için en iyi tool’lara sahip ve bence hala en iyi seçenek. CitizenMe Android uygulamasında Observable pattern için hala kullanıyoruz. …


Kotlin coroutines is the hot topic in the Kotlin and Android development. In CitizenMe Android app coroutines replaced usages of RxJava’s Single, Maybe and Completable classes. I gave a talk on DevFest Istanbul about it a while ago. Slides can be found here. I will talk about the experience we had with coroutines on production in this post. We don’t use Channels yet. I am kind of waiting Cold streams to be implemented to check it out. So it is out of scope of this post.

I should state this: I am really a fan of RxJava. On one of…


Support library ve Google Play Services hakkindaki serinin ilk bölümüne buradan erişebilirsiniz:

Selimiye Camisi-Edirne

Android uygulama geliştirmede kullanılan mimari yıllar içerisinde çok değişti, o kadar ki daha tecrübeli geliştiriciler için bile takibi zor olabiliyor. Mimaride MVC, MVP, MVVM, MVI ve diğerleri, Dependency Injection tarafında Java’da Dagger, Dagger 2 ve Kotlin’de Koin ve Kodein var. Bu seçeneklerden en doğrusu hangisi ve hangisini kullanmak gerek? Bu soruya cevabım yok fakat bunları neden kullandığımızı açıklamaya çalışacağım.

Bence yazılım mimarisinin yaptığı iki şey var:

  • Kodu birbirinden izole katmanlar halinde ayırma(Layers of Abstraction)
  • Katmanlar arasındaki iletişimi belirleme.

Farklı mimariler bu iki şeyi farklı yapar. MVx mimari modelleri…

Hadi Tok

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

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store