AXV

Build variantlar: debug va release

buildTypes, debug, release, R8, buildConfigField, productFlavors

10-sinfAdvanced Android5-hafta · 14-dars

Bugun nimalarni o'rganamiz?

Debug va Release

Ishlab chiqish va nashr uchun

buildConfigField

Variantga mos qiymat

productFlavors

Bir loyiha, ko'p versiya

Takrorlash

Ilovaning noyob nomi qaysi parametrda beriladi?

applicationId — defaultConfig ichidagi noyob identifikator.
01

Debug va Release

Ishlab chiqish va nashr uchun

Qaysi build qachon

Kod yozish Debug: sinov Release: nashr Foydalanuvchi Debug dasturchiga, release foydalanuvchiga

Ikki build turi


android {
    buildTypes {
        debug {
            applicationIdSuffix = ".debug"
            isDebuggable = true
        }
        release {
            isMinifyEnabled = true
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
    }
}
  
isMinifyEnabled = true bo'lgach R8 ishlaydi. Manba hujjatda Groovy yozuvi minifyEnabled true, Kotlin DSL da esa isMinifyEnabled = true yoziladi.

Mini-test

Qaysi build turida R8 kodni qisqartiradi va optimallashtiradi?

Release da isMinifyEnabled = true yoqiladi.
02

buildConfigField

Variantga mos qiymat

BuildConfig yo'li

Gradle:buildConfigField BuildConfigyaratiladi Kodda BASE_URL Variantgamos qiymat Bir kod, ikki xil manzil

BASE_URL har variantda


android {
    buildFeatures { buildConfig = true }
    buildTypes {
        debug {
            buildConfigField("String", "BASE_URL", "\"https://test.api.com\"")
        }
        release {
            buildConfigField("String", "BASE_URL", "\"https://prod.api.com\"")
            isMinifyEnabled = true
        }
    }
}

// Kotlin kodida
val url = BuildConfig.BASE_URL
  
Qiymat ichidagi tirnoqlar \" bilan yoziladi, chunki Gradle uni kod sifatida yaratadi. Debug da test, release da prod manzil chiqadi.

Mini-test

BuildConfig.BASE_URL debug build da nimaga teng (yuqoridagi sozlama bilan)?

Debug blokida test manzili berilgan.
03

productFlavors

Bir loyiha, ko'p versiya

Variantlar ko'paytmasi

Flavor:free, paid Type: debug,release Variant: 2 x 2 freeDebugva boshqalar 2 flavor va 2 type 4 ta variant beradi

Flavor va variantlar


android {
    flavorDimensions += "tarif"
    productFlavors {
        create("free") {
            dimension = "tarif"
            applicationIdSuffix = ".free"
        }
        create("paid") {
            dimension = "tarif"
            applicationIdSuffix = ".paid"
        }
    }
}
// Variantlar: freeDebug, freeRelease, paidDebug, paidRelease
  
Ikki flavor va ikki build type — jami 4 variant. Variant tanlash: View > Tool Windows > Build Variants.

Mini-test

2 ta flavor (free, paid) va 2 ta build type (debug, release) bo'lsa, nechta variant hosil bo'ladi?

2 x 2 = 4: freeDebug, freeRelease, paidDebug, paidRelease.

Debug va Release

Debug

Xatolar ochiq, tez yig'iladi, debug kaliti, optimallashtirishsiz
VS

Release

R8 optimallashtiradi, o'z kaliti bilan imzolanadi, nashrga tayyor

Sinov uchun debug, foydalanuvchiga release beriladi.

Atamalar. Bosing

Build type

bosing

Qurilish turi: debug, release

Flavor

bosing

Ilovaning versiyasi: free, paid

R8

bosing

Kodni qisqartiruvchi va optimallashtiruvchi vosita

BuildConfig

bosing

Gradle yaratadigan konstantalar sinfi

Variant yaratish bosqichlari

1. buildTypes

debug va release sozlamalarini yozing.

2. Konstantalar

buildConfigField bilan BASE_URL bering.

3. Variant tanlang

Build Variants oynasidan tanlab ishga tushiring.

Debug va Release farqi

XususiyatDebugRelease
Maqsaddasturchi uchunfoydalanuvchi uchun
R8 / minifyo'chiqyoqilgan
Imzodebug kalitio'z kaliti (keystore)
Tezlikoddiyoptimallashtirilgan
Logcatto'liq loglarkamroq ma'lumot

Pastga bosing: release oldidan

Release oldidan tekshiruv

  1. BASE_URL prod manzilga ishora qilishini tekshiring.
  2. R8 yoqilgan release ni real telefonda sinab ko'ring.
  3. versionCode oshirilganini va imzo kaliti tayyorligini tasdiqlang.

Release ga o'tkazamiz


buildTypes {
    release {
    }
}
  

Release ga o'tkazamiz


buildTypes {
    release {
        isMinifyEnabled = true
    }
}
  

Variantlar raqamlarda

0
asosiy build type: debug, release
0
flavor namunada: free, paid
0
jami variant: 2 x 2

Variantlar soni flavor va type ko'paytmasiga teng.

Amaliy topshiriq 20 daqiqa

OsonFarqlar: Debug va release farqini 3 ta xususiyat bo'yicha yozing.
O'rtabuildTypes yozish: debug ga applicationIdSuffix = ".debug", release ga isMinifyEnabled = true qo'shing.
O'rtaBASE_URL: Debug da https://test.api.com, release da https://prod.api.com manzillarini buildConfigField bilan bering.
QiyinFlavor qo'shish: free va paid flavorlarini yarating. Hosil bo'lgan 4 ta variant nomini yozing.
QiyinXatoni toping: BuildConfig.BASE_URL da Unresolved reference xatosi chiqdi. 2 ta sababni yozing.

Dars xulosasi

Debug va Release

Sinov uchun va nashr uchun.

buildConfigField

Variantga mos konstantalar: BuildConfig.

Flavor

free/paid; variant = flavor + type.

Uyga vazifa: debug va release sozlamasi, BASE_URL va flavor.

Keyingi dars: Kutubxonalar va versiyalar

dependencies, version catalog, versiya boshqaruvi

5-hafta · 15-dars