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

Wow*_*zer 8 android build android-gradle-plugin

我关心我应该怎么设置compileSdkVersion,minSdkVersion以及targetSdkVersion要.

  1. 我首先关心的是,如果我将现在设置compileSdkVersion为最新的23,旧设备能够运行吗?

  2. 我如何确切地知道我应该怎样做minSdkVersion以确保运行较低api或版本的手机无法访问它(我不想将最小sdk设置得太高,因为这会阻止可能运行应用程序的手机)?

  3. 我该如何设置targetSdkVersion

Com*_*are 10

我将compileSdkVersion设置为23,这是最新的,旧设备能够运行吗?

是.compileSdkVersion它本身与哪些设备无法运行您的应用程序无关.通常,您将其设置为Android SDK的最新版本.

我怎么知道我的minSdkVersion应该是什么,以确保运行较低api或版本的手机无法访问它?

通常,当您尝试使用比您的更新的东西时,开发工具会立即发出警告minSdkVersion.您可以运行完整的Lint检查以定期重新确认.

我该如何设置targetSdk?

在没有任何特殊原因选择其他东西的情况下,我通常会在创建项目时选择最新值或次最新值(例如,现在为22或23).targetSdkVersion有助于向后兼容,通常我的描述是"它是您在编写代码时考虑的Android版本".


ssc*_*rth 9

谷歌刚发布了一篇关于这些的详细文章.简而言之:

compileSdkVersion是告诉Gradle用于编译应用程序的Android SDK版本的方法.使用新的Android SDK是使用该级别中添加的任何新API的要求.应该强调的是,更改compileSdkVersion不会改变运行时行为.虽然更改compileSdkVersion时可能存在新的编译器警告/错误,但您的compileSdkVersion不包含在您的APK中:它纯粹在编译时使用.

如果compileSdkVersion设置了最新的API,则minSdkVersion是应用程序的下限.minSdkVersion是Google Play商店用于确定应用程序可以安装在哪个用户设备上的信号之一.它在开发过程中也起着重要作用:默认情况下,lint针对您的项目运行,当您使用minSdkVersion上方的任何API时会发出警告,帮助您避免尝试调用不存在的API的运行时问题.在仅在较新的平台版本上使用API​​时,在运行时检查系统版本是一种常见技术.

然而,三者中最有趣的是targetSdkVersion.targetSdkVersion是Android通过不应用行为更改来提供向前兼容性的主要方式,除非更新targetSdkVersion.这允许您在完成行为更改之前使用新的API(因为您确实更新了compileSdkVersion吗?).

  • 得出以下结论:_minSdkVersion <= targetSdkVersion <= compileSdkVersion_但最好的方法是:** minSdkVersion(最低)<= targetSdkVersion == compileSdkVersion(最新的SDK)** (4认同)