雖然之前分析了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、因為系統更新了,但是不一定需要更新接口。
如下圖所示(從官網上拔下來最新的):
可以看到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為例)