Doporučená minimální verze SDK pro Android projekty
Nejste si jisti, jakou minimální podporovanou verzi systému Android zvolit pro svůj projekt? Tento článek vás provede různými faktory, které mají největší vliv na výběr minimálního SDK. Díky ucelenému přehledu těchto faktorů budete moci učinit informovanější rozhodnutí pro svůj projekt.
Úvod
Výběr správné minimální verze SDK je rozhodující pro dosažení rovnováhy mezi pokrytím podporovaných zařízení a dobou vývoje. Společnost Google neposkytuje mnoho vodítek, pokud jde o nastavení verze, a jediné, co poskytuje, je distribuce verze při vytváření nového projektu. I když je pokrytí zařízení důležitým faktorem, který je nutné při rozhodování o minimální verzi zvážit, je třeba mít na paměti i další aspekty. Například čím nižší je minimální verze SDK, tím více času budete muset věnovat údržbě codebase a zajištění její kompatibility se všemi různými verzemi SDK. Kromě toho může zvolená minimální verze SDK omezovat funkce, které lze do aplikace zahrnout, protože verze pro starší SDK nepodporují nejnovější funkce. Při rozhodování o minimální verzi SDK pro projekt je nakonec důležité pečlivě zvážit všechna pro a proti, aby bylo zajištěno správné vyvážení mezi pokrytím zařízení a dobou vývoje.
Verze SDK (úroveň API) přímo souvisí s verzí systému Android. Pro účely tohoto článku budou tyto pojmy používány zaměnitelně.
Podívejme se na jednotlivé faktory, které nejvíce ovlivňují minimální SDK.
Nejoblíbenější (podle počtu stažení) aplikace v Obchodě Play a jejich min. podporované verze pro Android
Při rozhodování je užitečné podívat se, co dělají ostatní. Zde je 15 nejstahovanějších aplikací [1] a jejich minimální podporované verze operačního systému Android (bez her):
*více verzí, starší pro nižší verze systému Android
Je zřejmé, že jen několik nejstahovanějších aplikací podporuje verze systému Android nižší než 5 (tj. minSdk 21).
Doporučení: Sledujte trend alespoň verze Android 5 (tj. minSdk 21).
Jetpack Compose
Z našich zkušeností vyplývá, že vytvoření aplikace bez sady nástrojů Jetpack Compose vyžaduje dvakrát více úsilí. Chcete-li urychlit vývoj a vytvořit intuitivní uživatelské rozhraní, doporučujeme používat sadu nástrojů Jetpack Compose, která vyžaduje verzi systému Android 5 (minSdk 21) nebo vyšší.
Doporučení: Pro urychlení vývoje a vytvoření intuitivního uživatelského rozhraní používejte Jetpack Compose ⇒ Android 5 (minSdk 21) nebo vyšší.
Poslední bezpečnostní aktualizace podle verzí
Pokud aplikace zpracovává osobní údaje, měla by být bezpečnost nejvyšší prioritou. Aktualizace zabezpečení jsou v roztříštěném ekosystému Androidu velkým problémem. V současné době dostávají bezpečnostní aktualizace pouze zařízení se systémem Android 10 nebo novějším [3]. V průměru jsou verze systému Android podporovány po dobu 3,3 roku [4,5]. Po skončení podpory mohou být objeveny nové bezpečnostní problémy, takže zařízení (a tím i aplikace) jsou vůči nim zranitelná, pokud nejsou opraveny [6].
Čím starší je verze, tím větší je pravděpodobnost, že bude vystavena bezpečnostním problémům.
Mezi potenciální bezpečnostní problémy patří [8]:
- Vzdálený přístup k citlivým údajům používaným pro ověřování vzdálených služeb, jako jsou hesla účtů nebo přístupové tokeny
- Lokální přístup ke stejným údajům
- Obcházení ochran operačního systému - přístup k obsahu paměti nebo souborů přes hranice aplikací, uživatelů nebo profilů
- Vzdálené obcházení požadavků na interakci s uživatelem, například přístup k funkcím nebo datům, které by měly vyžadovat iniciaci uživatelem nebo jeho povolení
Doporučení: Vyberte minimální verzi SDK odpovídající verzi systému Android vydané nejvýše před čtyřmi lety.
Oprávnění
Udělování oprávnění za běhu bylo zavedeno v systému Android 6 (API 23). V nižších verzích byla všechna oprávnění udělena při instalaci.V systému Android 11+ jsou oprávnění odebrána, pokud je aplikace několik měsíců nepoužívána. Dialogové okno s požadavkem na oprávnění se v systému Android 11+ chová jinak než v nižších verzích [9].Oprávnění nemají vliv na výběr minSdk, takže nelze vydat žádné doporučení.
Notifikace
Oznámení byla v minulosti několikrát změněna, zejména v systémech Android 7 a 8. Nastavení a úroveň ovládání se v systému Android 8 (API 26) a vyšších liší od předchozích verzí [10]. Pokud potřebujete minimální SDK nižší než 26, měli byste do svého odhadu zahrnout několik MD.
Doporučení: Pokud se chcete vyhnout podpoře starších verzí, zvolte minSdk 26 nebo vyšší.
Distribuce verzí systému Android
Úroveň SDK, kterou si vyberete, by měla vycházet ze zařízení, která vaše cílová skupina používá. Pokud vaše publikum používá především novější zařízení, můžete nastavit minimální úroveň SDK vyšší. Pokud však vaše publikum používá kombinaci starších a novějších zařízení, pravděpodobně budete muset nastavit nižší úroveň SDK, abyste zajistili, že vaše aplikace bude kompatibilní se širší škálou zařízení.
Distribuce našich aplikací
Všechny aplikace mají více než 95% pokrytí systémem Android 9+ (api 28+).
Globální distribuce verzí systému Android
Data z Android Studia (26. prosince 2022)
Regionální distribuce verzí systému Android
Údaje pro Českou republiku z 27.12.2022 [11]
Údaje pro Evropu z 27.12.202 [12]
Závěr
Uvedli jsme několik doporučení, která je třeba zohlednit, ale jejich váha by se měla lišit v závislosti na konkrétní aplikaci, kterou vytváříme. Pro projekt bez zvláštních požadavků doporučujeme jako minimální verzi nastavit Android 8 (API 26). Zde jsou uvedeny důvody:
- Zrychlený vývoj díky sadě nástrojů Jetpack Compose
- Relativně nedávná poslední bezpečnostní záplata
- Není třeba podporovat starší oznámení
- Poměrně dobré globální pokrytí (88 %)
- Dobré pokrytí v České republice (94 %) a v Evropě (92 %).
- Všechny naše aplikace mají více než 95% pokrytí systémem Android 9+ (API 28+)
Sources
[1] https://www.makeuseof.com/tag/most-popular-android-apps/
[2] https://developer.android.com/jetpack/compose/why-adopt
[3] https://en.wikipedia.org/wiki/Android_version_history#Overview
[4] https://stackoverflow.com/a/64340664/12321475
[5] https://source.android.com/docs/security/bulletin
[6] https://www.howtogeek.com/711886/what-are-android-security-updates-and-why-are-they-important/
[7] https://www.tomsguide.com/us/old-phones-unsafe,news-24846.html
[8] https://source.android.com/docs/security/overview/updates-resources#severity
[9] https://developer.android.com/about/versions/11/privacy/permissions#dialog-visibility
[10] https://developer.android.com/develop/ui/views/notifications#android_80_api_level_26
[12] https://gs.statcounter.com/android-version-market-share/mobile-tablet/europe