如何選擇 compileSdkVersion, minSdkVersion 和 targetSdkVersion

首先看谷歌官方文檔對(duì)targetsdkversion的定義:

3.jpg

如果targetsdkversion設(shè)置為23俩功,那么系統(tǒng)認(rèn)為23版本所有功能的特性您已經(jīng)經(jīng)過(guò)充分的測(cè)試,只要 APK 的 targetSdkVersion 不變羹与,即使這個(gè) APK 安裝在新 Android 系統(tǒng)上账胧,其行為還是保持老的系統(tǒng)上的行為,這樣就保證了系統(tǒng)對(duì)老應(yīng)用的前向兼容性。如果沒(méi)有設(shè)置這個(gè)屬性,應(yīng)用就會(huì)出現(xiàn)問(wèn)題,不確保兼容性衣式;

4.jpg

android:compileSdkVersion
compileSdkVersion 告訴 Gradle 用哪個(gè) Android SDK 版本編譯你的應(yīng)用。使用任何新添加的 API 就需要使用對(duì)應(yīng) Level 的 Android SDK。
需要強(qiáng)調(diào)的是修改 compileSdkVersion 不會(huì)改變運(yùn)行時(shí)的行為碴卧。當(dāng)你修改了 compileSdkVersion 的時(shí)候碉京,可能會(huì)出現(xiàn)新的編譯警告、編譯錯(cuò)誤螟深,但新的 compileSdkVersion 不會(huì)被包含到 APK 中:它純粹只是在編譯的時(shí)候使用谐宙。(你真的應(yīng)該修復(fù)這些警告,他們的出現(xiàn)一定是有原因的)

因此我們強(qiáng)烈推薦總是使用最新的 SDK 進(jìn)行編譯界弧。在現(xiàn)有代碼上使用新的編譯檢查可以獲得很多好處凡蜻,避免新棄用的 API ,并且為使用新的 API 做好準(zhǔn)備垢箕。

注意划栓,如果使用 Support Library,那么使用最新發(fā)布的 Support Library 就需要使用最新的 SDK 編譯条获。例如忠荞,要使用 23.1.1 版本的 Support Library ,compileSdkVersion 就必需至少是 23 (大版本號(hào)要一致KЬ颉)委煤。通常,新版的 Support Library 隨著新的系統(tǒng)版本而發(fā)布修档,它為系統(tǒng)新增加的 API 和新特性提供兼容性支持碧绞。

android:minSdkVersion
一個(gè)用于指定應(yīng)用運(yùn)行所需最低 API 級(jí)別的整數(shù)。 如果系統(tǒng)的 API 級(jí)別低于該屬性中指定的值吱窝,Android 系統(tǒng)將阻止用戶安裝應(yīng)用讥邻。 您應(yīng)該始終聲明該屬性。
注意:如果您不聲明該屬性院峡,系統(tǒng)將假定默認(rèn)值為“1”兴使,這表示您的應(yīng)用兼容所有 Android 版本。 如果您的應(yīng)用并不兼容所有版本(例如照激,它使用 API 級(jí)別 3 中引入的 API)发魄,并且您尚未聲明正確的 minSdkVersion,則當(dāng)應(yīng)用安裝在 API 級(jí)別小于 3 的系統(tǒng)上時(shí)实抡,應(yīng)用將在運(yùn)行時(shí)嘗試訪問(wèn)不可用的 API 時(shí)發(fā)生崩潰欠母。 因此欢策,請(qǐng)務(wù)必在 minSdkVersion 屬性中聲明合適的 API 級(jí)別吆寨。

android:targetSdkVersion
三個(gè)版本號(hào)中最有趣的就是 targetSdkVersion 了。 targetSdkVersion 是 Android 提供向前兼容的主要依據(jù)踩寇,在應(yīng)用的 targetSdkVersion 沒(méi)有更新之前系統(tǒng)不會(huì)應(yīng)用最新的行為變化啄清。這允許你在適應(yīng)新的行為變化之前就可以使用新的 API (因?yàn)槟阋呀?jīng)更新了 compileSdkVersion 不是嗎?)。

