buildTypes, debug, release, R8, buildConfigField, productFlavors
10-sinfAdvanced Android5-hafta · 14-darsIshlab chiqish va nashr uchun
Variantga mos qiymat
Bir loyiha, ko'p versiya
Ilovaning noyob nomi qaysi parametrda beriladi?
applicationId — defaultConfig ichidagi noyob identifikator.Ishlab chiqish va nashr uchun
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.Qaysi build turida R8 kodni qisqartiradi va optimallashtiradi?
isMinifyEnabled = true yoqiladi.Variantga mos qiymat
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
\" bilan yoziladi, chunki Gradle uni kod sifatida yaratadi. Debug da test, release da prod manzil chiqadi.BuildConfig.BASE_URL debug build da nimaga teng (yuqoridagi sozlama bilan)?
Bir loyiha, ko'p versiya
android {
flavorDimensions += "tarif"
productFlavors {
create("free") {
dimension = "tarif"
applicationIdSuffix = ".free"
}
create("paid") {
dimension = "tarif"
applicationIdSuffix = ".paid"
}
}
}
// Variantlar: freeDebug, freeRelease, paidDebug, paidRelease
flavor va ikki build type — jami 4 variant. Variant tanlash: View > Tool Windows > Build Variants.2 ta flavor (free, paid) va 2 ta build type (debug, release) bo'lsa, nechta variant hosil bo'ladi?
Sinov uchun debug, foydalanuvchiga release beriladi.
Qurilish turi: debug, release
Ilovaning versiyasi: free, paid
Kodni qisqartiruvchi va optimallashtiruvchi vosita
Gradle yaratadigan konstantalar sinfi
debug va release sozlamalarini yozing.
buildConfigField bilan BASE_URL bering.
Build Variants oynasidan tanlab ishga tushiring.
| Xususiyat | Debug | Release |
|---|---|---|
| Maqsad | dasturchi uchun | foydalanuvchi uchun |
| R8 / minify | o'chiq | yoqilgan |
| Imzo | debug kaliti | o'z kaliti (keystore) |
| Tezlik | oddiy | optimallashtirilgan |
| Logcat | to'liq loglar | kamroq ma'lumot |
Pastga bosing: release oldidan
BASE_URL prod manzilga ishora qilishini tekshiring.versionCode oshirilganini va imzo kaliti tayyorligini tasdiqlang.
buildTypes {
release {
}
}
buildTypes {
release {
isMinifyEnabled = true
}
}
Variantlar soni flavor va type ko'paytmasiga teng.
debug ga applicationIdSuffix = ".debug", release ga isMinifyEnabled = true qo'shing.https://test.api.com, release da https://prod.api.com manzillarini buildConfigField bilan bering.free va paid flavorlarini yarating. Hosil bo'lgan 4 ta variant nomini yozing.BuildConfig.BASE_URL da Unresolved reference xatosi chiqdi. 2 ta sababni yozing.Sinov uchun va nashr uchun.
Variantga mos konstantalar: BuildConfig.
free/paid; variant = flavor + type.
Uyga vazifa: debug va release sozlamasi, BASE_URL va flavor.
dependencies, version catalog, versiya boshqaruvi
5-hafta · 15-dars