Android系統版本、Platform版本、SDK版本、gradle修改


 

雖然之前分析了gradle,但是在eclipse導入Android studio的時候,各個版本出現的問題還是很模糊,下面對各種版本進行一下說明:

參考資料:

https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#uses

http://blog.csdn.net/aiynmimi/article/details/51028499

 

1.  概念:

我們通常所說的Android系統版本其實就是platform版本,通俗點說就是Android4.0/5.0/6.0這種系統版本號。

SDK版本就是API-level,通俗點說用處就是越新的API-level就會提供更多酷炫的API接口,淘汰落后的API接口。

 

系統版本和SDK版本之間的關系:一般是一個或者多個系統對應着一般版本的SDK、因為系統更新了,但是不一定需要更新接口。

如下圖所示(從官網上拔下來最新的):

平台版本 API 級別 VERSION_CODE 備注
Android 7.0 24 N 平台亮點
Android 6.0 23 M 平台亮點
Android 5.1 22 LOLLIPOP_MR1 平台亮點
Android 5.0 21 LOLLIPOP
Android 4.4W 20 KITKAT_WATCH 僅限 KitKat for Wearables
Android 4.4 19 KITKAT 平台亮點
Android 4.3 18 JELLY_BEAN_MR2 平台亮點
Android 4.2、4.2.2 17 JELLY_BEAN_MR1 平台亮點
Android 4.1、4.1.1 16 JELLY_BEAN 平台亮點
Android 4.0.3、4.0.4 15 ICE_CREAM_SANDWICH_MR1 平台亮點
Android 4.0、4.0.1、4.0.2 14 ICE_CREAM_SANDWICH
Android 3.2 13 HONEYCOMB_MR2  
Android 3.1.x 12 HONEYCOMB_MR1 平台亮點
Android 3.0.x 11 HONEYCOMB 平台亮點
Android 2.3.4
Android 2.3.3
10 GINGERBREAD_MR1 平台亮點
Android 2.3.2
Android 2.3.1
Android 2.3
9 GINGERBREAD
Android 2.2.x 8 FROYO 平台亮點
Android 2.1.x 7 ECLAIR_MR1 平台亮點
Android 2.0.1 6 ECLAIR_0_1
Android 2.0 5 ECLAIR
Android 1.6 4 DONUT 平台亮點
Android 1.5 3 CUPCAKE 平台亮點
Android 1.1 2 BASE_1_1  
Android 1.0 1 BASE

 

可以看到Android1.0系統版本對應着SDK版本1(一個對應一個)

Android2.3、2.3.1、2.3.2對應着SDK版本9:(多個對應一個)

 

2. compileSdkVersion,minSdkVersion,targetSdkVersion

下面來說明一下在Android studio中的這三個SDK版本:

compileSdkVersion:

compileSdkVersion告訴 Gradle 用哪個 Android SDK 版本編譯你的應用。使用任何新添加的 API 就需要使用對應等級的 Android SDK。 
需要強調的是修改 compileSdkVersion 不會改變運行時的行為。當你修改了 compileSdkVersion 的時候,可能會出現新的編譯警告、編譯錯誤,但新的 compileSdkVersion 不會被包含到 APK 中:它純粹只是在編譯的時候使用。(應該修復這些警告,他們的出現是有原因的) 
因此推薦使用最新的 SDK 進行編譯。在現有代碼上使用新的編譯檢查可以獲得很多好處,避免新棄用的 API ,並且為使用新的 API 做好准備。 

 

minSdkVersion:

如果 compileSdkVersion 設置為可用的最新 API,那么minSdkVersion 則是應用可以運行的最低要求minSdkVersion 是Google Play商店用來判斷用戶設備是否可以安裝某個應用的標志之一。 你所使用的庫,如 Support Library 或 Google Play services,可能有他們自己的 minSdkVersion 。你的應用設置的 minSdkVersion 必須大於等於這些庫的 minSdkVersion 。例如有三個庫,它們的 minSdkVersion 分別是 4, 7 和 9 ,那么你的 minSdkVersion 必需至少是 9 才能使用它們。

 

targetSdkVersion:

targetSdkVersion 是 Android 提供向前兼容的主要依據,在應用的 targetSdkVersion 沒有更新之前系統不會應用最新的行為變化。這允許你在適應新的行為變化之前就可以使用新的 API。

由於某些行為的變化對用戶是非常明顯的(棄用的 menu 按鈕,運行時權限等),所以將 target 更新為最新的 SDK 是所有應用都應該優先處理的事情。但這不意味着你一定要使用所有新引入的功能,也不意味着你可以不做任何測試就盲目地更新 targetSdkVersion ,請一定在更新 targetSdkVersion 之前做測試!你的用戶會感謝你的。

通俗點說,就是你可以通過最新的compileSdkVersion 編譯應用,但是在targetSdkVersion沒有更新之前,API的行為就是targetSdkVersion 行為,而不是compileSdkVersion 的行為;

 

 

三者關系:

minSdkVersion <= targetSdkVersion <= compileSdkVersion 

3. Android studio上gradle修改

 http://www.jianshu.com/p/00beddbe3dbc

 

4. eclipse導入Android studio示例

將應用代碼由eclipse導入Android studio的方法NDK-Build和Cmake兩種方法(以android_serialport_api為例)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM