在 Android 清单中,如何要求至少两个硬件中的一个?

In Android manifest, how to require at least one of two pieces of hardware?

例如,如果编写涉及两个设备之间无线数据传输的应用程序,则可以通过蓝牙或 NFC 来完成。那么,在 Manifest 中,您将如何表示该应用至少需要这两者之一?我对 XML 没有什么经验,所以我不确定如何处理这个问题。

一种解决方案是使用 build variants in Android Studio。此功能使您可以轻松共享代码,并为同一应用程序的不同变体提供自定义代码和配置。您将需要创建两个 "product flavors",一个用于 NFC,另一个用于蓝牙。通用代码和 AndroidManifest 将位于 Android Studio 项目的 main 文件夹中。自定义项将位于每个变体的单独文件夹中。这包括 Android 具有不同 <uses-permission> 标签的清单文件。您可能还会有不同的代码来实际实现您的 hardware-dependent 功能。

当您准备好发布到 Google Play 时,您需要构建两个不同的 APK 文件,一个用于 NFC 支持,一个用于蓝牙。您可以将这两个 APK 上传到同一个 Google Play 应用。 (参见Multiple APK Support。)从用户的角度来看,只有一个应用程序。