AXV

Build Variantlari va Product Flavors

Debug vs Release, R8 optimallashtirish, BuildConfig va Free vs Paid arxitekturasi

10-sinfAdvanced Android1-hafta · 2-dars

Bugun nimani o'rganamiz?

Debug vs Release

Dasturchi rejimi va Google Play uchun optimallashtirilgan yakuniy mahsulot farqlari

Product Flavors

Bitta kod bazasidan bir nechta mustaqil ilovalar (Free, Pro, Client, Driver) yaratish

BuildConfig

Gradle orqali Kotlin kodiga o'zgaruvchilar uzatish va dinamik muhitlarni boshqarish

01

Build Types: Debug va Release

Yig'ish rejimlari, nosozliklarni qidirish va xavfsiz optimallashtirish

Ikkita mutlaqo turli maqsad

«Debug rejimi — dasturchining ustaxonasi bo'lsa, Release rejimi — xaridor ko'radigan yaltiroq do'kon vitrinasidir.»

Debug rejimi

Kompilyatsiya maksimal tezlikda bo'ladi. Barcha loglar ochiq, kod o'zgartirilmaydi, disk raskadrovka qilish oson.

Release rejimi

Google Play uchun tayyor mahsulot. Keraksiz kodlar o'chiriladi, fayl hajmi siqiladi va xavfsizlik uchun kod chalkashtiriladi.

Debug va Release rejimlarining taqqoslovi

DEBUG BUILD Ishlab chiqish va test rejimi debuggable: true (Logcat ochiq) minifyEnabled: false (Tez yig'ish) applicationIdSuffix: ".debug" Hajmi kattaroq, kod ochiq ko'rinadi RELEASE BUILD Google Play va foydalanuvchilar uchun debuggable: false (Loglar yopiq) minifyEnabled: true (R8 optimallashtirish) Obfuscation (Klass nomlari a, b, c) Minimal hajm, to'liq imzolangan (Sign)
02

Product Flavors: Mahsulot Variantlari

Bitta kod bazasidan bir nechta turli ilovalarni chiqarish san'ati

Nega Product Flavors kerak?

Kodni nusxalamaslik

Free va Paid versiyalar uchun 2 ta loyiha ochish xavfli. Flavors orqali 95% umumiy kod bir joyda saqlanadi.

Parallel o'rnatish

applicationIdSuffix orqali bitta smartfonga bir vaqtning o'zida ham Free, ham Paid ilovani o'rnatish mumkin.

Moslashuvchanlik

Har bir variant uchun o'ziga xos rasm, ilova nomi va maxsus funksiyalar to'plamini biriktirish mumkin.

Bitta kod bazasidan bir nechta ilova

COMMON SOURCE CODE src/main (95% umumiy kod) Ma'lumotlar bazasi, tarmoq, dizayn FREE FLAVOR applicationIdSuffix: ".free" Reklamalar (Banner Ads) IS_PAID = false PAID / PRO FLAVOR applicationIdSuffix: ".pro" Reklamasiz, barcha funksiyalar IS_PAID = true
03

Build Variants Matritsasi

Product Flavors va Build Types kesishmasi

Build Variant formulasi

Matematik formula

$$\text{Build Variants} = \text{Flavors soni} \times \text{Build Types soni}$$

2 ta Flavor (Free, Paid) va 2 ta Type (Debug, Release) bo'lsa, jami 4 ta mustaqil variant hosil bo'ladi.

Tezkor almashtirish

Android Studio'dagi Build Variants oynasi orqali dasturchi bitta bosish bilan ilovaning kerakli variantini yig'ishi va emulyatorda tekshirishi mumkin.

2x2 Build Variants matritsasi

Debug Type Release Type Free Flavor Paid Flavor freeDebug Bepul versiyani testlash Logcat ochiq, tez yig'iladi freeRelease Google Play Bepul versiya R8 siqilgan, reklamali paidDebug VIP versiyani testlash Barcha funksiyalar ochiq paidRelease Google Play VIP versiya Kodni himoyalangan, to'liq
04

BuildConfig va Dinamik Boshqaruv

Gradle o'zgaruvchilarini Kotlin kodiga xavfsiz uzatish

BuildConfig qanday ishlaydi?

buildConfigField

Gradle konfiguratsiyasida turli variantlar uchun o'zgaruvchilar e'lon qilinadi:

buildConfigField "boolean", "IS_PAID", "true"
buildConfigField "String", "BASE_URL", "\"https://api.uz/\""

Kotlin kodida chaqirish

Ilova kodida ushbu o'zgaruvchilar statik tarzda ishlatiladi:

if (BuildConfig.IS_PAID) {
    enableVipFeatures()
}

Gradle dan Kotlin kodiga o'tish ko'prigi

1. build.gradle Konfiguratsiya sozlamasi buildConfigField "boolean", "IS_PAID" "true" 2. BuildConfig.java Avtomatik yaratilgan klass // Generated by Gradle public static final boolean IS_PAID = true; 3. Kotlin Kodi Ilova logikasi if (BuildConfig.IS_PAID) showProFeatures() else showAdBanner()

Product Flavor yaratish bosqichlari

1

flavorDimensions

O'lchov guruhini e'lon qiling: flavorDimensions "tier".

2

productFlavors

free va pro bloklarini ochib, ularga tegishli applicationIdSuffix bering.

3

Sync Now

Oynaning yuqorisidagi "Sync Now" tugmasini bosing va Gradle loyihani yangilashini kuting.

4

Build Variant

"Build Variants" panelidan kerakli variantni tanlang va emulyatorda ishga tushiring.

Havaskor vs Professional yondashuv

Xato: Nusxalash (Copy-Paste)

Free va Pro uchun alohida ikkita Android loyihasi ochish.

Biror xato topilsa, ikkala loyihada ham qayta tuzatishga majbur bo'lish.

Server URL'larini kod ichida qo'lda o'zgartirib yurish.

To'g'ri: Product Flavors

Yagona kod bazasi (Single codebase).

Bir necha soniyada yangi variantni yig'ish imkoniyati.

buildConfigField orqali barcha muhitlarni avtomatlashtirish.

Tezkor bilim sinovi

Loyihada 3 ta Product Flavor va 2 ta Build Type bo'lsa, jami nechta Build Variant hosil bo'ladi?
5 ta variant (3 + 2 = 5)
6 ta variant (3 x 2 = 6)
Faqat 2 ta asosiy variant (Debug va Release)
Variantlar sonini dasturchi qo'lda kiritadi

Amaliy laboratoriya mashg'uloti

1. Flavors sozlash

app/build.gradle faylida free va pro flavorlarini e'lon qiling. Ularga alohida applicationIdSuffix bering.

2. BuildConfig tekshiruvi

buildConfigField orqali IS_PAID bayrog'ini uzating. Kotlin kodida foydalanuvchi statusini Toast orqali chiqaring.

Darsning asosiy xulosalari

Xavfsizlik va Tezlik

Debug tezkor testlash uchun, Release esa R8 orqali xavfsiz va siqilgan mahsulot yaratish uchun xizmat qiladi.

Bitta kod — ko'p ilovalar

Product Flavors yordamida bitta loyihani o'nlab turli mijozlar va muhitlar uchun samarali boshqarish mumkin.

Keyingi dars: Dependency management va Version Catalog (libs.versions.toml)