欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Kotlin語言中CompileSdkVersion與targetSdkVersion的區(qū)別淺析

 更新時間:2023年02月23日 08:43:09   作者:破浪會有時  
這篇文章主要介紹了Kotlin語言中CompileSdkVersion和targetSdkVersion有什么區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧

前言

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 版本發(fā)布,我們通常會更新這兩個值。 但為什么這樣做如此重要? 另外,為什么有兩個SdkVersion,而我們通常將它們設置為相同的值呢?這篇文章,我們來解釋一下 CompileSdkVersiontargetSdkVersion 是什么,以及他們的區(qū)別。

一.CompileSdkVersion與targetSdkVersion是什么

compileSdkVersiontargetSdkVersion 對于處理安卓中的向前兼容性至關重要,因此它們都與新 Android SDK 版本出現(xiàn)時的操作有關。

1.1 compileSdkVersion

compileSdkVersion 定義了 gradle 將使用哪個 Android SDK 版本來編譯我們的應用程序。比如,在 Android 12 / API 31 中引入了一個新的功能,使我們能夠輕松實現(xiàn)啟動畫面:

<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 的舊設備顯示上面這個新功能啟動畫面。同樣,一些方法或?qū)傩钥赡軙诖?Android SDK 版本中被棄用,其中一些甚至被刪除。 這就是為什么一旦我們更新應用程序中的 compiledSdkVersion,我們將經(jīng)常在編譯期間看到一些必須解決的警告和錯誤,比如下圖:

但是單獨更改 compileSdkVersion 并不會真正改變我們創(chuàng)建的應用程序的行為。那么安卓系統(tǒng)如何知道它是否可以使用此應用程序的新功能? 這就是 targetSdkVersion 發(fā)揮作用的地方。

1.2 targetSdkVersion

targetSdkVersion 是一個屬性,它告訴系統(tǒng)應用程序是針對哪個安卓版本設計和測試的。

如果用戶在安卓版本高于此應用中定義的 targetSdkVersion 的設備上運行您的應用程序,對于新的安卓功能,系統(tǒng)可能會引入一些向后兼容行為以確保此應用程序仍然以某種方式工作。比如說,在 Android 12 中,自定義通知的外觀發(fā)生了變化。 以前他們可以使用整個通知區(qū)域,但在 Android 12 系統(tǒng)中,將標準模板應用于所有自定義通知,因此它們看起來更加一致。

如果我們的應用中設置 targetSdkVersion 低于 31,系統(tǒng)將假定此應用尚未測試該功能并將以舊方式顯示通知,以將通知無法正確顯示的風險降至最低。只有將目標 SDK 版本更新為 31 后,才會使用新的通知外觀。

二.compileSdkVersion和targetSdkVersion的關系

即使 compileSdkVersiontargetSdkVersion 的含義完全不同,它們顯然也不是獨立的。

簡單地說,targetSdkVersion 不能高于 compileSdkVersion。理想情況下,compileSdkVersiontargetSdkVersion 應該相等,并且都指向最新的安卓版本。

到此這篇關于Kotlin語言中CompileSdkVersion與targetSdkVersion的區(qū)別淺析的文章就介紹到這了,更多相關Kotlin CompileSdkVersion內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論