Məzmuna keç
Educora
İrəli24 dəq14 / 14

Dərc və yaxşı təcrübələr

Tətbiqə versiya ver, onu imzala və Google Play Console vasitəsilə dərc et; testlər yaz, tətbiqi hamı üçün əlçatan et və buraxılış qurulmasında məhsuldarlığını yoxla.

Özünü yoxla
Bu dərsdə öyrənəcəksən
  • versionCode və 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.

Kotlin
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.

  1. 1
    Menyunu aç

    Build › Generate Signed Bundle / APK seç, Android App Bundle işarələ və Next bas.

  2. 2
    Açar anbarı yarat

    Create new… bas, .jks faylı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ç.

  3. 3
    Buraxılış variantını seç

    Növbəti pəncərədə release variantını seç və Create bas. Hazır .aab faylı app/release qovluğ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 test100 nəfərə qədər seçilmiş testçi; yeni versiya tez çatır
Qapalı testdəvət olunmuş e-poçt siyahıları və ya qruplar
Açıq testGoogle 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.

Kotlin
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.
Kotlin
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.

TalkBack üçün səssiz düymə
IconButton(onClick = onDelete) {
    Icon(
        painter = painterResource(R.drawable.ic_delete),
        contentDescription = null
    )
}
Təsvirli düymə
IconButton(onClick = onDelete) {
    Icon(
        painter = painterResource(R.drawable.ic_delete),
        contentDescription = stringResource(R.string.delete_lesson)
    )
}
Solda TalkBack yalnız «Button» deyir; sağda isə «Delete lesson» oxuyur. Mətn 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 remember ilə 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.
kursorun olduğu testi və ya test faylını işə salmaq (Mac: Ctrl+Shift+R)Ctrl+Shift+F10
sinif ilə onun testi arasında keçmək, test yoxdursa yaratmaq (Mac: Cmd+Shift+T)Ctrl+Shift+T
istifadə olunmayan importları silmək (Mac: Ctrl+Option+O)Ctrl+Alt+O
dərcdən əvvəl kodu formatlamaq (Mac: Cmd+Option+L)Ctrl+Alt+L

Əsas fikirlər

  • versionCode hər yükləmədə artan tam ədəddir, versionName isə istifadəçinin gördüyü 0.1.0 kimi sətirdir.
  • Yeni tətbiqlər imzalanmış .aab kimi 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əri src/androidTest-də yazılır.
  • İkonlara contentDescription ver, mətni sp ilə ö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.

1 / 10
Google Play-ə hər yeni yükləmədə mütləq nə artmalıdır?