Android Product Flavors/Build Types

Tunahan Özataç
Berkut Teknoloji
Published in
3 min readMar 30, 2022

Herkese merhabalar arkadaşlar, bu yazımda uygulama geliştirme sürecinde işimize oldukça yarıyacak versiyon farklılıklarını, uygulamamızı farklı ortamlarda test edebilmemizi sağlayan Product Flavors ve Build Types’i inceliyor olacağız. Bu süreçte kendi öğrenme sürecimde edindiğim bilgileri sizinle paylaşmaya çalışacağım. Hadi başlayalım o zaman. 🥳

Product Flavors/Build Types

1. Product Flavors

Product Flavors, kısaca birbirinden değişik özelliklere sahip uygulama oluşturmamız gerekiyorsa Product Flavors kullanmamız gerekir.

Product Flavors neden kullanmalıyız?

  • En temelinde uygulamamızın sürüm kontrolünde kullanabiliriz.
  • Uygulamamıza ücretli veya ücretsiz gibi kısmen göstermemiz gereken kısım yada demo kullanıcılar için özellikler eklememiz gereken durumlarda kullanabiliriz.
  • Uygulamamız API ler ile çalışıyorsa base url kısmımızı test API ile canlı API olarak ayırmak istediğimiz durumda.
  • Uygulama isminin, simgesinin, temaların ayrımını kontrol etmek istediğimiz durumlarda.

Product Flavors Kullanımı?

Product Flavors yapısını kullanabilmemiz için ilk olarak build.gradle(app) açıyoruz.

Kod bloğuna baktığımızda Flavor Dimensions belirlediğimiz kategoriye göre gruplayabiliyoruz. Product Flavors ise kullanabilmemiz için productFlavors kod blogu oluşturarak başlıyoruz. Yukarıdaki kod bloğunda iki ortam oluşturduk ilki dev(Test ortamı) ikincisi ise prod(Canlı ortam). Şu an boş şekilde tanımladık, android studio da sol alt kısımda Build Variants’a baktığımızda bizim için farklı varyantları oluşturduğunu göreceğiz.

Product Flavors ile uygulamamızda farklı varyantlar yapmamız mümkün bunlara baktığımızda,

Yukarıdaki ayrımlara baktığımızda ise ,

  • minSdkVersion ile uygulamamızın testte farklı canlı ortamda farklı şekilde tanımlayabiliyoruz.
  • targetSdkVersion da aynı şekilde testte farklı canlı ortamda farklı şekilde tanımlayabiliyoruz.
  • app_name ise uygulamamızın testte farklı görünmesini canlı da farklı görünmesini sağlayabiliyoruz.
  • Uygulamamızda servis işlerinde oldukça işimize yarıyacak kısım ise BASE_URL bu şekilde ayrımı sağlayıp farklı farklı apiler ile çalışabiliriz.

applicationIdSuffix

ApplicationIdSuffix ise ayrı değinmek istedim benim işime oldukça yarayan bir kısımdır. Kısaca applicationIdSuffix appid’mizin sonuna ekleme yaparak ayrımı sağlamaktadır. Nasıl işimize yarar bakacak olursak; uygulamanın hem test apilere bağlı versiyonu hem de canlı apilere bağlı versiyonu aynı telefonda kullanacak isek bu durumda bu ayrımı kullanabiliriz.

  • com.tunahanozatac.myapplication.test
  • com.tunahanozatac.myapplication.prod
applicationIdSuffix

2. Build Types

Build Types uygulamamızı geliştirirken gradle’ı daha verimli kullanmamıza olanak tanır. Build Types uygulamamızın imzalanmasını kolaylaştıran kısaca gradle’ı özelleştirmemizi sağlar. Default projemizde 2 farklı Build Types vardır. Bunlar Release ve Debug versiyonlarıdır. Fakat bizlere Debug mod defaultta gösterilmez.

Build Types’ı incelediğimizde Product Flavors gibi özelleştire biliriz ve yapısal olarak ortak noktaları bulunmaktadır.

Not: Uygulamamızda Firebase kullanmışsak project structure bu şekilde düzenlememiz gerekebilir.

Farklı farklı google-services.json dosyalarını bu şekilde paketlere ayırabiliriz.

Bu yazımda Product Flavors/Build Types temel seviyede değinmeye çalıştım. Umarım faydalı olmuştur. Bir sonraki yazıda görüşmek üzere. 😊

--

--