Android geliştirme sürecinde, farklı pazarlar, hedef kitleler veya özelleştirilmiş gereksinimler için birden fazla uygulama varyasyonu oluşturmanız gerekebilir. Bu noktada Product Flavors öne çıkar. Product Flavors, Android Gradle yapı sistemi ile desteklenen ve aynı kod tabanını kullanarak birden fazla uygulama varyasyonu oluşturmanıza imkan tanıyan bir özelliktir.

Product Flavors Nedir?
Product Flavors, Android projelerinde aynı kod tabanını kullanarak birden fazla uygulama varyasyonu oluşturmanıza olanak tanır. Örneğin:
-
Ücretli ve ücretsiz sürümler
-
Farklı müşteri markaları için uygulama sürümleri
-
Beta ve prodüksiyon sürümleri
Bu özellik, Gradle build sisteminin bir parçasıdır ve farklı yapılandırmalar, kaynak dosyaları ve bağımlılıklar tanımlamanıza olanak sağlar. Ayrıca:
-
Çeşitli coğrafi konumlarda veya farklı dil seçeneklerinde uygulamalar sunmak.
-
Geliştirme ve üretim ortamlarını ayırmak, böylece geliştirme sırasında kullanılan test API’leri ve diğer ayarlar üretim versiyonunda devre dışı bırakılabilir.
Neden Product Flavors Kullanmalıyız?
-
Kod Tekrarını Azaltma: Farklı sürümler için ayrı projeler oluşturmak yerine, tek bir proje ile tüm varyasyonları yönetebilirsiniz.
-
Kolay Yönetim: Her flavor, kendi bağımsız yapılandırmasına sahip olabilir. Bu, özelleştirilmiş simgeler, adlar, URL’ler gibi öğelerin kolayca yönetilmesini sağlar.
-
Zamandan Tasarruf: Farklı sürümlerin aynı anda inşa edilmesi ve test edilmesi mümkündür.
-
Hedef Pazarları Ayırma: Reklamlı ve reklamsız versiyonlar gibi farklı pazar segmentlerine hitap eden uygulama varyasyonları oluşturabilirsiniz.
-
Çevik Geliştirme: Test ve prodüksiyon ortamlarını ayrı tutarak daha güvenli ve verimli bir geliştirme süreci elde edersiniz.
Product Flavors Nasıl Kullanılır?
1. Gradle Yapılandırması
Android modülünüzün build.gradle
dosyasını açın ve productFlavors
bloğunu ekleyin:
android {
...
flavorDimensions "default"
productFlavors {
free {
applicationId "com.example.app.free"
versionNameSuffix "-free"
}
paid {
applicationId "com.example.app.paid"
versionNameSuffix "-paid"
}
}
}
2. Kaynak Dosyalarını Özelleştirme
Her flavor için özel kaynaklar oluşturabilirsiniz. Örneğin:
app/src/free/res/values/strings.xml
app/src/paid/res/values/strings.xml
strings.xml
dosyalarında flavor’a özgü değerler tanımlayabilirsiniz:
free/strings.xml:
<string name="app_name">MyApp Free</string>
paid/strings.xml:
<string name="app_name">MyApp Paid</string>
3. Bağımlılık Yönetimi
Her bir flavor için bağımsız bağımlılıklar ekleyebilirsiniz:
free {
implementation "com.example:free-sdk:1.0.0"
}
paid {
implementation "com.example:paid-sdk:1.0.0"
}
4. Build ve Test
Farklı sürümleri oluşturmak için aşağıdaki komutları kullanabilirsiniz:
./gradlew assembleFreeDebug
./gradlew assemblePaidRelease
Android Studio’da ise Build Variants sekmesinden istediğiniz flavor’ı seçebilirsiniz.
İleri Seviye Özellikler
1. Çoklu Dimension Kullanımı
Birden fazla dimension kullanarak daha karmaşık yapılandırmalar oluşturabilirsiniz:
flavorDimensions "pricing", "region"
productFlavors {
free {
dimension "pricing"
}
paid {
dimension "pricing"
}
us {
dimension "region"
}
eu {
dimension "region"
}
}
2. Ortak Kod Paylaşımı
Her flavor için ortak kodlarınızı main
dizininde tutabilirsiniz:
app/src/main/java
Product Flavors, Android uygulamalarında özelleştirilmiş varyasyonlar oluşturmayı kolaylaştırır ve projeyi daha yönetilebilir hale getirir. Bu özellik sayesinde aynı kod tabanını kullanarak birden fazla sürümü kolayca yönetebilir ve zaman tasarrufu sağlayabilirsiniz. Aynı zamanda hedef pazar segmentlerine yönelik özel özellikler eklemek, farklı coğrafi konumlara veya dillerde uygulama sunmak ve geliştirme-üretim ortamlarını ayırmak gibi avantajlar sunar.