minSdkVersion、targetSdkVersion、compileSdkVersion三者的作用解析
1. minSdkVersion
minSdkVersion限制安裝application所需要的系統最低版本,低於該版本的系統都不可以安裝該application。同時不能使用該level版本SDK所不具備的API,例如在minSdkVersion為8的application中調用【this.getActionBar()】就會出現Call requires API level 11 (current min is 8): android.app.Activity#getActionBar的錯誤。這是因為ActionBar是在Android 11才出現的新功能(new API)。
2. targetSdkVersion
targetSdkVersion是Android提供向前兼容的主要依據,表明該application已經兼容從minSdkVersion至tartgetSdkVersion之間所有api的變化。在targetSdkVersion更新之前系統不會應用最新的行為變化。
3. compileSdkVersion
compileSdkVersion告訴gradle使用哪個版本Android SDK編譯你的應用,使用任何新添加的API就要使用對應level的Android SDK.
4. 他們三者的關系
minSdkVersion <= targetSdkVersion <= compileSdkVersion
5. 理想情況下應該是
minSdkVersion (lowest possible) <=targetSdkVersion == compileSdkVersion (latest SDK)
6. Android主Module與依賴Module之間targetSDKVersion的關系
Android項目以主Module的targetSDKVersion為準。也即是說,依賴Module targetSDKVersion的設置是無效的。
minSdkVersion、targetSdkVersion、compileSdkVersion三者的作用解析