android中compileSdkVersion、minSdkVersion、targetSdkVersion 的选择

向前兼容是 Android 应用非常重要的事情,用户在升级到新版 Android 系统时,用以前版本 SDK 构建的应用需要保证不会出现问题,这就是 compileSdkVersionminSdkVersiontargetSdkVersion 的作用,他们分别控制可以使用哪些 API,要求的最低 API 级别是什么,以及应用的兼容模式。

compileSdkVersion

compileSdkVersion 告诉 Gradle 用哪个版本的 Android SDK 编译你的应用,使用任何新添加的 API 就需要使用对应 LevelAndroid SDK。修改 compileSdkVersion 不会改变运行时的行为,当修改了 compileSdkVersion 时可能会出现新的编译警告、编译错误,强烈推荐总是使用最新的 SDK 进行编译,避免弃用的 API。此外,如果使用最新发布的 Support Library 就需要使用最新的 SDK 编译。例如使用 23.1.1 版本的 Support LibrarycompileSdkVersion 就必需至少是 23 (大版本号要一致)。通常,新版的 Support Library 随着新的系统版本而发布,它为系统新增加的 API 和新特性提供兼容性支持。

minSdkVersion

minSdkVersion 是应用可以运行的最低 API 要求,也是 Google Play 商店用来判断用户设备是否可以安装某个应用的标志之一。在开发时 minSdkVersion 也起到一个重要角色,lint 默认会在项目中运行,它在我们使用了高于 minSdkVersionAPI 时会警告我们,避免调用低版本不存在的 API 而导致在低版本设备上运行时的问题。如果只在较高版本的系统上才使用某些 API,通常使用运行时检查系统版本的方式解决。此外要记住,我们所使用的库(如 Support LibraryGoogle Play services)可能有他们自己的 minSdkVersion,我们应用设置的 minSdkVersion 要必需大于等于这些库的 minSdkVersion。在少数情况下你可能仍然想用一个比你应用的 minSdkVersion 还高的库,这时可以使用 tools:overrideLibrary 标记配合代码调用处主动版本判断操作来实现。

targetSdkVersion

targetSdkVersionAndroid 提供向前兼容的主要依据,在应用的 targetSdkVersion 没有更新之前系统不会应用最新的行为变化,这允许你在适应新的行为变化之前就可以使用新的 API (因为你已经更新了 compileSdkVersion)。譬如 targetSdkVersion19(对应为 Android4.4),应用运行时最高只能使用 API 19 的新特性,即使代码中使用了 API 23 的新特性,实际运行时也不会使用该新特性。同样譬如 AlarmMangerset()get() 方法,在 API 19 和之前的效果是不一样的,如果 targetSdkVersion18,无论运行手机是什么版本都是旧效果,如果 targetSdkVersion19 则在 4.4 以上的手机上运行时就是新效果了。

总结

minSdkVersiontargetSdkVersioncompileSdkVersion 的另一个不同之处是它们会被包含进最终 APKAndroidManifest.xml 文件中,他们的大小关系应该是 minSdkVersion <= targetSdkVersion <= compileSdkVersion,而推荐的大小关系是 minSdkVersion(lowest possible) <= targetSdkVersion == compileSdkVersion(latest SDK

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值