“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 许可协议
“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 许可协议
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 许可协议
3 回答862 阅读✓ 已解决
2 回答2.1k 阅读
2 回答974 阅读✓ 已解决
1 回答934 阅读✓ 已解决
1 回答758 阅读✓ 已解决
2 回答872 阅读
2 回答809 阅读
最小 SDK 版本 是您的应用程序可以运行的 Android SDK 的最早版本。这通常是因为早期 API 存在问题、缺少功能或其他一些行为问题。
目标 sdk 版本 是您的应用程序 目标 运行的版本。理想情况下,这是因为某种最佳运行条件。如果您要“为第 19 版制作您的应用程序”,这就是指定的地方。它可能运行在较早或较晚的版本上,但这是您的目标。这主要是为了表明您的应用程序在市场等方面的使用情况。
编译 sdk 版本 是您的 IDE(或我想的其他编译方式)在您发布
.apk
文件时用于制作您的应用程序的 android 版本。这对于测试您的应用程序很有用,因为在您开发应用程序时通常需要编译它。由于这将是编译为 APK 的版本,因此它自然会成为您发布的版本。同样,建议使其与您的目标 sdk 版本相匹配。