我担心应该将compileSdkVersion
,minSdkVersion
和targetSdkVersion
设置为什么。
我首先关注的是,如果我将compileSdkVersion
设置为现在最新的23,那么旧设备能够运行吗?
我如何准确知道我的minSdkVersion
应该是什么,以确保运行较低api或版本的手机无法访问它(我不想将最小sdk设置得太高因为这会阻止可能运行应用程序的手机)?
我应该如何设置targetSdkVersion
?
答案 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)截至编写时。)
对于Android SDK Manager
,检查使用哪个的最佳位置是转到minSDKVersion
窗口(此处为Android Studio),Google会帮助您选择当时使用的最佳窗口:
答案 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)