[英]what is the propose of targetSdkVersion in android?
我有 2 个关于 targetSdkVersion 的问题:
1-android中targetSdkVersion的建议是什么?
2-如果我从 gradle 设置中删除它会发生什么?
android:targetSdkVersion
此属性通知系统您已针对目标版本进行了测试,并且系统不应启用任何兼容性行为来保持您的应用程序与目标版本的前向兼容性。
随着 Android 随着每个新版本的发展,某些行为甚至外观可能会发生变化。 但是,如果平台的 API 级别高于您应用的 targetSdkVersion 声明的版本,系统可能会启用兼容性行为,以确保您的应用继续按照您期望的方式运行。 您可以通过指定 targetSdkVersion 以匹配运行它的平台的 API 级别来禁用此类兼容性行为。 例如,将此值设置为“11”或更高允许系统在 Android 3.0 或更高版本上运行时将新的默认主题(Holo)应用到您的应用程序,并且还可以在较大屏幕上运行时禁用屏幕兼容模式(因为支持 API 11 级隐式支持更大的屏幕)。
minSDK - targetSdk - compileSdk之间的关系
minSdkVersion(最低可能)<= targetSdkVersion == compileSdkVersion(最新 SDK)
如果您不提供targetSdkVersion
怎么办?
您的 minSdkVersion 和 compileSdkVersion 为 < API 23
(6.0 - MarshMallow - 具有运行时权限) 并且您尚未添加targetSdkVersion
。
默认情况下,您的应用程序将获得您在清单中提供的所有权限,因为您尚未使用 API 23 编译或提供 targetSdkVersion。
在这些情况下,默认为minSdkVersion
。 如果您没有提供minSdkVersion
,那么它默认为 API 1。
targetSdkVersion
中 targetSdkVersion 的建议是什么?
目的是告诉 Gradle 您测试过的 Android API 的版本是什么。 它还告诉运行时平台启用向后兼容功能以与目标版本兼容。 因此,如果您在较新的平台上运行,运行时将尝试表现得像您的(旧)目标版本。
如果我从 Gradle 设置中删除它会发生什么?
如果targetSdkVersion
,则默认为minSdkVersion
。 (如果你忽略它,它默认为 1!)
有关更多信息(包括设置targetSdkVersion
效果的一些示例),请阅读
例如,如果我们以 API 14 为目标应用程序,Android 会处理更高 API 中引入的运行时权限吗?
通常,是的1 。 如果在比您的目标级别更高的级别中引入了权限,则兼容性代码将为应用启用该权限。
例如,请参阅https://developer.android.com/reference/android/os/Build.VERSION_CODES.html#DONUT
1 - 检查文档。 我不知道这是否有例外。 如果有,它们会破坏兼容性……对于依赖于新权限所涵盖的功能的应用程序。
targetSdkVersion —指定应用程序设计运行的 API 级别。 在某些情况下,这允许应用程序使用在目标 API 级别中定义的清单元素或行为,而不是仅限于使用为最低 API 级别定义的那些元素或行为。
如果您不设置targetSdkVersion
,则默认值等于给定的minSdkVersion
。
要在每个 Android 版本中维护您的应用程序,您应该增加此属性的值以匹配最新的 API 级别,然后在相应平台版本上彻底测试您的应用程序。
见官方文档
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.