1.compileSdkVersion 告诉 Gradle 用哪个 Android SDK 版本编译你的应用,不会包含到APK中,它纯粹只是在编译 的时候使用。
2.targetSdkVersion 是 Android 系统提供前向兼容的主要手段。随着 Android 系统的升级,当某个系统的 API 或者模块的行为可能会发生改变,但是为了保证老 APK 的行为还是和以前兼容。只要 APK 的 targetSdkVersion 不变,即使这个 APK 安装在新 Android 系统上,其行为还是保持老的系统上的行为,这样就保证了系统对老应用的前向兼容性。
比如:你在Android4.4(19)之前安装的APK,之后升级了系统,apk没有替换。这时API: AlarmManager set()和setRepeat()这两个 API 的行为发生了变化的。当调用这个API时,系统首先会查一下调用的 APK 的 targetSdkVersion 信息,如果小于 19,就还是按照老的行为,即精确设置唤醒时间,否者执行新的行为。