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/isShrinkResourcesflag'us naujuoptimization { }bloku. Daug internetinių pavyzdžių dar rodo senąjį būdą — tai realus spąstas, kurį pamatysim kitame žingsnyje.