最小 SDK 版本/目标 SDK 版本与编译 SDK 版本之间有什么区别?

新手上路,请多包涵

“min sdk version/target sdk version”和“compile sdk version”有什么区别?我知道 min 和 target sdk 是什么意思,但是 compile sdk version 是什么意思?

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

原文由 Tobias 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.9k
2 个回答

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

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

编译 sdk 版本 是您的 IDE(或我想的其他编译方式)在您发布 .apk 文件时用于制作您的应用程序的 android 版本。这对于测试您的应用程序很有用,因为在您开发应用程序时通常需要编译它。由于这将是编译为 APK 的版本,因此它自然会成为您发布的版本。同样,建议使其与您的目标 sdk 版本相匹配。

原文由 Matt 发布,翻译遵循 CC BY-SA 4.0 许可协议

minSdkVersion, targetSdkVersion, compileSdkVersion

公式是

minSdkVersion <= targetSdkVersion <= compileSdkVersion

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

targetSdkVersion - 如果 AndroidOS 版本是 >= targetSdkVersion 它表示 Android 系统打开特定(新) behavior 更改。 *请注意,即使认为 targetSdkVersion< ,其中一些新行为也会默认打开,您应该阅读官方文档。

例如:

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

  • 从Android 8.0(API level 26)开始,所有 notifications 必须分配给一个channel否则不会出现。在运行 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。另一个示例是使用强制使用 compileSdkVersion 级别 28 的 AndroidX。 compileSdkVersion 不包含在您的 APK 中:它纯粹用于 compile time 更改 compileSdkVersion 不会更改运行时行为。例如,它可以生成新的编译器警告/错误。因此强烈建议您始终使用最新的 SDK 进行编译。您将获得对现有代码进行新编译检查的所有好处,避免新弃用的 API,并准备好使用新的 API。还有一个事实是 compileSdkVersion >= Support Library version

您可以 在此处 阅读更多相关信息。此外,我建议您查看 迁移 到 Android 8.0 的示例。

[构建工具版本]

原文由 yoAlex5 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题