Почему AndroidX нужно, чтобы значение compileSdkVersion было равно 28 или выше
Я недавно самоучка для Android, и у меня есть вопрос (возможно, глупый) о новой библиотеке AndroidX. Я понимаю, что AndroidX - это просто новое обновление библиотеки поддержки, которое направлено на обеспечение обратной совместимости с более ранними версиями Android Sdks.
Однако Google требует, чтобы "Если вы хотите использовать AndroidX в новом проекте, вам нужно установить SDK для компиляции на Android 9.0 (уровень API 28) или выше". Я запутался здесь, означает ли это, что AndroidX на самом деле использует некоторые методы или функции API, которые доступны только в Android 9.0 или более поздней версии? Если да, то как он может обеспечить обратную совместимость для старых API, которые не имеют доступа к этим высокоуровневым методам API?
Я не думаю, что у библиотеки поддержки есть какие-либо требования к compileSdkVersion.
2 ответа
Я запутался здесь, означает ли это, что AndroidX на самом деле использует некоторые методы или функции API, которые доступны только в Android 9.0 или более поздней версии?
нет AndroidX
будет доступен для выпусков Android с обратной совместимостью
Прочитайте обзор AndroidX
- Как и библиотека поддержки,
AndroidX
поставляется отдельно от ОС Android и обеспечивает обратную совместимость для всех версий Android.
Для получения дополнительной информации, пожалуйста, прочитайте блог разработчиков Android о Hello World, AndroidX
ТАКЖЕ Узнайте больше о compileSdkVersion
compileSdkVersion
compileSdkVersion
это ваш способ сказатьGradle
какая версия Android SDK для компиляции вашего приложения. Использование нового Android SDK является обязательным требованием для использования любого из новых API, добавленных на этом уровне.- Следует подчеркнуть, что изменение вашего
compileSdkVersion
не меняет поведение во время выполнения
Скомпилированная версия - это то, что вам нужно использовать при разработке приложения в вашей IDE. По этому ответу.
Так что не имеет значения, на каком SDK вы делаете свой код. это всегда будет обеспечивать обратную совместимость.
У меня тоже был такой же вопрос. Ключ в том, что не путайтеminSdkVersion
с compileSdkVersion
. если тыminSdkVersion
равно 16, то ваше приложение будет поддерживать Android API до версии 16. Но для использования AndroidX необходимо убедиться, что compileSdkVersion
равно 28. Обычно при компиляции приложения вы используете самую последнюю версию Android SDK, так что в этом нет ничего нового.
Вот пример файла build.gradle приложения с использованием AndroidX. Обратите вниманиеminSdkVersion
с compileSdkVersion
номера версий.
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.example.myapplication"
minSdkVersion 16
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.core:core-ktx:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}