versionCodevəversionName-in fərqini izah etmək və buraxılış qurulmasını tənzimləmək- İmzalanmış App Bundle yaratmaq və Play App Signing-in rolunu başa düşmək
- Play Console-da test yollarından keçib tətbiqi dərc etmək
- Unit və UI testləri yazmaq, əlçatanlıq və məhsuldarlıq qaydalarını tətbiq etmək
Tətbiq hazırdır: ekranlar, naviqasiya, şəbəkə, verilənlər bazası. İndi onu dostlarının və minlərlə istifadəçinin telefonuna çatdırmaq vaxtıdır. Bu yol bir neçə addımdan ibarətdir: versiya vermək, imzalamaq, Google Play Console-da tətbiq səhifəsini hazırlamaq, testçilərlə yoxlamaq və nəhayət dərc etmək. Yol boyu keyfiyyətə də baxacağıq: testlər, əlçatanlıq və sürət.
Versiya və buraxılış qurulması
Android tətbiqinin iki versiya nömrəsi var. **versionCode — tam ədəddir, onu yalnız sistem və Google Play görür; hər yeni yükləmədə əvvəlkindən böyük olmalıdır. versionName** — istifadəçinin mağazada gördüyü sətirdir, məsələn, 0.1.0. Çox vaxt semantik versiyalama işlədilir: ƏSAS.KİÇİK.DÜZƏLİŞ — böyük dəyişiklik, yeni imkan, səhv düzəlişi.
android {
defaultConfig {
applicationId = "com.educora.app"
minSdk = 24
targetSdk = 36
versionCode = 102
versionName = "0.1.2"
}
buildTypes {
release {
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
}isMinifyEnabled R8 alətini işə salır: istifadə olunmayan kod silinir, qalanı sıxılır və optimallaşdırılır; isShrinkResources lazımsız resursları çıxarır.İmzalama və App Bundle
Android yalnız imzalanmış tətbiqləri quraşdırır: imza tətbiqin müəllifini və yeniləmənin eyni mənbədən gəldiyini təsdiqləyir. Yeni tətbiqlər Google Play-ə Android App Bundle (.aab) şəklində yüklənir. Sən bundle-ı öz yükləmə açarınla (upload key) imzalayırsan, Google isə Play App Signing vasitəsilə istifadəçilərə gedən APK-ları özünün saxladığı tətbiq imza açarı ilə imzalayır. Bundle-dan hər cihaz üçün yalnız lazım olan hissələr hazırlanır, ona görə yükləmə həcmi kiçilir.
- 1Menyunu aç
Build › Generate Signed Bundle / APKseç,Android App Bundleişarələ vəNextbas. - 2Açar anbarı yarat
Create new…bas,.jksfaylının yerini, parolları, açar adını (alias) və sahibin məlumatlarını yaz. Etibarlılıq müddətini ən azı 25 il seç. - 3Buraxılış variantını seç
Növbəti pəncərədə
releasevariantını seç vəCreatebas. Hazır.aabfaylıapp/releaseqovluğunda yaranacaq.
Google Play Console
Dərc etmək üçün Google Play tərtibatçı hesabı lazımdır: bir dəfəlik 25 ABŞ dolları qeydiyyat haqqı ödənilir və şəxsiyyət təsdiqlənir. Sonra Play Console-da Create app basılır və bir neçə bölmə doldurulur: mağaza səhifəsi (ad 30 simvola qədər, qısa təsvir 80, tam təsvir 4000 simvola qədər, 512×512 ikon, 1024×500 əsas qrafika, ekran şəkilləri), tətbiqin məzmunu (məxfilik siyasəti, Data safety forması, yaş reytinqi anketi, hədəf auditoriya) və buraxılış.
| Yol (track) | Kim görür |
|---|---|
| Daxili test | 100 nəfərə qədər seçilmiş testçi; yeni versiya tez çatır |
| Qapalı test | dəvət olunmuş e-poçt siyahıları və ya qruplar |
| Açıq test | Google Play-dəki səhifədən qoşula bilən hər kəs |
| İstehsal (production) | bütün istifadəçilər |
Testlər
Unit testlər src/test qovluğunda yerləşir və kompüterdə, telefonsuz, saniyələr içində işləyir — məntiqi (hesablamalar, ViewModel) yoxlamaq üçün idealdır. Cihaz testləri isə src/androidTest-dədir və emulyatorda və ya telefonda işləyir; Compose ekranlarını onlarla yoxlayırıq.
fun percent(correct: Int, total: Int): Int =
if (total == 0) 0 else correct * 100 / total
class ScoreTest {
@Test
fun percent_isRoundedDown() {
assertEquals(66, percent(correct = 2, total = 3))
}
@Test
fun percent_withNoQuestions_isZero() {
assertEquals(0, percent(correct = 0, total = 0))
}
}src/test qovluğunda JUnit testi. Tam ədədlərin bölünməsi kəsri atır: 200 / 3 = 66.class QuizScreenTest {
@get:Rule
val composeTestRule = createComposeRule()
@Test
fun correctAnswer_movesToNextQuestion() {
composeTestRule.setContent { QuizScreen() }
composeTestRule.onNodeWithText("Question 1 of 5").assertIsDisplayed()
composeTestRule.onNodeWithText("Correct").performClick()
composeTestRule.onNodeWithText("Question 2 of 5").assertIsDisplayed()
}
}src/androidTest qovluğunda Compose UI testi: test düyməyə özü basır və ekranın dəyişdiyini yoxlayır.Əlçatanlıq və məhsuldarlıq
Görmə qabiliyyəti zəif olan istifadəçilər tətbiqi TalkBack ekran oxuyucusu ilə işlədirlər: o, ekrandakı elementləri səsli oxuyur. Mətnsiz ikonlar üçün contentDescription yaz, bəzək şəkillərində isə null ver ki, oxuyucu onları buraxsın. Toxunuş sahələri ən azı 48×48 dp olmalıdır (Material komponentləri bunu özü təmin edir), mətn ölçüsü sp ilə verilməlidir ki, sistemdə böyük şrift seçəndə mətn də böyüsün.
IconButton(onClick = onDelete) {
Icon(
painter = painterResource(R.drawable.ic_delete),
contentDescription = null
)
}IconButton(onClick = onDelete) {
Icon(
painter = painterResource(R.drawable.ic_delete),
contentDescription = stringResource(R.string.delete_lesson)
)
}strings.xml-dən gəldiyi üçün hər dilə tərcümə olunur.- Sürəti həmişə buraxılış qurulmasında ölç: sazlama (debug) qurulmasında Compose xeyli yavaş işləyir.
- Ağır hesablamaları composable-ın içində yox, ViewModel-də və ya
rememberilə bir dəfə et. - Baseline Profile tətbiqin başlanğıcını və ilk ekranları sürətləndirir; Android Studio-da onun üçün hazır modul şablonu var.
- Əlçatanlığı Accessibility Scanner tətbiqi ilə, sürəti Android Studio-nun Profiler pəncərəsi ilə yoxla.
Ctrl+Shift+R)Ctrl+Shift+F10Cmd+Shift+T)Ctrl+Shift+TCtrl+Option+O)Ctrl+Alt+OCmd+Option+L)Ctrl+Alt+LƏsas fikirlər
versionCodehər yükləmədə artan tam ədəddir,versionNameisə istifadəçinin gördüyü0.1.0kimi sətirdir.- Yeni tətbiqlər imzalanmış
.aabkimi yüklənir; istifadəçilər üçün imzanı Play App Signing verir. - Play Console-da mağaza səhifəsi, tətbiqin məzmunu və test yolları doldurulur; yeni şəxsi hesablarda 12 testçi ilə 14 günlük qapalı test tələb olunur.
- Unit testlər
src/test-də, Compose UI testlərisrc/androidTest-də yazılır. - İkonlara
contentDescriptionver, mətnispilə ölç və sürəti yalnız buraxılış qurulmasında yoxla.
Özünü yoxla
10 sual. Hər düzgün cavab XP qazandırır.