公式是
minSdkVersion< = targetSdkVersion< = compileSdkVersion
minSdkVersion - 是一个标记,用于定义应用程序可以安装的最低Android版本。 此外,Lint还使用它来阻止调用不存在的API。 它还会影响构建时间。 因此,您可以使用构建flavor在开发期间将minSdkVersion覆盖为最大值。 利用Android团队为我们提供的所有改进,它将有助于加快构建速度。 例如,某些功能Java 8仅可从特定版本的minSdkVersion获得。
targetSdkVersion - 说Android系统打开特定的行为变化。
好的例子是危险的权限(来自23 API)。 如果将targetSdkVersion设置为22,则应用程序不会在运行时向用户请求某些权限。
从Android 8.0(API级别26)开始,必须将所有通知分配给通道,否则它将不会显示。 在运行Android 7.1(API级别25)及更低级别的设备上,用户只能按应用程序管理通知(实际上每个应用程序在Android 7.1及更低版本上只有一个频道)。
compileSdkVersion - 实际上它是SDK平台版本并告诉Gradle Android SDK用于编译。 当您想要使用新功能或从Android SDK调试.java文件时,您应该注意compileSdkVersion。 还有一个事实是compileSdkVersion> =支持库版本
你可以在这里读更多关于它的内容。另外,我建议您查看迁移到Android 8.0的示例