Tema
/
Mobiliosios programėlės KOTLIN
Pamoka 13 / 14 Išleidimas ir šlifavimas ~50 min
📖 Teorija

Kas yra „išleidžiama" programėlė

Pica veikia. Bet „veikia mano telefone" ir „galima išleisti" — du skirtingi dalykai. Išleidžiama programėlė turi dvi savybes: ji niekada nepalieka vartotojo tuščiame ar sulūžusiame ekrane, ir ją galima pasirašyti bei įkelti į Google Play.

1. Nuoseklios būsenos. Per visą kursą kartojosi tas pats MVI modelis: Loading / Success / Error. Meniu (5), užsakymai (9) jį jau turi. Išleidimui reikia užtikrinti, kad kiekvienas ekranas apdoroja visus atvejus, įskaitant tuščią:

sealed interface UiState<out T> {
    data object Loading : UiState<Nothing>
    data class Success<T>(val data: T) : UiState<T>
    data object Empty : UiState<Nothing>          // ← dažnai pamirštamas
    data class Error(val message: String) : UiState<Nothing>
}

„Tuščias krepšelis", „Nėra užsakymų", „Nėra ryšio + Retry" — tai ne smulkmenos, o skirtumas tarp „atrodo sulūžus" ir „viskas tvarkoje".

2. Pasirašytas, suspaustas leidimas. debug build'as, kurį leidai iki šiol, pasirašytas automatiniu debug raktu ir neoptimizuotas. Leidimui reikia:

  • Pasirašymo (signing). Google Play priima tik tavo release raktu pasirašytą programėlę. Raktas — tavo tapatybė; pametęs jo neatkursi.
  • R8 (shrink + obfuscate). Pašalina nenaudojamą kodą ir sutrumpina pavadinimus — mažesnis APK, sunkiau apgręžti (reverse-engineer).
  • App Bundle (.aab). Google Play pageidauja .aab (ne .apk) — serveris iš jo sugeneruoja optimalų APK kiekvienam įrenginiui.

Verify-docs. AGP 9 (9.2.1) pakeitė senuosius isMinifyEnabled / isShrinkResources flag'us nauju optimization { } bloku. Daug internetinių pavyzdžių dar rodo senąjį būdą — tai realus spąstas, kurį pamatysim kitame žingsnyje.