首先强烈建议阅读作者的参考博文。
在AndroidStudio中这三个属性位于Module的.gardle文件中。
compileSdkVersion
编译版本:即使用什么版本的API编译你的代码
- 如果使用旧版本的API编译一个项目
- 可以在新版本的系统上运行
- 在新版本的系统运行的时候无法使用新版本特性
- 在新版本对旧版本呢做过更新的点我们的应用可能发生不可预测的异常。
minSdkVersion
一个用于指定应用运行所需最低 API 级别的整数。 如果系统的 API 级别低于该属性中指定的值,Android 系统将阻止用户安装应用。 您应该始终声明该属性。
最小兼容版本:发布的应用会兼容的最低安卓版本。
注意:如果您不声明该属性,系统将假定默认值为“1”,这表示您的应用兼容所有 Android 版本。 如果您的应用并不兼容所有版本(例如,它使用 API 级别 3 中引入的 API),并且您尚未声明正确的 minSdkVersion,则当应用安装在 API 级别小于 3 的系统上时,应用将在运行时尝试访问不可用的 API 时发生崩溃。 因此,请务必在 minSdkVersion 属性中声明合适的 API 级别。
targetSdkVersion
一个用于指定应用的目标 API 级别的整数。如果未设置,其默认值与为 minSdkVersion 指定的值相等。
该属性用于通知系统,您已针对目标版本进行测试,并且系统不应启用任何兼容性行为来保持您的应用与目标版本的向前兼容性。
- 向前兼容:应用运行的系统版本高于targetSdkVersion指定的版本叫做向前兼容
- 向后兼容:反之
android:maxSdkVersion
不建议使用。
有了targetSdkVersion就够了,因为android的更新绝大多数的时候都是增量的,未更新的版本在更新的系统运行会以兼容模式正常运行。只是无法使用新特性。
参考
- http://www.jianshu.com/p/544d9f72883d
- http://chinagdg.org/2016/01/picking-your-compilesdkversion-minsdkversion-targetsdkversion/
- https://medium.com/google-developers/picking-your-compilesdkversion-minsdkversion-targetsdkversion-a098a0341ebd
- https://developer.android.google.cn/guide/topics/manifest/uses-sdk-element.html