我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Kotlin语言中CompileSdkVersion与targetSdkVersion的区别浅析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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 Studio 中下载 API 31
  • 在应用程序中将 compileSdkVersion 更新为 31

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

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

1.2 targetSdkVersion

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

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

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

二.compileSdkVersion和targetSdkVersion的关系

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

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

到此这篇关于Kotlin语言中CompileSdkVersion与targetSdkVersion的区别浅析的文章就介绍到这了,更多相关Kotlin CompileSdkVersion内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Kotlin语言中CompileSdkVersion与targetSdkVersion的区别浅析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Kotlin语言中CompileSdkVersion与targetSdkVersion的区别浅析

这篇文章主要介绍了Kotlin语言中CompileSdkVersion和targetSdkVersion有什么区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
2023-02-23

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

这篇文章主要介绍“Kotlin语言中CompileSdkVersion与targetSdkVersion的区别是什么”,在日常操作中,相信很多人在Kotlin语言中CompileSdkVersion与targetSdkVersion的区别是
2023-07-05

c语言中\与%的区别

c语言中 \ 和 % 的区别在于:\ 用作转义字符,代表特殊字符(例如换行符),而 %` 用作格式化输出,指定输出变量值或格式的格式说明符。c语言中\与%的区别c语言中,\ 和 % 都是转义字符,用于在字符串中表示特殊字符。以下是对
c语言中\与%的区别
2024-05-02

c语言中/与\的区别

c 语言中 / 和 \ 的区别:/:除法运算符,用于两个操作数的除法运算,返回商或余数。\:反斜杠转义字符,用于转义特殊字符、指定文本字符、终止预处理指令,并在 windows 系统中作为路径分隔符。C 语言中 / 与 \ 的区别C 语言
c语言中/与\的区别
2024-05-02

c语言中/与%的区别

c 语言中的 / 和 % 运算符用于不同类型的除法运算:/ 执行浮点除法,返回浮点数作为结果。% 执行整数取模运算,返回整数作为余数。C 语言中的 / 与 % 的区别/ 和 % 是 C 语言中的两个运算符,用于执行不同类型的除法运算。/
c语言中/与%的区别
2024-04-28

深入浅析java中TCP与UDP的区别

深入浅析java中TCP与UDP的区别?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。TCP/UDP:TCP主要是面向连接的协议,它包含有建立和拆除连接,保证数据流的顺序和正
2023-05-31

浅析Java中String与StringBuffer拼接的区别

学习笔记:  1、String拼接会创建一个新的String对象,存储拼接后的字符串;    StringBuffer拼接是直接在本身拼接,会即时刷新。  2.String只能拼接String类型的字符串;    StringBuffer能
2023-05-31

深入浅析Android中DecorView与ViewRootImpl的区别

今天就跟大家聊聊有关深入浅析Android中DecorView与ViewRootImpl的区别,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。从setContentView说起一般地,
2023-05-31

c语言中lf与f的区别

在c语言中,lf与f的区别在于:lf:格式化读写标志,用于输出换行符。f:浮点格式标志,用于格式化输出浮点数字。c语言中lf与f的区别在C语言中,lf和f都是用于格式化的读写标志,但它们之间存在明显的区别。lflf是格式化读写标志,用
c语言中lf与f的区别
2024-05-10

c语言中++i与i++的区别

c 语言中,单目递增运算符 ++i 与 i++ 的区别在于执行递增操作的顺序:++i(前置递增):先将变量递增 1,再返回结果。i++(后置递增):先返回变量当前值,再将变量递增 1。C 语言中 ++i 与 i++ 的区别在 C 语言中,
c语言中++i与i++的区别
2024-05-02

c语言中a++与++a的区别

c 语言中 a++ 和 ++a 的区别在于执行顺序:a++ 先使用后自增,++a 先自增后使用。c语言中a++与++a的区别在C语言中,a++ 和 ++a 都是后缀操作符,用于对变量 a 进行自增操作。然而,它们在执行顺序上存在细微差异。
c语言中a++与++a的区别
2024-05-02

c语言中*与&amp;的区别

在c语言中,(星号)用于间接寻址和取值,而&(地址符)用于取地址和引用。获取变量或指针指向的值,用于修改值和声明指针变量;&获取变量地址,用于分配地址给指针变量和传递地址作为函数参数。C语言中*与&的区别符号*和&在C语言中是不同的运算符
c语言中*与&amp;的区别
2024-04-28

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录