Oculus GO アプリで、マイクのパーミッションが出ないようにする
UnityでOculus Go アプリを開発していたら、マイクを利用していないのに起動時にマイク利用許可のパーミッションが表示される。
そのままでOculusの審査に出したら、リジェクトされてしまった。
OverView: The app must request the minimum number of permissions required to function.
Result: Your app is asking for excessive user permissions or using user permissions inappropriately. -Access Microphone Please remove all unnecessary permissions.
microphoneを利用する処理は書いていないし、 Assets/Plugins/Android/AndroidManifest.xml に
<uses-feature android:name="android.hardware.microphone" android:required="false" />
を追記しても変化無し。
apk内のManifestがどうなっているか調べてみる。
Unityで作成したAndroidアプリにおいて、最終的なmanifestの内容は、ソースコードの中身などから生成されるらしいので、 apk内のManifestがどうなっているのか調べてみる。
Android SDKに含まれている aaptというコマンドで調べられるらしい。
aapt.exe は
C/Users/{Username}/AppData/Local/Android/Sdk/build-tools/28.0.1/
にあった。
実行してみると
$ ./aapt.exe d permissions hogehoge.apk AndroidManifest.xml package: jp.hoge.hoge uses-permission: name='android.permission.INTERNET' uses-permission: name='android.permission.WAKE_LOCK' uses-permission: name='android.permission.RECORD_AUDIO'
となり、RECORD_AUDIOが付与されてしまっている。
調べてみると、フォーラムにも同様の症状が。
結果的に、以下の対応をして解決。
- 以下6個のファイルを削除
- Assets/Oculus/Platform/Scripts/IMicrophone.cs
- Assets/Oculus/Platform/Scripts/LivestreamingMicrophoneStatus.cs
- Assets/Oculus/Platform/Scripts/MicrophoneInput.cs
- Assets/Oculus/Platform/Scripts/MicrophoneInputNative.cs
- Assets/Oculus/LipSync/Scripts/OVRLipSyncMicInput.cs
- Assets/Oculus/VoiceMod/Scripts/Helpers/OVRMicInput.cs
- CAPI.csでエラーが出るので、該当箇所(Livestreamingなんちゃら) をコメントアウト
- 再ビルド
Oculus Goのストア申請に役に立ったリンク集
Oculus Storeに申請頂くさまざまなコンテンツの中で、要修正として指摘されやすい事項
Checking Entitlement in Production について
Oculus Goアプリ配信ガイド