如下在AS的android project下,外部库中的第一个android.jar的版本,也就是 compileSdkVersion

1、CompileSdkVersion是你SDK的版本号,也就是API Level,例如API-19、API-20、API-21等等。
2、buildeToolVersion是你构建工具的版本,其中包括了打包工具aapt、dx等等。这个工具的目录位于..your_sdk_path/build-tools/XX.XX.XX
这个版本号一般是API-LEVEL.0.0。 例如I/O2014大会上发布了API20对应的build-tool的版本就是20.0.0
在这之间可能有小版本,例如20.0.1等等。
3、可以用高版本的build-tool去构建一个低版本的sdk工程,例如build-tool的版本为20,去构建一个sdk版本为18的
例如:compileSdkVersion 18
buildToolsVersion "22.0.1"这样也是OK的。
4.其中比较重要的目录包括【build-tools】 【platforms】 【platform-tools】 【tools】
【build-tools】里面是不同版本(例如21.1.1)的build工具,这些工具包括了aapt打包工具、dx.bat、aidl.exe等等
【platform】是存放不同API-level版本SDK目录的地方
【platform-tools】是一些android平台相关的工具,adb、fastboot等
【tools】是指的安卓开发相关的工具,例如android.bat、ddms.bat(Dalvik debug Monitor Service)、draw9patch.bat等等
minSdkVersion,targetSdkVersion
先抛出一个问题:
我们的应用开发的时候android最新版本是6.0,当一年过去之后,7.0发布了,那么我们的应用在7.0手机上是否还能运行?会奔溃吗?
根据我们的实际经验,觉得应该不会奔溃,可能有些功能会有问题,但是具体是那一块呢?又说不太好,这就涉及到了Android的向前兼容的问题了。
我们在创建App的时候经常会设置这几个参数
minSdkVersion
APP支持的最低系统版本
targetSdkVersion
APP所使用这个所设定的版本及该版本前的所有特性。
例如:
需求:app要支持Android SDK 4,并且能够使用手势。
这个时候,就需要将minSdkVersion 设置为4,targetSdkVersion设置为7。因为手势实在Android SDK 7才引入的功能
minSdkVersion :4
targetSdkVersion:7
开发的APP中,要使用手势功能,手势功能在android SDK7的版本才引入的。这个时候,就可以将targetSdkVersion设置为7
targetSdkVersion是这哥三里面最难以理解的一个了,不过也是最有趣的一个。
targetSdkVersion的含义对于我们来说就有点陌生而熟悉了。
什么是目标设备SDK版本?
是和minSdkVersion相对应的上限吗?
如果我运行在比targetSdkVersion高的设备上,会出现什么?
如果是比targetSdkVersion低的设备呢?
满满的疑问
首先targetSdkVersion是android向前兼容的主要方式,怎么说呢?官方是这样说的:
除非更新targetSdkVersion,否则不改变应用的行为。 这允许您在处理行为更改之前使用新的API(如您更新过的compileSdkVersion)
简单的说就是你的应用已经针对这个版本的手机,做了充分的兼容性处理和测试性处理,比如if(Build.VERSION.SDK_INT >= 23) { ... } ,这样针对不同的SDK版本做不同的处理,这就说明我们不能随便的改变targetSdkVersion得值,我们必须做好充足的兼容性处理和测试处理才行。
在 Android 4.4 (API 19)以后,AlarmManager 的 set() 和 setRepeat() 这两个 API 的行为发生了变化。在 Android 4.4 以前,这两个 API 设置的都是精确的时间,系统能保证在 API 设置的时间点上唤醒 Alarm。因为省电原因 Android 4.4 系统实现了 AlarmManager 的对齐唤醒,这两个 API 设置唤醒的时间,系统都对待成不精确的时间,系统只能保证在你设置的时间点之后某个时间唤醒。虽然api的名字没有改变,但是功能结果已经发生改变,我们设置targetSdkVersion为16,Android4.4之前,那么我们在Android4.4之后运行会出现什么呢?难道就不能用了吗?不准确了吗?
当然不是,系统通过targetSdkVersion来保证Android的向前兼容性,在Android4.4之后的设备上,系统会判断你的targetSdkVersion是否小于19,如果小于的话,那就按照19之前的api方法,如果大于等于19,那么就按照之后的api方法来走,保证了程序运行的一致性。也就是向前兼容性。