美文网首页
Android关于BuildToolVersion与Compli

Android关于BuildToolVersion与Compli

作者: 许沫梓 | 来源:发表于2017-05-05 13:37 被阅读0次

    AndroidStudio:Android应用的开发工具,类似如Eclipse

    Gradle:一个构建工具;这类的构建工具有Ant,android eclipse开发用到的就是;Maven;

    buildToolsVersion:Android构建工具的版本;

    compileSdkVersion:编译版本,运行当前项目所需要的Android SDK版本;


    compileSdkVersion是告诉gradle用哪个SDK版本来编译,和运行时要求的版本号没有关系;

    buildToolsVersion的版本需要大于等于compileSdkVersion;高版本的buildTools可以构建低版本编译的Android程序;


    这种情况就是说compileSdkVersion>buildToolsVersion,这是不允许的;


    targetSdkVersion:是 Android 系统提供前向兼容的主要手段;在 Android 4.4 (API 19)以后,AlarmManager 的set()setRepeat()这两个 API 的行为发生了变化。在 Android 4.4 以前,这两个 API 设置的都是精确的时间,系统能保证在 API 设置的时间点上唤醒 Alarm。因为省电原因 Android 4.4 系统实现了 AlarmManager 的对齐唤醒,这两个 API 设置唤醒的时间,系统都对待成不精确的时间,系统只能保证在你设置的时间点之后某个时间唤醒。

    这时,虽然 API 没有任何变化,但是实际上 API 的行为却发生了变化,如果老的 APK 中使用了此 API,并且在应用中的行为非常依赖 AlarmManager 在精确的时间唤醒,例如闹钟应用。如果 Android 系统不能保证兼容,老的 APK 安装在新的系统上,就会出现问题。

    Android 系统是怎么保证这种兼容性的呢?这时候 targetSdkVersion 就起作用了。APK 在调用系统 AlarmManager 的set()或者setRepeat()的时候,系统首先会查一下调用的 APK 的 targetSdkVersion 信息,如果小于 19,就还是按照老的行为,即精确设置唤醒时间,否者执行新的行为。

    源码如:

    相关文章

      网友评论

          本文标题:Android关于BuildToolVersion与Compli

          本文链接:https://www.haomeiwen.com/subject/pvwmuttx.html