如何选择 compileSdkVersion, minSdkVersion 和 targetSdkVersion

在build.gradle中:

 compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.starv.adindex"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0.0"
    }

注:buildToolsVersion和 compileSdkVersion 在project  setting 中项目中可以看到相应的信息

第一、compileSdkVersion

compileSdkVersion 告诉 Gradle 用哪个 Android SDK 版本编译你的应用。使用任何新添加的 API 就需要使用对应 Level 的 Android SDK。需要强调的是修改 compileSdkVersion 不会改变运行时的行为。当你修改了 compil它纯粹只是在编译的时候使用。(你真的应该修复这些警告,他们的出现一定是有原因的)eSdkVersion 的时候,可能会出现新的编译警告、编译错误,但新的 compileSdkVersion 不会被包含到 APK 中因此我们强烈推荐总是使用最新的 SDK 进行编译。在现有代码上使用新的编译检查可以获得很多好处,避免新弃用的 API ,并且为使用新的 API 做好准备。注意,如果使用 Support Library ,那么使用最新发布的 Support Library 就需要使用最新的 SDK 编译。例如,要使用 23.1.1 版本的 Support Library ,compileSdkVersion 就必需至少是 23 (大版本号要一致!)。通常,新版的 Support Library 随着新的系统版本而发布,它为系统新增加的 API 和新特性提供兼容性支持。

第二、minSdkVersion

如果 compileSdkVersion 设置为可用的最新 API,那么 minSdkVersion 则是应用可以运行的最低要求。minSdkVersion 是 Google Play 商店用来判断用户设备是否可以安装某个应用的标志之一。

在开发时 minSdkVersion 也起到一个重要角色:lint 默认会在项目中运行,它在你使用了高于 minSdkVersion  的 API 时会警告你,帮你避免调用不存在的 API 的运行时问题。如果只在较高版本的系统上才使用某些 API,通常使用运行时检查系统版本的方式解决。

请记住,你所使用的库,如 Support Library 或 Google Play services,可能有他们自己的 minSdkVersion 。你的应用设置的 minSdkVersion 必需大于等于这些库的 minSdkVersion 。例如有三个库,它们的 minSdkVersion 分别是 4, 7 和 9 ,那么你的 minSdkVersion  必需至少是 9 才能使用它们。在少数情况下,你仍然想用一个比你应用的 minSdkVersion 还高的库(处理所有的边缘情况,确保它只在较新的平台上使用),你可以使用 tools:overrideLibrary 标记,但请做彻底的测试!

当你决定使用什么 minSdkVersion 时候,你应该参考当前的 Android 分布统计,它显示了最近 7 天所有访问 Google Play 的设备信息。他们就是你把应用发布到 Google Play 时的潜在用户。最终这是一个商业决策问题,取决于为了支持额外 3% 的设备,确保最佳体验而付出的开发和测试成本是否值得。

当然,如果某个新的 API 是你整个应用的关键,那么确定 minSdkVersion 的值就比较容易了。不过要记得 14 亿设备中的 0.7% 也是个不小的数字。


解释二、新版本中public了老版本没有的接口,如果我写的一个App中用到了只有新版本才有的接口,肯定不能让它跑在老版本SDK上,不然会报错。 Android是如何保证这一点的?靠定义minSdkVersion来实现。 比如,如果我定义了<uses-sdk android:minSdkVersion="8"  ... />, 编译生成的apk是无法安装到Android 2.1(API Level 7)系统上的,系统会提示: ERROR: Application requires API version 8. Device API version is 7。
AndroidManifest.xml中如果不写,缺省 minSdkVersion = 1, 表示程序至少能安装到,并且作者也希望它能跑到Android 1.0上。

第三、targetSdkVersion

只是一个标示,如果targetSdkVersion与目标设备的API版本相同时,运行效率可能会高一些,编译阶段没有实质性作用

第四、buildToolsVersion

编译工具的版本,一般设置为最新即可


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值