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

时间:2015-11-26 22:08:54

标签: android build android-gradle

我担心应该将compileSdkVersionminSdkVersiontargetSdkVersion设置为什么。

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

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

  3. 我应该如何设置targetSdkVersion

4 个答案:

答案 0 :(得分:10)

  

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

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

  

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

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

  

我应该如何设置targetSdk?

在没有任何特别理由选择其他内容的情况下,我通常在创建项目时选择最新值或次最新值(例如,现在为22或23)。 targetSdkVersion有助于向后兼容,通常我的描述是“它是您在编写代码时考虑的Android版本”。

答案 1 :(得分:7)

Google刚刚发布了detailed article这些内容。简而言之:

  

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吗?)。

答案 2 :(得分:4)

您的<div class="postfeed2" onclick="javascript:return viewdwable(' . $id . ');"> <a href="javascript:void(0)" onclick="javascript:return like(' . strip_tags($id) . ');">Text linked here</a> </div> CompileSDKVersion应该是相同的:

TargetSDKVersion

如果您对要使用的版本号感到困惑,请转到android { compileSdkVersion 24 buildToolsVersion "24.0.2" defaultConfig { applicationId "com.judeochalifu.dribsndrabs" minSdkVersion 15 targetSdkVersion 24 versionCode 1 versionName "1.0" } ,找到您正在使用的API级别(必须始终是最新版本),然后您将找到要使用的版本(Android 7( API 24)截至编写时。)

enter image description here

对于Android SDK Manager,检查使用哪个的最佳位置是转到minSDKVersion窗口(此处为Android Studio),Google会帮助您选择当时使用的最佳窗口:

enter image description here

答案 3 :(得分:2)

minSdkVersion:这是您的应用程序运行应用程序所需的最低API级别(即,如果您将其设置为API级别16(Jelly Bean),那么您的应用程序无法在API级别15上运行(IceCreamSandwitch))。实际上,Google Play不会在运行API级别低于minSdkVersion API级别的手机上显示您的应用。使用API​​级别15(IceCreamSandwitch)覆盖超过90%的Android手机。

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

compileSdkVersion:您要编译应用程序的API级别(如果您使用API​​级别为26的功能,那么您需要使用26,较低版本会给您错误)。 Android支持向后兼容性(即23上编译的应用也可以在API等级为22或更低的手机上运行)。所以回答你的第一个问题是肯定的。建议使用最新版本(目前为26-O)