min SDK版本/目标SDK版本与编译SDK版本有什么区别?

“min sdk version / target sdk version”和“compile sdk version”有什么区别?

我知道min和target sdk是什么意思,但是编译sdk版本是什么意思? 在日食我有最小/最大和目标sdk,但在android工作室有这三个设置。

详细说明@ anuraagy的答案:

min sdk version是您的应用程序可以运行的最早版本的Android SDK。 通常这是因为早期的API存在问题,缺lessfunction或其他行为问题。

目标sdk版本您的应用程序的目标运行版本。 理想情况下,这是由于某种最佳的运行条件。 如果你要“让你的应用程序版本19”这是指定的地方。 它可能会在更早或更晚的版本上运行,但是这是您的目标。 这主要是为了表明您的应用程序在市场上的使用情况等。

编译sdk版本当你发布.apk文件的时候,你的IDE的版本(或者其他的编译方式,我想可能会用到)。 这对testing您的应用程序非常有用,因为在您开发应用程序时通常需要编译您的应用程序。 因为这将是要编译到APK的版本,所以它自然会成为您的版本。 同样,最好有这个匹配你的目标SDK版本。

我不是故意撕掉别人的回答,但是我真的希望能够区分这三个术语。

好问题!

min sdk版本是运行您的应用程序所需的Android操作系统的最低版本。

目标sdk版本是您的应用程序创build运行的Android版本。

编译sdk版本是构build工具用于编译和构build应用程序以发布,运行或debugging的Android版本。

通常编译SDK版本和目标SDK版本是一样的。

看到这里,最好在目标sdk版本中指定最新版本的API: compileSdkVersion和targetSdkVersion有什么区别?

公式是

minSdkVersion <= targetSdkVersion <= compileSdkVersion

minSdkVersion – 是定义应用程序能够安装的最低Android版本的标记。 另外它被Lint用来防止调用不存在的API。 它也影响Build Time。 所以你可以使用构build风格在开发过程中将minSdkVersion覆盖为最大值。 这将有助于使用Android团队为我们提供的所有改进更快地构build

targetSdkVersion – 说Android系统打开具体的行为变化。 很好的例子是危险的权限(来自23 API)。 如果将targetSdkVersion设置为22,则应用程序在运行时不会向用户请求某个权限。

compileSdkVersion – 告诉Gradle哪个Android SDK用来编译。 当你想使用新的function或从Android SDKdebugging.java文件,你应该照顾compileSdkVersion。 另一个事实是compileSdkVersion> = Support Library版本

你可以在这里阅读更多。 另外,我会build议你看看移植到Android 8.0的例子