Формула така
minSdkVersion <= targetSdkVersion <= compileSdkVersion
minSdkVersion - це маркер, який визначає мінімальну версію Android, на яку програма зможе встановити. Також Lint використовується для запобігання виклику API, який не існує. Також це впливає на час побудови. Таким чином, ви можете використовувати побудову ароматів, щоб переоцінити minSdkVersion на максимум під час розробки. Це допоможе швидше будувати, використовуючи всі вдосконалення, які надає нам команда Android. Наприклад, деякі функції Java 8 доступні лише в певній версії minSdkVersion.
targetSdkVersion - говорить система Android, щоб увімкнути конкретні зміни поведінки.
Наприклад:
Починаючи з Android 6.0 (API рівень 23) Runtime Permissions
були представлені. Якщо встановлено targetSdkVersion
значення 22 або нижче, програма не вимагає від користувача дозволу на час виконання.
Починаючи з Android 8.0 (рівень API 26), усі notifications
повинні бути призначені каналу, інакше він не з’явиться. На пристроях під керуванням Android 7.1 (рівень API 25) та новіших версій користувачі можуть керувати сповіщеннями лише на основі програми (фактично кожен додаток має лише один канал на Android 7.1 і новіші).
Починаючи з Android 9 (рівень API 28) Web-based data directories separated by process
,. Якщо targetSdkVersion
вам більше 28 років, і ви створите декілька WebView
в різних процесах, які ви отримаєтеjava.lang.RuntimeException
compileSdkVersion - насправді це версія платформи SDK і каже Gradle, який Android SDK використовувати для компіляції. Якщо ви хочете використовувати нові функції або налагоджувати .java
файли з Android SDK, вам слід подбати про compileSdkVersion. Ще одним прикладом є використання AndroidX, який змушує використовувати compileSdkVersion
- рівень 28 compileSdkVersion
не включений у ваш APK : він використовується виключно в compile time
. Зміна компілятораSdkVersion не змінює поведінку часу виконання. Він може створити, наприклад, нові попередження / помилки компілятора. Тому настійно рекомендується завжди компілювати з найновішими SDK. Ви отримаєте всі переваги нових перевірок компіляції наявного коду, уникнете нещодавно застарілих API та будете готові використовувати нові API. Ще один фактcompileSdkVersion >= Support Library version
Більше про це можна прочитати тут . Також рекомендую поглянути на приклад переходу на Android 8.0.