“最小sdk版本/目标sdk版本”和“编译sdk版本”之间有什么区别?我知道min和target sdk是什么意思,但是编译sdk版本是什么意思?
在Eclipse中,我有最小/最大和目标sdk,但在android studio中有这三个设置。
“最小sdk版本/目标sdk版本”和“编译sdk版本”之间有什么区别?我知道min和target sdk是什么意思,但是编译sdk版本是什么意思?
在Eclipse中,我有最小/最大和目标sdk,但在android studio中有这三个设置。
Answers:
该分SDK版本是Android SDK的最早发行您的应用程序都可以运行。通常这是由于较早的API存在问题,缺少功能或其他一些行为问题所致。
该目标SDK版本为您的应用程序的版本针对上运行。理想情况下,这是因为某种最佳运行条件。如果要“使您的应用程序版本为19”,则将在此处指定。它可能在早期或更高版本上运行,但这是您的目标。这主要是为了指示您的应用程序在市场等方面的最新使用情况。
该编译SDK版本是Android平台的IDE(或编译,我想等手段)使用,让您的应用程序时,您发布的版本.apk
文件。这对于测试您的应用程序很有用,因为在开发应用程序时通常需要编译该应用程序。由于这是要编译为APK的版本,因此自然是您发布的版本。同样,建议使它与目标sdk版本匹配。
公式是
minSdkVersion <= targetSdkVersion <= compileSdkVersion
minSdkVersion是一个标记,用于定义可在其上安装应用程序的最低Android版本。Lint也使用它来防止调用不存在的API。同时也会影响构建时间。因此,在开发过程中,您可以使用构建样式将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进行编译。当您想使用新功能或.java
通过Android SDK 调试文件时,应注意compileSdkVersion。另一个示例是使用AndroidX,它强制使用compileSdkVersion
级别28。compileSdkVersion
您的APK中未包含该代码:它纯粹用于compile time
。更改compileSdkVersion不会更改运行时行为。例如,它可以生成新的编译器警告/错误。因此,强烈建议您始终使用最新的SDK进行编译。您将获得对现有代码进行新编译检查的所有好处,避免使用新近弃用的API,并准备使用新的API。还有一个事实是compileSdkVersion >= Support Library version
该分SDK版本是运行应用程序所需的Android操作系统的最低版本。
该目标SDK版本就是Android的版本,您的应用程序创建来运行。
该编译SDK版本就是Android的版本的编译工具用来编译和以发行,运行,或调试构建应用程序。
通常,编译sdk版本和目标sdk版本是相同的。
compileSdkVersion:compileSdkVersion是针对其编译应用程序的API的版本。这意味着您可以使用该版本API(显然包括所有先前版本)中包含的Android API功能。如果尝试使用API 16功能,但将compileSdkVersion设置为15,则会出现编译错误。如果将compileSdkVersion设置为16,您仍然可以在API 15设备上运行该应用程序。
minSdkVersion:最小sdk版本是运行应用程序所需的Android操作系统的最低版本。
targetSdkVersion:目标sdk版本是您的应用旨在运行的版本。