我正在做一些工作的内部,遗留的Android应用程序。在Gradle构建文件中,目标SDK版本设置为28,编译SDK版本设置为33。
我面临的问题是Android Studio lint显示了一个关于缺少权限的错误,尽管在我的目标API级别实际上并不需要指定的权限。我被警告的权限是BLUETOOTH_CONNECT
权限,但docs表明只有当应用程序的目标API级别为31或更高时才需要此权限。(在我的目标API级别,我请求BLUETOOTH
权限,正如文档所规定的那样。
应用程序编译和运行良好。蓝牙功能可用于应用程序,即使在运行Android >= API级别31的设备上运行也是如此。
作为我们组织内部的应用程序,该应用程序运行在一组有限且受控的旧设备上,如果没有必要,我不会添加BLUETOOTH_CONNECT
权限,特别是因为它是一个运行时权限,会增加更多麻烦。我的问题是,lint警告是否真的像我看起来的那样虚假,因此可以安全地忽略,或者在这种情况下,我是否忽略了一些东西,这些东西可能会回来咬我-不是在未来,如果我提高了目标SDK级别,但就目前的情况而言。
我意识到最好的做法是瞄准最新的SDK。但在我看来,lint错误仍然是错误的,我想确认我的理解是正确的。
1条答案
按热度按时间jgzswidk1#
当您将Android目标SDK版本设置为28并将SDK编译为33时,编译器预计您的应用应在该范围内的所有设备上正常工作,从API 28到33。
总而言之:
*compileSdkVersioncompileSdkVersion是应用编译的API版本。
*targetSdkVersion:targetSdkVersion应该表明您已经在指定的版本上测试了您的应用程序(可能高达并包括)。
因此,即使我不建议只针对旧设备。您可以将此设置:
如果您需要有关该权限的帮助,可以在线查找,或创建另一个关于该问题的StackOverflow问题。