2016-10-26 29 views
3

當Google發佈Android SDK的更新時,什麼使Android Studio中開發的項目保持最新的可靠過程是什麼?確定最新的穩定Android SDK

我只想更新到最新的穩定版本,而不是測試版本。例如,目前,我對Android 7.1.1(API 25)SDK不感興趣,因爲它仍處於預覽狀態。同樣,我不想要任何Android支持庫的測試版,即使lint告訴我有一個可用。

具體而言,如何確定從SDK Manager安裝哪些軟件包,以及如何確定要在build.gradle中指定哪些版本的聲明,如下所示?

compileSdkVersion xxx 
... 
targetSdkVersion xxx 
... 
compile 'com.android.support:support-v4:xxx' 

更新:對於進一步的背景,看到新的Android Studio的問題,Lint prompts upgrade to partially distributed SDKs,通過註釋的討論提示。

+1

將'compileSdkVersion'設置爲最高的生產API級別(目前爲24級)。將'targetSdkVersion'設置爲適合您的應用程序的任何內容(如果您已準備好,則爲24),如果不是,則將其降低。支持庫主要版本應該與'compileSdkVersion'相匹配,並使用最新的minor/patchlevel。 – CommonsWare

+0

我正在尋找獨立於版本的流程,而不是針對今天的特定答案。例如,如何快速確定API級別24是最近的穩定性?有沒有一個規範的網頁發佈這個?支持庫有次要版本。如何確定他們最新的穩定版本? –

+0

「例如,如何快速確定API級別24是最近的穩定性?」 - 因爲發佈了Android 7.0,並且Android 7.0是API Level 24(參見'Build.VERSION_CODES')。 「是否有一個標準的網頁發佈這個?「 - Android操作系統版本受到很多主要新聞媒體的影響,」如何確定他們最新的穩定版本?「 - 假設沒有附加'-alpha'或類似的後綴,這是最高的數字。 – CommonsWare

回答

0

我只想更新到最新的穩定版本,而不是測試版本。

關於支持庫,alpha和beta在工件版本方面被公佈。例如,ConstraintLayout庫目前是-beta1,IIRC。

對於Android SDK,過去三年的規則是,如果它被稱爲「開發人員預覽版」,那麼它不是您認爲是穩定版本的。如果它有一個固定的Android版本號(例如7.0),它是一個穩定版本。

您已經表達了對Android 7.1的關注,它對於之前的規則有些例外。恕我直言,谷歌搞砸了,大概是由於典型的執行白癡。實際上,API Level 25是最終版本,因爲它們已經在運送帶有Android 7.1的設備(Pixel),並且源代碼位於AOSP存儲庫中。由於他們描述的是the APIs as final,我也認爲他們是最終的,並且在推薦人們對他們進行編纂時感到舒服。它的「預覽」方面更多的是在其他硬件的可用性方面,這似乎主要是一種方法來試圖讓狗停留在「爲什麼我們沒有7.1這樣的Nexus設備然而?」歡迎您不同意並考慮將API Level 25「尚未烘焙」,但您需要針對您認爲「尚未烘焙」的方式提出自己的啓發式方法。

在2014年的L Developer Preview之前,對於大多數Android版本來說,如果SDK發佈了,那是最終的。偶爾,它在操作系統可供用戶使用後發貨。

同樣,我不想任何Android支持庫的beta版本,即使lint告訴我有一個可用。

Lint不應該這樣做;如果您有相反的證據,請提出問題。再次,「beta版本」將被指定爲這樣。因此,例如,支持庫的25.0.0版本不是測試版。如果你想考慮25.0.0爲beta版本,不管出於何種原因,歡迎你這樣做,但是你需要爲你的beta版本提供你自己的啓發式。

如何確定在build.gradle中聲明的指定版本如下所示?

對於compileSdkVersion,將其設置爲任何你感覺穩定的。現在,這可能是24.這可能是25.

對於targetSdkVersion,將其設置爲適合您的應用程序的任何內容。該值爲,具體爲設計爲而不是嚴格遵循compileSdkVersion,例如,當您有現有的代碼庫並需要時間將代碼調整爲某種更新的行爲時。

對於支持庫版本,主版本應該與您的compileSdkVersion匹配。次要/補丁級別應該是該主要版本的最新版本。

同樣,Android Studio中的代碼分析警告你,如果你有25.0.0之前支持庫的依賴,但沒有提到25預覽

這是因爲25不能預覽。一旦你設置你的compileSdkVersion爲25 —,你纔可以使用它,否則—,但在所有其他方面,它是最終的,因爲任何其他支持庫更新沒有明確標記爲alpha, beta,RC等

搜索新聞網站並不理想,因爲您需要手動篩選更新和過時的文章,特別是像7.1.1這樣的發佈版本。

Android OS版本在the Android Developer Blog上公佈。例如,here is the announcement about Android 7.0 starting to ship to devices

+0

[預覽時間線和更新](https://developer.android.com/preview/overview.html #timeline)部分說:「我們正在交付開發每預覽1作爲Beta版本發佈「,並在12月份發佈最終版本。對於沒有完全烘焙的啓發式,這是一個非常明顯的啓發式,儘管它可能足夠接近:「一般來說,構建適合開發人員和早期使用者的日常使用」。我的個人經驗並不好:包管理者甚至不包括源代碼。我寧願堅持完全穩定的版本,而新版本穩定。 –

+0

@EdwardBrey:「這是一個非常明確的未啓發式啓發式」 - 恕我直言,指的是Nexus設備上的操作系統狀態,而不是SDK的狀態。 「一般來說,構建適合開發人員和早期使用者的日常使用」 - 術語「構建」是指操作系統映像,而不是SDK。 「軟件包管理員甚至不包括源代碼」 - 這並不奇怪,因爲這經常滯後。 – CommonsWare

+1

感謝您澄清OS/SDK版本狀態的區別。看起來lint提示升級到預發佈代碼的問題已得到解決,而剩下的問題就是與分發滯後相關的問題。爲此我創建了一個[問題](https://code.google.com/p/android/issues/detail?id=226469)。 –

0

這是最好的過程中,我已經能夠找到:

  1. 使用從SDK管理器的最新版本沒有被標記爲預覽具有所有包(圖像,源代碼等)對你很重要。使用此版本compileSdkVersiontargetSdkVersion,除非您需要保留目標SDK版本,因爲您的代碼沒有考慮到SDK中的重大更改。

  2. 使用最新的支持庫版本發佈在library revision history上,用於您正在使用的SDK版本。

它不像我想的那樣自動化,但至少看起來我們可以信任SDK Manager中的預發行包被標記爲這樣。