有关compileSdkVersion、targetSdkVersion的笔记
来源:互联网 发布:软件开发团队组成 编辑:程序博客网 时间:2024/06/01 10:41
在 Module 的 build.gradle
文件中,有三个有关 SdkVersion 的内容需要定义,分别是:compileSdkVersion
、minSdkVersion
、targetSdkVersion
。
有关于这三个值的含义,可以先阅读下面这两篇文章:
【1】Android targetSdkVersion 原理
【2】如何选择 compileSdkVersion, minSdkVersion 和 targetSdkVersion
其中,最好理解的就是minSdkVersion
,这个简单的说就是定义了编译好的的 APK 可以运行的最低的 Android 设备版本号。
根据上图,还需要注意的是,如果只在较高版本的系统上才使用某些 API,通常使用运行时检查系统版本的方式解决。
当在某些系统级别低当设备上使用较高版本的系统才有的 API,则需要在主动在代码中进行判断,当前 APK 运行的设备的系统版本是否高于该 API 所对应的系统版本,否则就不能够直接使用。
而对于compileSdkVersion
和targetSdkVersion
,如果对于其概念还有混淆的话,建议先多度几遍上述文章,尤其是第一篇文章中有关于那个例子的讲解。
这里在根据那个例子详细的说明一下(会尽量使用通俗的话语说明,如有错误,欢迎指正):
在 Android 4.4 (API 19)以后,AlarmManager 的 set() 和 setRepeat() 这两个 API 的行为发生了变化。在 Android 4.4 以前,这两个 API 设置的都是精确的时间,系统能保证在 API 设置的时间点上唤醒 Alarm。因为省电原因 Android 4.4 系统实现了 AlarmManager 的对齐唤醒,这两个 API 设置唤醒的时间,系统都对待成不精确的时间,系统只能保证在你设置的时间点之后某个时间唤醒。
假设一个 APK 设置的 targetSdkVersion
为18,此时有两种情况,compileSdkVersion
设置的为 18 或者 19 ,但是无论是那种情况,当 APK 安装在 Android 4.4 当设备上时,使用 AlarmManager
的 set()
或者 setRepeat()
都会是使用的精确的时间点,因为Android 4.4 的设备的系统(OS),会为了兼容性,实现两种方案,一个是精确的时间点
,另一个对待成不精确的时间
,而targetSdkVersion
为18 使用的就是精确的时间点
的方案,这样,就能保证在应用中的行为非常依赖 AlarmManager 在精确的时间唤醒时不会因为是安装在 Android 4.4 的设备上而不精确了。
但是,也有人会注意到compileSdkVersion
设置的为 18 或者 19 的差别,那就是,在编译时,那就是,当 compileSdkVersion
为 18 时,会直接使用 精准当时间点
的方案;而设置为 19 时,会先判断一下 targetSdkVersion
为 18 ,然后通过if-else
来使用 精准当时间点
的方案。
而如果是 targetSdkVersion
为19,则当 APK 安装在 Android 4.4 以下设备时,会因为该设备对应当系统 只实现了 精确的时间点
的方案而 “被迫” 在精确的时间点被唤醒,而如果是安装在 Android 4.4 的设备上,则会 “主动” 对待成不精确的时间,系统只能保证在你设置的时间点之后某个时间唤醒。
- 有关compileSdkVersion、targetSdkVersion的笔记
- compileSdkVersion和targetSdkVersion的区别
- compileSdkVersion,minSdkVersion ,targetSdkVersion 的区别
- compileSdkVersion targetSdkVersion minSdkVersion的关系
- compileSdkVersion,minSdkVersion,targetSdkVersion的区别
- minSdkVersion、compileSdkVersion、targetSdkVersion的区别及选择
- compileSdkVersion, minSdkVersion 和 targetSdkVersion 的作用
- 选择你的compileSdkVersion, minSdkVersion, 和targetSdkVersion
- targetsdkversion,compilesdkversion,minsdkversion各自的含义
- compileSdkVersion,minSdkVersion和targetSdkVersion的作用
- 项目中minsdkversion、compilesdkversion、targetsdkversion的区别
- compileSdkVersion,minSdkVersion,targetSdkVersion 的区别和比较
- targetSdkVersion、minSdkVersion和CompileSdkVersion之间的关系
- compileSdkVersion、minSdkVersion 以及 targetSdkVersion 的含义
- Android targetSdkVersion和compileSdkVersion的区别
- compileSdkVersion,minSdkVersion,targetSdkVersion还有buildToolsVersion的区别
- buildToolsVersion、compileSdkVersion、targetSdkVersion、minSdkVersion的区别
- 关于compileSdkVersion和targetSdkVersion
- AJAX处理服务端的json数据
- Android SO文件的兼容和适配
- 快速MD5碰撞生成器,MD5真的不可靠了.MD5用来去重和校验文件完整性已经不可靠了
- Linux 常用命令
- RockChip MPP
- 有关compileSdkVersion、targetSdkVersion的笔记
- python MySQLdb Could not to connect MySQL server
- C++中指针初始化和使用注意事项
- 开发中仿IOS三级菜单,开源项目PickView实用自定义数据封装使用实例
- Session Fixation
- 解决Orcale in超过1000个时出现“”列表中的最大表达式数为 1000”这个异常的问题
- gdb——基本指令
- struts学习总结
- PHP 抽象类的简单测试与总结