android sdk版本

1:sdk 版本对应对应平台版本

   

2 :compileSdk、minSdk、targetSdk到概念 (https://juejin.im/post/6844903497331130376

    compileSdkVersion 告诉 Gradle 用哪个 Android SDK 版本编译你的应用。使用任何新添加的 API 就需要使用对应 Level 的 Android SDK (这个sdk 一般可以设置成最新的,这样你在写代码的时候,就可以应用最新的api

    注意:在我们需要使用一些最新的 support libary 包时,就需要使用最新的 编译sdk (例如,要使用 23.1.1 版本的 Support Library ,compileSdkVersion 就必需至少是 23 (大版本号要一致!)

 minSdkVersion  

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

     注意 : 在开发时 minSdkVersion 也起到一个重要角色:lint 默认会在项目中运行,它在你使用了高于 minSdkVersion 的 API 时会警告你,帮你避免调用不存在的 API 的运行时问题 (所以,当某个api 你不知道是在哪个版本支持,但实际上这个api又是在高于你设置的minSdkVersion 才体现,那么as 就会提醒你,避免在实际运行时出现问题

    另外 决定使用minSdkVersion版本号,你可能需要参考 Android 机型分布统计

targetSdkVersion

   三个版本号中最有趣的就是 targetSdkVersion 了。 targetSdkVersion 是 Android 提供向前兼容的主要依据,在应用的 targetSdkVersion 没有更新之前系统不会应用最新的行为变化。这允许你在适应新的行为变化之前就可以使用新的 API (因为你已经更新了 compileSdkVersion 不是吗?)。(请记住上面这句话,是向前兼容,比如你的应用是 targetSdk 是28 ,但是用户手机没有升级到 对应28平台,你的应该运行在这个手机上时,不会有28 的行为功能,但是你的手机升级到28 之后,你的应用运在次运行在这个手机上时,就会有28 的行为功能 (比如 android 的暗夜模式是 sdk = 28 才支持 android9.0 )

    所以将 target 更新为最新的 SDK 是所有应用都应该优先处理的事情。但这不意味着你一定要使用所有新引入的功能,也不意味着你可以不做任何测试就盲目地更新 targetSdkVersion ,请一定在更新 targetSdkVersion 之前做测试!你的用户会感谢你的。

3 buildTools、Tools、Platform-tools

buildTools、Tools、Platform-tools这3个东西其实都是开发工具,即它的版本更新并不会影响运行的APP,只是工具上的升级

在 build.gradle 中的 buildToolsVersion 版本号一般是API-LEVEL.0.0,其中API-LEVEL要大于等于compileSdkVersion。

在前面的compileSdkVersion解释中建议选用最新的SDK Version,so,buildToolsVersion也建议选择最新的版本号。build.gradle中这2个的修改可以让你体验最新的API和工具。

至于Tools、Platform-tools这2个东西,直接更新最新吧。Only 工具。

经过上面的深入了解后,总结以下:

  1. 当AS提示Gradle或者Android SDK更新后,大胆更新吧,先全部下载下来
  2. 更新完后,直接将compileSdkVersion、buildToolsVersion修改为最新的版本号,放心的更改,该完后如果有废弃API编译器还会给你提示。
  3. minSdkVersion 和 targetSdkVersion 要慎重修改。除非核心代码中会提高minSdkVersion的版本号,其他的建议运行时判断版本号。targetSdkVersion的修改要注意代码是否适应更新后的版本号,要测试完全,最典型的例子就是23版本的运行时权限问题的处理。如果targetSdkVersion提升到了23,如果代码没有进行运行时权限判断会直接崩溃。

下面这个崩溃 是 match.group() 函数在 android小于 o 版本平台上崩溃了, 但是在  android 大于o 版本平台上没有崩溃

猜你喜欢

转载自blog.csdn.net/u013620306/article/details/107857663
今日推荐