我有一个问题,Unity需要的权限太多。之前我是用Unity 2017构建的,我的应用需要三个android权限。我认为我只需要这几个。
android.permission.RECORD_AUDIO
android.permission.INTERNET
android.permission.ACCESS_NETWORK_STATE
现在,我升级到了2019.2.21f1 我发现在没有修改代码的情况下 增加了一些额外的权限。
android.permission.MODIFY_AUDIO_SETTINGS
android.permission.BROADCAST_STICKY
android.permission.BLUETOOTH
我检查了我所有的代码,删除了其中的一些部分,直到我找到了导致这些权限出现在我的合并清单中的一行(我正在检查清单-合并-发布-报告)--它是对麦克风列表的引用。Microphone.devices
. 当我对它进行引用时,权限就会出现。
我需要引用这个字符串数组,因为我需要调用 Microphone.Start
以获得音频输入,但我不关心蓝牙或广播贴纸。我不想使用任何这些新的权限。有谁知道为什么使用Microphone.devices会导致这些权限出现?
在构建设置中,我的最低API级别是16,而目标API级别是安装的最高级别。
我不想再降级我的Unity版本。我想找到一种方法,只需要RECORD_AUDIO权限,而不需要三个新的权限--唯一的选择是不使用 Microphone
这将使我的游戏减少乐趣。Boo hoo.我有一个问题,Unity需要太多的权限。
现在我不认为这个答案会有什么帮助,但由于你看起来很绝望,因为这是unity核心系统的问题,所以没有选择,你能不能尝试使用不同于unity内置的麦克风库?
例如,我发现了这个。
NatDevice是一个跨平台的媒体设备API,适用于iOS,Android,macOS和Windows。NatDevice通过一个简洁的.NET API为使用硬件相机和麦克风提供了强大的抽象。
https:/assetstore.unity.compackagestoolsintegrationnatdevice-media-device-api-162053。
你也可以用原生的android代码自己滚,就像这个家伙描述的那样。
你可以使用Unity "插件 "来实现。 https:/docs.unity3d.comManualPluginsForAndroid.html 他们的文档有更多的细节,但一般的想法是,你想使用Java编写使用本地库的应用程序组件,然后从C#激活它。这样可以避免两个运行时之间大量昂贵的交叉调用。使用这种方法,你可以在Java中扩展RtcLocalMedia和其余的组件代码,然后在C#中激活该组件。
另一种方法是完全覆盖manifest文件,以排除你不想要的权限(尽管你需要确保它仍然可以工作,因为unity仍然可以依赖它们)。
这里有一个很好的描述。
https:/stackoverflow.coma409313094122889。
希望这至少给你一些想法。
如果你想使用蓝牙耳机的内置麦克风,你需要包括这些权限。它们是需要的 音频管理器 使用蓝牙麦克风时。