由于某些行為的變化對(duì)用戶是非常明顯的辣卒,所以將 target 更新為最新的 SDK 是所有應(yīng)用都應(yīng)該優(yōu)先處理的事情掷贾。但這不意味著你一定要使用所有新引入的功能,也不意味著你可以不做任何測(cè)試就盲目地更新 targetSdkVersion 荣茫,請(qǐng)一定在更新 targetSdkVersion 之前做測(cè)試想帅!你的用戶會(huì)感謝你的。

如果你按照上面示例那樣配置啡莉,你會(huì)發(fā)現(xiàn)這三個(gè)值的關(guān)系是:
minSdkVersion <= targetSdkVersion <= compileSdkVersion

這種直覺(jué)是合理的港准,如果 compileSdkVersion 是你的最大值,minSdkVersion 是最小值咧欣,那么最大值必需至少和最小值一樣大且 target 必需在二者之間浅缸。

理想上,在穩(wěn)定狀態(tài)下三者的關(guān)系應(yīng)該更像這樣:
minSdkVersion (lowest possible) <=
targetSdkVersion == compileSdkVersion (latest SDK)
用較低的 minSdkVersion 來(lái)覆蓋最大的人群魄咕,用最新的 SDK 設(shè)置 target 和 compile 來(lái)獲得最好的外觀和行為衩椒。

感謝谷歌官方文檔的詳細(xì)說(shuō)明~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市哮兰,隨后出現(xiàn)的幾起案子毛萌,更是在濱河造成了極大的恐慌,老刑警劉巖喝滞,帶你破解...
    沈念sama閱讀 222,946評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件朝聋,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡囤躁,警方通過(guò)查閱死者的電腦和手機(jī)冀痕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)狸演,“玉大人言蛇,你說(shuō)我怎么就攤上這事∠啵” “怎么了腊尚?”我有些...
    開(kāi)封第一講書人閱讀 169,716評(píng)論 0 364
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)满哪。 經(jīng)常有香客問(wèn)我婿斥,道長(zhǎng),這世上最難降的妖魔是什么哨鸭? 我笑而不...
    開(kāi)封第一講書人閱讀 60,222評(píng)論 1 300
  • 正文 為了忘掉前任民宿,我火速辦了婚禮,結(jié)果婚禮上像鸡,老公的妹妹穿的比我還像新娘活鹰。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,223評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布志群。 她就那樣靜靜地躺著着绷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪锌云。 梳的紋絲不亂的頭發(fā)上荠医,一...
    開(kāi)封第一講書人閱讀 52,807評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音桑涎,去河邊找鬼子漩。 笑死,一個(gè)胖子當(dāng)著我的面吹牛石洗,可吹牛的內(nèi)容都是我干的幢泼。 我是一名探鬼主播,決...
    沈念sama閱讀 41,235評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼讲衫,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼缕棵!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起涉兽,我...
    開(kāi)封第一講書人閱讀 40,189評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤招驴,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后枷畏,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體别厘,經(jīng)...
    沈念sama閱讀 46,712評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,775評(píng)論 3 343
  • 正文 我和宋清朗相戀三年拥诡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了触趴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,926評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡渴肉,死狀恐怖冗懦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情仇祭,我是刑警寧澤披蕉,帶...
    沈念sama閱讀 36,580評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站乌奇,受9級(jí)特大地震影響没讲,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜礁苗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,259評(píng)論 3 336
  • 文/蒙蒙 一爬凑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧寂屏,春花似錦贰谣、人聲如沸娜搂。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,750評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至考廉,卻和暖如春秘豹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背昌粤。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,867評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工既绕, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人涮坐。 一個(gè)月前我還...
    沈念sama閱讀 49,368評(píng)論 3 379
  • 正文 我出身青樓凄贩,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親袱讹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子疲扎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,930評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容