iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Kotlin语言中CompileSdkVersion与targetSdkVersion的区别是什么
  • 282
分享到

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

2023-07-05 05:07:18 282人浏览 独家记忆
摘要

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

这篇文章主要介绍“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 Studio 中下载 API 31

    • 在应用程序中将 compileSdkVersion 更新为 31

    那么有人就要问了,有的手机没有升级到 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的区别是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

    --结束END--

    本文标题: Kotlin语言中CompileSdkVersion与targetSdkVersion的区别是什么

    本文链接: https://www.lsjlt.com/news/349764.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

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

    下载Word文档
    猜你喜欢
    • c++中int和double有什么区别
      int 和 double 是 c++ 的数据类型,用于表示整数和浮点数。它们的关键区别在于:1. 范围:int 为整数,double 为浮点数且范围更大;2. 存储大小:int 占 4 ...
      99+
      2024-05-14
      c++ 隐式转换
    • C++ 多线程程序测试的挑战和策略
      多线程程序测试面临不可重复性、并发错误、死锁和缺乏可视性等挑战。策略包括:单元测试:针对每个线程编写单元测试,验证线程行为。多线程模拟:使用模拟框架在控制线程调度的情况下测试程序。数据竞...
      99+
      2024-05-14
      c++ 多线程
    • c++中深拷贝和浅拷贝的应用时间
      浅拷贝复制对象指针或引用,仅适用于不含动态分配内存或简单数据结构的对象;深拷贝复制实际数据,包括动态分配内存,适用于包含动态分配内存或复杂数据结构的对象。 浅拷贝和深拷贝的应用时间 在...
      99+
      2024-05-14
      c++
    • 探索用于 C++ 服务器架构的高级数据结构
      在 c++++ 服务器架构中,选择适当的高级数据结构至关重要。哈希表用于快速数据查找,树用于表示数据层次结构,图用于表示对象之间的关系。这些数据结构在实践中有着广泛的应用,例如缓存系统、...
      99+
      2024-05-14
      c++ 数据结构 社交网络 键值对
    • fixed在c++中的作用
      fixed 关键字在 c++ 中用于将浮点数存储为固定小数,提供更高精度,尤其适用于需要高精度的金融计算。fixed 将浮点数表示为具有固定小数位数的小数,默认情况下使用十进制表示法,小...
      99+
      2024-05-14
      c++
    • insert在c++中怎么用
      insert() 函数在 c++ 中用于在容器(如 vector、set)中插入元素,提供了一种动态调整容器大小并添加新元素的方法。它需要两个参数:要插入元素的位置 (pos) 和要插入...
      99+
      2024-05-14
      c++ 标准库
    • 如何使用 Golang 构建 RESTful API 并处理 JSON 响应?
      如何使用 golang 构建和处理 json 响应的 restful api步骤:创建 golang 项目并安装 gorilla mux。定义路由并处理 http 请求。安装 json ...
      99+
      2024-05-14
      golang git
    • c++中int和long的区别
      int 和 long 都是 c++ 中的整型类型,主要区别在于范围和存储空间:范围:int 为 32 位整数,范围为 [-2^31, 2^31-1];long 为 64 位整数,范围为 ...
      99+
      2024-05-14
      c++ 数据丢失
    • c++中int a(n)和int a[n]的区别
      int a(n)声明一个不可变的整型变量,而int a[n]声明一个可修改元素的整型数组,用于存储和处理数据序列或集合。 int a(n) 和 int a[n] 在 C++ 中的区别 ...
      99+
      2024-05-14
      c++
    • C++ 多线程编程中调试和故障排除的技术
      c++++ 多线程编程的调试技巧包括:使用数据竞争分析器检测读写冲突,并使用同步机制(如互斥锁)解决。使用线程调试工具检测死锁,并通过避免嵌套锁和使用死锁检测机制来解决。使用数据竞争分析...
      99+
      2024-05-14
      c++ 多线程 故障排除 同步机制
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作