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

时间:2014-07-01 12:23:25

标签: android android-studio

" min sdk version / target sdk version"有什么区别?和#34;编译sdk版本"?我知道min和target sdk意味着什么,但是编译sdk版本意味着什么?

在Eclipse中,我有min / max和target sdk,但在android studio中有这三种设置。

5 个答案:

答案 0 :(得分:196)

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

目标sdk版本是您的应用程序定位要运行的版本。理想情况下,这是因为某种最佳运行条件。如果您要为版本19和#34;制作应用程序,那么这就是指定的地方。它可以在早期版本或更高版本上运行,但这正是您的目标。这主要是为了表明您的应用程序在市场中的使用情况等等。

编译sdk版是您发布.apk文件时用于制作应用程序的IDE(或其他编译方式)的版本。这对于测试应用程序很有用,因为在开发应用程序时编译应用程序是一种常见的需求。因为这将是编译到APK的版本,它自然会是您的版本的版本。同样,建议您将此匹配作为目标sdk版本。

答案 1 :(得分:67)

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

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

编译sdk版本build tools用于编译和构建应用程序以便发布,运行或调试的Android版本。

通常编译sdk版本和目标sdk版本是相同的。

答案 2 :(得分:43)

公式是

  

minSdkVersion< = targetSdkVersion< = compileSdkVersion

minSdkVersion - 是一个标记,用于定义应用程序可以安装的最低Android版本。此外,Lint还使用它来阻止调用不存在的API。它还会影响构建时间。因此,您可以使用构建flavor在开发期间将minSdkVersion覆盖为最大值。利用Android团队为我们提供的所有改进,它将有助于加快构建速度。例如,某些功能Java 8仅可从特定版本的minSdkVersion中获得。

targetSdkVersion - 表示Android系统会启用特定的行为更改。

例如:

  • 从Android 6.0(API级别23)开始Runtime Permissions。如果将targetSdkVersion设置为22或更低,则应用程序不会在运行时向用户请求某些权限。

  • 从Android 8.0(API级别26)开始,必须将所有notifications分配给某个频道,否则它将不会显示。在运行Android 7.1(API级别25)及更低级别的设备上,用户只能按应用程序管理通知(实际上每个应用在Android 7.1及更低版本上只有一个频道)。

  • 从Android 9(API级别28)开始,Web-based data directories separated by process。如果targetSdkVersion为28岁且您在不同流程中创建了多个WebView,则会获得java.lang.RuntimeException

compileSdkVersion - 实际上它是SDK平台版本,并告诉Gradle Android SDK用于编译。当您想要使用Android SDK中的新功能或调试.java文件时,您应该注意compileSdkVersion。还有一个事实是compileSdkVersion >= Support Library version

您可以阅读更多相关信息here。 另外,我建议您查看migration到Android 8.0的示例。

答案 3 :(得分:4)

请参阅此处,最好在目标sdk版本最新发布的API版本中指定: What is the difference between compileSdkVersion and targetSdkVersion?

答案 4 :(得分:0)

compileSdkVersion :compileSdkVersion是针对该应用程序编译的API版本。这意味着您可以使用该版本API(显然包括所有先前版本)中包含的Android API功能。如果尝试使用API​​ 16功能,但将compileSdkVersion设置为15,则会出现编译错误。如果将compileSdkVersion设置为16,您仍然可以在API 15设备上运行该应用。

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

targetSdkVersion :目标sdk版本是您的应用要在其上运行的版本。