新设备的旧 targetSdkVersion

old targetSdkVersion for new devices

我有一个非常旧的 android 应用程序。我用的minSdkVersion 18,targetSdkVersion 21,现在是Androidv26,还有很多用户在用v24。 如果用户使用 Android v24 或更高版本,他们可以 运行 我的应用程序,因为我的 targetSdkVersion 是 21。如果是,那为什么我们必须将它设置为更高的 targetSdkVersion?不是设置低了可以支持更多的设备吗?有什么区别?

If the user is using Android v24 or above, can they run my app as my targetSdkVersion is 21

是的。

isn't that set it lower can support more devices?

没有。 targetSdkVersion 对您可以支持的设备没有直接影响。那就是minSdkVersion.

的作用

targetSdkVersion 控制 一些 功能添加到新版本的 Android。我倾向于在class中描述targetSdkVersion的方式是"it's the version of Android that you were thinking of when you wrote the code"。 Android 的较新版本,看到您的旧 targetSdkVersion,可能会选择像 Android 的旧版本一样运行,以使您的应用更有可能正常运行。例如,对于 targetSdkVersion,您不需要为 dangerous 权限实现运行时权限支持,就像您对 23 或更高的 targetSdkVersion 所做的那样。

then why we have to set it to a higher targetSdkVersion?

通常,您不需要。希望没有人拿枪指着你的头来强迫你改变这个值。

某些库作者会告诉您,您需要有一定的 targetSdkVersion 才能使他们的库可靠地工作。最大的例子是 Android 支持库工件,他们希望工件的主要版本与您的 compileSdkVersiontargetSdkVersion.

相匹配

此外,有时用户会认为您的应用很旧,因为 targetSdkVersion。例如,您的应用不支持运行时权限,因此在安装时,用户必须同意您的权限。用户可能会看到并认为您的应用程序没有得到维护,然后选择放弃安装并找到其他看起来维护得更好的应用程序。