簡體   English   中英

compileSdkVersion、minSdkVersion、targetSdkVersion應該怎么設置?

[英]What should I set for compileSdkVersion, minSdkVersion, and targetSdkVersion?

我擔心我應該將compileSdkVersionminSdkVersiontargetSdkVersion設置成什么。

  1. 我首先擔心的是,如果我將compileSdkVersion設置為現在最新的 23,舊設備是否能夠運行它?

  2. 我如何確切知道我的minSdkVersion應該是什么,以確保手機運行較低的 api 或版本無法訪問它(我不想將最小 sdk 設置得太高,因為這會阻止可能運行的手機應用程序)?

  3. 我應該如何設置我的targetSdkVersion

我將compileSdkVersion設置為23,這是最新的,舊設備能夠運行嗎?

是。 compileSdkVersion本身與哪些設備無法運行您的應用程序無關。 通常,您將其設置為Android SDK的最新版本。

我怎么知道我的minSdkVersion應該是什么,以確保運行較低api或版本的手機無法訪問它?

通常,當您嘗試使用比minSdkVersion更新的東西時,開發工具會立即發出警告。 您可以運行完整的Lint檢查以定期重新確認。

我該如何設置targetSdk?

在沒有任何特殊原因選擇其他東西的情況下,我通常在創建項目時選擇最新值或次最新值(例如,現在為22或23)。 targetSdkVersion有助於向后兼容,通常我的描述是“它是您在編寫代碼時考慮的Android版本”。

谷歌剛發布了一篇關於這些的詳細文章 簡而言之:

compileSdkVersion是告訴Gradle用於編譯應用程序的Android SDK版本的方法。 使用新的Android SDK是使用該級別中添加的任何新API的要求。 應該強調的是, 更改compileSdkVersion不會改變運行時行為 雖然更改compileSdkVersion時可能存在新的編譯器警告/錯誤,但您的compileSdkVersion不包含在您的APK中:它純粹在編譯時使用。

如果compileSdkVersion設置了最新的API,則minSdkVersion是應用程序的下限 minSdkVersion是Google Play商店用於確定應用程序可以安裝在哪個用戶設備上的信號之一。 它在開發過程中也起着重要作用:默認情況下,lint針對您的項目運行,當您使用minSdkVersion上方的任何API時會發出警告,幫助您避免嘗試調用不存在的API的運行時問題。 在僅在較新的平台版本上使用API​​時,在運行時檢查系統版本是一種常見技術。

然而,三者中最有趣的是targetSdkVersion。 targetSdkVersion是Android通過不應用行為更改來提供向前兼容性的主要方式,除非更新targetSdkVersion。 這允許您在完成行為更改之前使用新的API(因為您確實更新了compileSdkVersion嗎?)。

您的CompileSDKVersion和您的TargetSDKVersion應該是相同的:

android {
compileSdkVersion 24
buildToolsVersion "24.0.2"

defaultConfig {
    applicationId "com.judeochalifu.dribsndrabs"
    minSdkVersion 15
    targetSdkVersion 24
    versionCode 1
    versionName "1.0"
}

如果您對要使用的版本號感到困惑,請轉到Android SDK Manager ,找到您正在使用的API級別(必須始終是最新版本),然后您將找到要使用的版本(Android 7(API 24),如下所示)寫作時間)。

在此輸入圖像描述

至於minSDKVersion ,檢查使用哪個的最佳位置是轉到Create New Project窗口(這里是Android Studio),Google將幫助您選擇當時使用的最佳選擇:

在此輸入圖像描述

minSdkVersion:這是您的應用程序運行應用程序所需的最低API級別(即,如果您將其設置為API級別16(Jelly Bean),那么您的應用程序無法在API級別15(IceCreamSandwitch)上運行)。 實際上,Google Play不會在運行API級別低於minSdkVersion API級別的手機上顯示您的應用。 使用API​​級別15(IceCreamSandwitch)覆蓋超過90%的Android手機。

targetSdkVersion:您為其設計要運行的應用程序的API級別。 建議使用最新版本(目前26 - O)

compileSdkVersion:您想要編譯應用程序的API級別(如果您使用API​​級別為26的功能則需要使用26,較低版本會給您錯誤)。 Android支持向后兼容性(即23上編譯的應用也可以在API等級為22或更低的手機上運行)。 所以回答你的第一個問題是肯定的。 建議使用最新版本(目前26 - O)

通常你應該遵守規則

minSdkVersion <= targetSdkVersion <= compileSdkVersion

你的決定應該基於你的目的

[閱讀更多]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM