我应该为compileSdkVersion、minSdkVersion和targetSdkVersion设置什么?

10
我关心的是我应该将compileSdkVersionminSdkVersiontargetSdkVersion设置为什么。我的担忧首先是,如果我将compileSdkVersion设置为目前最新的23,那么旧设备是否能够运行它?
我怎么知道我的minSdkVersion应该设置多少,以确保低版本或低API的手机无法访问它(我不想将最低SDK设置得太高,因为这会阻止可能能够运行该应用程序的手机)?
我该如何设置我的targetSdkVersion
5个回答

11

我将compileSdkVersion设置为23,这是最新的版本,那么旧设备能否运行它?

可以。单独设置compileSdkVersion与设备是否能够运行你的应用程序无关。通常,你需要将其设置为Android SDK的最新版本。

如何确切知道我的minSdkVersion应该是多少,以确保低版本的手机无法访问它?

通常情况下,开发工具会在你尝试使用比minSdkVersion更新的东西时即时警告你。你可以定期运行完整的Lint检查进行重新确认。

我应该如何设置我的targetSdk

如果没有特别原因选择其他值,我通常在创建项目时选择最新或接近最新的值(例如22或23)。targetSdkVersion有助于向后兼容性,通常我的描述是“这是你在编写代码时考虑到的Android版本”。


谢谢您提供简明扼要的答案,但我还有一个问题:如何运行“完整的 Lint 检查”?我需要按哪个按钮? - Wowzer
@Wowzer:如果你正在使用Android Studio,Lint检查将作为分析>检查代码的一部分执行。 - CommonsWare

10
谷歌刚刚发布了一篇详细的文章关于 这些。简而言之:
  • compileSdkVersion 是告诉 Gradle 使用哪个 Android SDK 版本编译您的应用程序的方法。使用新的 Android SDK 是使用该级别中添加的任何新 API 的要求。需要强调的是,更改 compileSdkVersion 不会更改运行时行为。更改 compileSdkVersion 可能存在新的编译器警告/错误,但是它不包括在 APK 中:它仅在编译时使用。
  • 如果 compileSdkVersion 设置了可用的最新 API,则 minSdkVersion 是您的应用程序的下限。 minSdkVersion 是 Google Play 商店用于确定可以安装应用程序的用户设备之一的信号。它还在开发过程中扮演重要角色:默认情况下,lint针对您的项目运行,并在您使用超出 minSdkVersion 的任何 API 时发出警告,帮助您避免尝试调用不存在的 API 的运行时问题。在使用仅在较新平台版本上的 API 时,检查系统版本是一种常见技术。
  • 然而,最有趣的是 targetSdkVersion。 targetSdkVersion 是 Android 提供前向兼容性的主要方法,即在未更新 targetSdkVersion 的情况下不应用行为更改。这允许您在处理行为更改之前使用新 API(就像您更新了 compileSdkVersion 一样)。

6
结论是,根据文章的内容:minSdkVersion <= targetSdkVersion <= compileSdkVersion 但最好的做法是:minSdkVersion(最低版本)<= targetSdkVersion == compileSdkVersion(最新SDK版本) - n3wbie

4

你的CompileSDKVersionTargetSDKVersion应该相同:

android {
compileSdkVersion 24
buildToolsVersion "24.0.2"

defaultConfig {
    applicationId "com.judeochalifu.dribsndrabs"
    minSdkVersion 15
    targetSdkVersion 24
    versionCode 1
    versionName "1.0"
}

如果您对要使用的版本号感到困惑,请转到 Android SDK Manager,找到您正在使用的 API 级别(必须始终是最新的),然后您将找到要使用的版本(撰写时为 Android 7(API 24))。

enter image description here

关于minSDKVersion,最好的查看方法是打开Create New Project窗口(这里是Android Studio),谷歌会帮助你选择最适合当前情况的版本。

enter image description here


3

minSdkVersion:这是应用程序运行所需的最低API级别(例如,如果您将其设置为API级别16(Jelly Bean),则您的应用程序无法在API级别15(IceCreamSandwitch)上运行)。实际上,谷歌应用商店不会在运行低于您的minSdkVersion API级别的手机上显示您的应用程序。使用API级别15(IceCreamSandwitch)涵盖了90%以上的Android手机。

targetSdkVersion:您设计应用程序运行的API级别。建议使用最新版本(目前是26- O)。

compileSdkVersion:您想要编译应用程序的API级别(如果您使用API级别26的功能,则需要使用26,较低版本会导致错误)。Android支持向后兼容性(即在23上编译的应用程序也可以在具有API级别22或更低版本的手机上运行)。因此,对于您的第一个问题的答案是“是”。建议使用最新版本(目前是26- O)。


0

一般情况下,您应该坚持一项规则

minSdkVersion <= targetSdkVersion <= compileSdkVersion

你的决定应基于你的目的

[阅读更多]


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接