Kotlin语言中CompileSdkVersion与targetSdkVersion的区别是什么

发布时间:2023-02-23 10:10:26 作者:iii
来源:亿速云 阅读:187

这篇文章主要介绍“Kotlin语言中CompileSdkVersion与targetSdkVersion的区别是什么”,在日常操作中,相信很多人在Kotlin语言中CompileSdkVersion与targetSdkVersion的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Kotlin语言中CompileSdkVersion与targetSdkVersion的区别是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

前言

build.gradle (Module) 文件中,我们通常会看到 CompileSdkVersiontargetSdkVersion 的使用,比如下面是一个完整的 build.gradle (Module) 文件:

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
}

android {
    compileSdk 32

    defaultConfig {
        applicationId "com.example.processbarvertical"
        minSdk 28
        targetSdk 32
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
}

dependencies {

    implementation 'androidx.core:core-ktx:1.7.0'
    implementation 'androidx.appcompat:appcompat:1.5.1'
    implementation 'com.google.android.material:material:1.6.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
    implementation 'com.github.transferwise:sequence-layout:1.2.0'
}

一旦新的 Android SDK 版本发布,我们通常会更新这两个值。 但为什么这样做如此重要? 另外,为什么有两个SdkVersion,而我们通常将它们设置为相同的值呢?这篇文章,我们来解释一下 CompileSdkVersiontargetSdkVersion 是什么,以及他们的区别。

一.CompileSdkVersion与targetSdkVersion是什么

compileSdkVersiontargetSdkVersion 对于处理安卓中的向前兼容性至关重要,因此它们都与新 Android SDK 版本出现时的操作有关。

1.1 compileSdkVersion

compileSdkVersion 定义了 gradle 将使用哪个 Android SDK 版本来编译我们的应用程序。比如,在 Android 12 / API 31 中引入了一个新的功能,使我们能够轻松实现启动画面:

<item name="android:windowsSplashScreenBackground">@color/cyan_50</item>
<item name="android:windowsSplashScreenIconBackgroundColor">@color/cyan_200</item>
<item name="android:windowsSplashScreenAnimatedIcon">@color/ic_foreground</item>
<item name="android:windowsSplashScreenAnimationDuration">1000</item>

如果我们想在应用程序中使用该功能,我们必须:

那么有人就要问了,有的手机没有升级到 Android 12 怎么办?对于那些版本低于 API 31 的用户/设备,我们必须提供一种替代方法来为那些无法访问此新 API 的旧设备显示上面这个新功能启动画面。同样,一些方法或属性可能会在此 Android SDK 版本中被弃用,其中一些甚至被删除。 这就是为什么一旦我们更新应用程序中的 compiledSdkVersion,我们将经常在编译期间看到一些必须解决的警告和错误,比如下图:

Kotlin语言中CompileSdkVersion与targetSdkVersion的区别是什么

但是单独更改 compileSdkVersion 并不会真正改变我们创建的应用程序的行为。那么安卓系统如何知道它是否可以使用此应用程序的新功能? 这就是 targetSdkVersion 发挥作用的地方。

1.2 targetSdkVersion

targetSdkVersion 是一个属性,它告诉系统应用程序是针对哪个安卓版本设计和测试的。

如果用户在安卓版本高于此应用中定义的 targetSdkVersion 的设备上运行您的应用程序,对于新的安卓功能,系统可能会引入一些向后兼容行为以确保此应用程序仍然以某种方式工作。比如说,在 Android 12 中,自定义通知的外观发生了变化。 以前他们可以使用整个通知区域,但在 Android 12 系统中,将标准模板应用于所有自定义通知,因此它们看起来更加一致。

Kotlin语言中CompileSdkVersion与targetSdkVersion的区别是什么

如果我们的应用中设置 targetSdkVersion 低于 31,系统将假定此应用尚未测试该功能并将以旧方式显示通知,以将通知无法正确显示的风险降至最低。只有将目标 SDK 版本更新为 31 后,才会使用新的通知外观。

Kotlin语言中CompileSdkVersion与targetSdkVersion的区别是什么

二.compileSdkVersion和targetSdkVersion的关系

即使 compileSdkVersiontargetSdkVersion 的含义完全不同,它们显然也不是独立的。

简单地说,targetSdkVersion 不能高于 compileSdkVersion。理想情况下,compileSdkVersiontargetSdkVersion 应该相等,并且都指向最新的安卓版本。

到此,关于“Kotlin语言中CompileSdkVersion与targetSdkVersion的区别是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读:
  1. Kotlin基本数据类型是什么
  2. Kotlin与Java如何相互调用

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

kotlin compilesdkversion targetsdkversion

上一篇:golang并发锁如何使用

下一篇:React怎么实现一个倒计时hook组件

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》