是否必须在构建 gradle 或清单中提供目标版本?

Is it mandatory to give targetversion in build gradle or manifest?

如果我在 gradle 中没有给出任何目标版本,那么它会采用最新版本,还是会选择哪个版本,我构建 apk 时没有给出任何目标版本,所以当我遇到问题时这个目标版本是强制性的?

它不是强制性的,但强烈推荐。

targetSdkVersion 与添加最新版本或您的编译无关,它只允许您使用目标 SDK 中可用的功能。

例如。 如果您的目标是 SDK 23,那么只要您在代码中使用关键权限,IDE 就会将您标记为错误。它会告诉你进行权限检查。 如果您的目标是 SDK 22,那么您可以自由使用关键权限而无需进行权限检查。

针对上述情况,您的应用已经过测试,在Lollipop 或以下版本中运行良好,但在Marshmallow 中可能会崩溃。

根据文档,它说 here

Specifies the API Level on which the application is designed to run. In some cases, this allows the application to use manifest elements or behaviors defined in the target API Level, rather than being restricted to using only those defined for the minimum API Level.